timer.hh
来自「用于计算矩阵的特征值,及矩阵的其他运算.可以用与稀疏矩阵」· HH 代码 · 共 138 行
HH
138 行
// Copyright (C) 2002 David R. Martin <dmartin@eecs.berkeley.edu>//// This program is free software; you can redistribute it and/or// modify it under the terms of the GNU General Public License as// published by the Free Software Foundation; either version 2 of the// License, or (at your option) any later version.// // This program 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// General Public License for more details.// // You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA// 02111-1307, USA, or see http://www.gnu.org/copyleft/gpl.html.#ifndef TIMER_HH#define TIMER_HH#include <sys/times.h>#include <sys/time.h>#include <time.h>#include <unistd.h>#include <assert.h>namespace Util { class Timer { public: inline Timer (); inline ~Timer (); inline void start (); inline void stop (); inline void reset (); // All times are in seconds. inline double cpu (); inline double user (); inline double system (); inline double elapsed (); // Convert time in seconds into a nice human-friendly format: h:mm:ss.ss // Precision is the number of digits after the decimal. // Return a pointer to a static buffer. static const char* formatTime (double sec, int precision = 2); private: void _compute (); enum State { stopped, running }; State _state; struct timeval _elapsed_start; struct timeval _elapsed_stop; double _elapsed; struct tms _cpu_start; struct tms _cpu_stop; double _user; double _system; }; Timer::Timer () { reset (); } Timer::~Timer () { } void Timer::reset () { _state = stopped; _elapsed = _user = _system = 0; } void Timer::start () { assert (_state == stopped); _state = running; gettimeofday (&_elapsed_start, NULL); times (&_cpu_start); } void Timer::stop () { assert (_state == running); gettimeofday (&_elapsed_stop, NULL); times (&_cpu_stop); _compute (); _state = stopped; } double Timer::cpu () { assert (_state == stopped); return _user + _system; } double Timer::user () { assert (_state == stopped); return _user; } double Timer::system () { assert (_state == stopped); return _system; } double Timer::elapsed () { assert (_state == stopped); return _elapsed; }} // namespace Util#endif // __Timer_hh__
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?