⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.h.svn-base

📁 moses开源的机器翻译系统
💻 SVN-BASE
字号:
#ifndef TIMER_H#define TIMER_H#include <ctime>#include <iostream>#include <iomanip>#include "Util.h"class Timer{ friend std::ostream& operator<<(std::ostream& os, Timer& t); private:  bool running;  time_t start_time;	//TODO in seconds?  double elapsed_time(); public:  /***   * 'running' is initially false.  A timer needs to be explicitly started   * using 'start' or 'restart'   */  Timer() : running(false), start_time(0) { }  void start(const char* msg = 0);//  void restart(const char* msg = 0);//  void stop(const char* msg = 0);  void check(const char* msg = 0);};/*** * Return the total time that the timer has been in the "running" * state since it was first "started" or last "restarted".  For * "short" time periods (less than an hour), the actual cpu time * used is reported instead of the elapsed time. */inline double Timer::elapsed_time(){	time_t now;	time(&now);  return difftime(now, start_time);}/*** * Start a timer.  If it is already running, let it continue running. * Print an optional message. */inline void Timer::start(const char* msg){  // Print an optional message, something like "Starting timer t";	if (msg) TRACE_ERR( msg << std::endl);  // Return immediately if the timer is already running  if (running) return;  // Change timer status to running  running = true;  // Set the start time;  time(&start_time);}/*** * Turn the timer off and start it again from 0.  Print an optional message. *//*inline void Timer::restart(const char* msg){  // Print an optional message, something like "Restarting timer t";  if (msg) TRACE_ERR( msg << std::endl;  // Set the timer status to running  running = true;  // Set the accumulated time to 0 and the start time to now  acc_time = 0;  start_clock = clock();  start_time = time(0);}*//*** * Stop the timer and print an optional message. *//*inline void Timer::stop(const char* msg){  // Print an optional message, something like "Stopping timer t";  check(msg);  // Recalculate and store the total accumulated time up until now  if (running) acc_time += elapsed_time();  running = false;}*//*** * Print out an optional message followed by the current timer timing. */inline void Timer::check(const char* msg){  // Print an optional message, something like "Checking timer t";  if (msg) TRACE_ERR( msg << " : ");//  TRACE_ERR( "[" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << (running ? elapsed_time() : 0) << "] seconds\n");  TRACE_ERR( "[" << (running ? elapsed_time() : 0) << "] seconds\n");}/*** * Allow timers to be printed to ostreams using the syntax 'os << t' * for an ostream 'os' and a timer 't'.  For example, "cout << t" will * print out the total amount of time 't' has been "running". */inline std::ostream& operator<<(std::ostream& os, Timer& t){  //os << std::setprecision(2) << std::setiosflags(std::ios::fixed) << (t.running ? t.elapsed_time() : 0);  os << (t.running ? t.elapsed_time() : 0);  return os;}#endif // TIMER_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -