利用C++11设计一个类似于boost.timer的计时器,计算代码段的执行时间,可以选择纳秒、微秒、毫秒、秒、小时级别进行输出,方便快捷。
#include <chrono>
using namespace std;
using namespace std::chrono;
class CusTimer
{
public:
CusTimer() :m_begin(high_resolution_clock::now()) {}
void reset()
{
m_begin = high_resolution_clock::now();
}
template<typename Duration=milliseconds>
//输出毫秒
int64_t elapsed() const { return duration_cast<Duration>(high_resolution_clock::now() - m_begin).count(); }
int64_t elapsed_micro()const { return elapsed<microseconds>(); }
int64_t elapsed_nano()const { return elapsed<nanoseconds>(); }
int64_t elapsed_seconds()const { return elapsed<seconds>(); }
int64_t elapsed_minutes()const { return elapsed<minutes>(); }
int64_t elapsed_hours()const { return elapsed<hours>(); }
protected:
private:
time_point<high_resolution_clock> m_begin;
};
使用方法:
int main()
{
CusTimer c;
//do_something();
int64_t duration1=c.elapsed();
c.reset();
//do_something();
int64_t duration2 = c.elapsed();
}