亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? perf_log.h

?? 一個用來實現(xiàn)偏微分方程中網(wǎng)格的計算庫
?? H
字號:
// $Id: perf_log.h 2789 2008-04-13 02:24:40Z roystgnr $// The libMesh Finite Element Library.// Copyright (C) 2002-2007  Benjamin S. Kirk, John W. Peterson  // This library is free software; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public// License as published by the Free Software Foundation; either// version 2.1 of the License, or (at your option) any later version.  // This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU// Lesser General Public License for more details.  // You should have received a copy of the GNU Lesser General Public// License along with this library; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA#ifndef __perflog_h__#define __perflog_h__// Local includes#include "libmesh_common.h"#include "o_string_stream.h"// C++ includes#include <string>#include <stack>#include <map>#include <sys/time.h>#ifdef HAVE_LOCALE#include <locale>#endif// Forward Declarations// class OStringStream;/** * The \p PerfData class simply contains the performance * data that is recorded for individual events. */// ------------------------------------------------------------// PerfData class definitionclass PerfData{ public:  /**   * Constructor.  Initializes data to be empty.   */  PerfData () :    tot_time(0.),    count(0),    open(false),    called_recursively(0)    {}    /**   * Total time spent in this event.   */  double tot_time;  /**   * Structure defining when the event   * was last started.   */  struct timeval tstart;  /**   * The number of times this event has   * been executed   */  unsigned int count;  /**   * Flag indicating if we are currently   * monitoring this event.  Should only   * be true while the event is executing.   */  bool open;  void   start ();  void   restart ();  double pause ();  double stopit ();      int called_recursively;    };/** * The \p PerfLog class allows monitoring of specific events. * An event is defined by a unique string that functions as * a label.  Each time the event is executed data are recorded. * This class is particulary useful for finding performance * bottlenecks.  * */// ------------------------------------------------------------// PerfLog class definitionclass PerfLog{ public:  /**   * Constructor.  \p label_name is the name of the object, which   * will bw print in the log to distinguish it from other objects.   * \p log_events is a flag to optionally   * disable logging.  You can use this flag to turn off   * logging without touching any other code.   */  PerfLog(const std::string& label_name="",	  const bool log_events=true);  /**   * Destructor. Calls \p clear() and \p print_log().   */  ~PerfLog();    /**   * Clears all the internal data and returns the   * data structures to a pristine state.  This function   * checks to see if it is currently monitoring any   * events, and if so errors.  Be sure you are not   * logging any events when you call this function.   */  void clear();  /**   * Disables performance logging for an active object.   */  void disable_logging() { log_events = false; }  /**   * Enables performance logging for an active object.   */  void enable_logging() { log_events = true; }  /**   * Push the event \p label onto the stack, pausing any active event.   */  void push (const std::string &label,	     const std::string &header="");    /**   * Pop the event \p label off the stack, resuming any lower event.   */  void pop (const std::string &label,	    const std::string &header="");    /**   * Start monitoring the event named \p label.   */  void start_event(const std::string &label,		   const std::string &header="");  /**   * Stop monitoring the event named \p label.   */  void stop_event(const std::string &label,		  const std::string &header="");  /**   * Suspend monitoring of the event.    */  void pause_event(const std::string &label,		   const std::string &header="");  /**   * Restart monitoring the event.   */  void restart_event(const std::string &label,		     const std::string &header="");    /**   * @returns a string containing:   * (1) Basic machine information (if first call)   * (2) The performance log   */  std::string get_log() const;    /**   * @returns a string containing ONLY the information header.   */  std::string get_info_header() const;  /**   * @returns a string containing ONLY the log information   */  std::string get_perf_info() const;    /**   * Print the log.   */  void print_log() const;  /**   * @returns the total time spent on this event.   */  double get_total_time() const    {return total_time;}     private:    /**   * The label for this object.   */  const std::string label_name;  /**   * Flag to optionally disable all logging.   */  bool log_events;  /**   * The total running time for recorded events.   */    double total_time;    /**   * The time we were constructed or last cleared.   */  struct timeval tstart;    /**   * The actual log.   */  std::map<std::pair<std::string,		     std::string>,	   PerfData> log;  /**   * A stack to hold the current performance log trace.   */  std::stack<PerfData*> log_stack;    /**   * Flag indicating if print_log() has been called.   * This is used to print a header with machine-specific   * data the first time that print_log() is called.   */  static bool called;    /**   * Prints a line of 'n' repeated characters 'c'   * to the output string stream "out".   */  void _character_line(const unsigned int n,		       const char c,		       OStringStream& out) const;};// ------------------------------------------------------------// PerfData class member funcionsinlinevoid PerfData::start (){  this->count++;  this->called_recursively++;  gettimeofday (&(this->tstart), NULL);}inlinevoid PerfData::restart (){  gettimeofday (&(this->tstart), NULL);}inlinedouble PerfData::pause (){  // save the start times, reuse the structure we have rather than create  // a new one.  const double    tstart_tv_sec  = this->tstart.tv_sec,    tstart_tv_usec = this->tstart.tv_usec;    gettimeofday (&(this->tstart), NULL);    const double elapsed_time = (static_cast<double>(this->tstart.tv_sec  - tstart_tv_sec) +			       static_cast<double>(this->tstart.tv_usec - tstart_tv_usec)*1.e-6);          this->tot_time += elapsed_time;  return elapsed_time;}inlinedouble PerfData::stopit (){  // stopit is just like pause except decriments the   // recursive call counter    this->called_recursively--;  return this->pause();}// ------------------------------------------------------------// PerfLog class inline member funcionsinlinevoid PerfLog::push (const std::string &label,		    const std::string &header){  if (this->log_events)    {      // Get a reference to the event data to avoid      // repeated map lookups      PerfData *perf_data = &(log[std::make_pair(header,label)]);      if (!log_stack.empty())	total_time += 	  log_stack.top()->pause();            perf_data->start();      log_stack.push(perf_data);    }}inlinevoid PerfLog::pop (const std::string &label,		   const std::string &header){  if (this->log_events)    {      libmesh_assert (!log_stack.empty());#ifndef NDEBUG      PerfData *perf_data = &(log[std::make_pair(header,label)]);      libmesh_assert (perf_data == log_stack.top());#endif      total_time += log_stack.top()->stopit();      log_stack.pop();      if (!log_stack.empty())	log_stack.top()->restart();    }}// Typedefs we might need#ifdef HAVE_LOCALEtypedef std::ostreambuf_iterator<char, std::char_traits<char> > TimeIter;typedef std::time_put<char, TimeIter> TimePut;#endif#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
九色综合狠狠综合久久| 日韩欧美一卡二卡| 日韩美一区二区三区| 国产精品午夜在线| 日日摸夜夜添夜夜添精品视频| 国产成人午夜片在线观看高清观看| 91久久国产最好的精华液| 337p日本欧洲亚洲大胆精品| 亚洲国产乱码最新视频 | 欧美午夜视频网站| 久久男人中文字幕资源站| 日韩 欧美一区二区三区| 91官网在线观看| 国产精品高潮久久久久无| 国产一区 二区 三区一级| 欧美一级视频精品观看| 午夜精品福利在线| 欧美日韩在线观看一区二区| 亚洲欧美日韩一区二区三区在线观看| 成人一区二区三区在线观看| 久久久影视传媒| 国产精品一线二线三线精华| 欧美tickling网站挠脚心| 日韩va欧美va亚洲va久久| 欧美日韩精品一区二区三区蜜桃| 亚洲女爱视频在线| 色综合天天综合狠狠| 亚洲区小说区图片区qvod| 国产成人日日夜夜| 国产日产亚洲精品系列| 国产美女一区二区三区| 精品捆绑美女sm三区| 精品一区二区三区免费毛片爱| 日韩欧美中文字幕一区| 美腿丝袜一区二区三区| 欧美大片在线观看一区| 蜜乳av一区二区三区| 欧美电影免费观看高清完整版在线| 日韩精品欧美精品| 日韩精品在线看片z| 精品影院一区二区久久久| 久久综合久久鬼色| 国内精品写真在线观看| 国产日韩av一区二区| 91麻豆蜜桃一区二区三区| 亚洲精品乱码久久久久久久久| 欧美色精品在线视频| 日韩和欧美的一区| xfplay精品久久| 成人自拍视频在线观看| 亚洲精品免费视频| 制服.丝袜.亚洲.另类.中文| 精品一区二区三区免费毛片爱| 欧美激情资源网| 91国产精品成人| 久久精品国产一区二区三| 国产欧美一区二区精品忘忧草| kk眼镜猥琐国模调教系列一区二区| 一区二区三区四区在线播放 | 国产女人水真多18毛片18精品视频| 丁香六月综合激情| 婷婷综合五月天| 26uuu亚洲综合色| 色呦呦国产精品| 另类调教123区 | 国产欧美日韩在线观看| 99久久99久久免费精品蜜臀| 午夜电影网亚洲视频| 久久综合成人精品亚洲另类欧美 | 亚洲九九爱视频| 欧美一卡二卡三卡| 岛国av在线一区| 日韩电影在线一区二区三区| 国产精品丝袜久久久久久app| 欧美性videosxxxxx| 狠狠色丁香久久婷婷综合丁香| 亚洲欧美激情一区二区| 日韩精品专区在线| 91毛片在线观看| 精品一区二区精品| 亚洲国产欧美日韩另类综合 | 日韩你懂的在线观看| av一区二区三区四区| 美女免费视频一区| 亚洲永久免费视频| 日本一区免费视频| 精品va天堂亚洲国产| 欧美日韩色一区| 91麻豆精品视频| 成人午夜视频免费看| 免费人成网站在线观看欧美高清| 亚洲品质自拍视频网站| 久久精品亚洲精品国产欧美| 欧美一区二区三区在线观看 | 久久综合色天天久久综合图片| 欧美系列在线观看| 91日韩在线专区| 风间由美中文字幕在线看视频国产欧美| 日韩综合一区二区| 亚洲韩国精品一区| 亚洲综合久久久久| 一二三四社区欧美黄| 亚洲乱码中文字幕综合| 中文字幕av一区二区三区高| 久久综合999| 精品国产免费一区二区三区四区| 9191精品国产综合久久久久久| 91久久精品网| 欧美日韩免费一区二区三区| 在线一区二区观看| 欧美亚洲综合久久| 欧美综合视频在线观看| 欧美亚洲一区二区在线| 91丨九色porny丨蝌蚪| www.欧美亚洲| 色婷婷国产精品久久包臀| 91浏览器打开| 在线观看一区二区视频| 欧美午夜精品免费| 欧美体内she精视频| 欧美色欧美亚洲另类二区| 欧美久久婷婷综合色| 91精品国产综合久久福利 | 欧美性极品少妇| 制服丝袜中文字幕一区| 欧美一区二区福利在线| 久久夜色精品国产欧美乱极品| 国产日产欧美精品一区二区三区| 亚洲国产激情av| 亚洲欧美福利一区二区| 亚洲国产综合色| 日韩电影在线看| 国产专区欧美精品| 成人av网站在线观看免费| 色偷偷一区二区三区| 欧美日韩久久不卡| 精品国产乱码久久久久久蜜臀| 国产视频在线观看一区二区三区| 亚洲天堂久久久久久久| 亚洲成a天堂v人片| 国产一区二区调教| 色综合中文综合网| 蜜桃久久av一区| 国产精品亚洲专一区二区三区| 99在线精品观看| 欧美精品亚洲一区二区在线播放| 日韩欧美国产一区二区在线播放| 欧美精品一区二区久久婷婷| 中文字幕中文字幕在线一区 | 亚洲成人av一区二区| 美腿丝袜在线亚洲一区| 91尤物视频在线观看| 91精品欧美综合在线观看最新| 久久久不卡网国产精品二区| 亚洲狠狠爱一区二区三区| 国产乱码精品一区二区三区av| 99re亚洲国产精品| 精品国产髙清在线看国产毛片| 中文字幕一区二区日韩精品绯色| 麻豆一区二区在线| 日本电影欧美片| 久久久久久久久久久久久女国产乱 | 亚洲精品国产视频| 国产露脸91国语对白| 欧美日免费三级在线| 国产精品―色哟哟| 精品一区二区三区免费播放| 在线一区二区视频| 国产精品免费丝袜| 狠狠色综合色综合网络| 欧美影院精品一区| 国产精品久久二区二区| 理论电影国产精品| 91超碰这里只有精品国产| 亚洲裸体在线观看| 成人污污视频在线观看| 精品国产伦理网| 青青草91视频| 欧美日韩在线播放一区| 综合在线观看色| 不卡欧美aaaaa| 国产日韩亚洲欧美综合| 久久精品国产一区二区三区免费看| 欧美视频完全免费看| 亚洲欧美另类在线| 成人午夜av影视| 国产精品欧美久久久久无广告| 极品瑜伽女神91| 日韩一区二区不卡| 日韩在线卡一卡二| 欧美精品在线一区二区三区| 亚洲综合在线观看视频| 91日韩在线专区| 亚洲最大成人网4388xx| 欧美中文字幕久久| 亚洲图片欧美综合| 91精品在线一区二区| 免费欧美日韩国产三级电影| 91麻豆精品国产91久久久久| 丝袜亚洲另类欧美综合|