C++实现统计代码运行时间计时器的简单实例
C++实现统计代码运行时间计时器的简单实例
一、前言
这里记下从网上找到的一些自己比较常用的C++计时代码
二、Linux下精确至毫秒
#include#include #include doubleget_wall_time() { structtimevaltime; if(gettimeofday(&time,NULL)){ return0; } return(double)time.tv_sec+(double)time.tv_usec*.000001; } intmain() { unsignedintt=0; doublestart_time=get_wall_time() while(t++<10e+6); doubleend_time=get_wall_time() std::cout<<"循环耗时为:"< 三、Windows下精确至毫秒
#include#include intmain() { DWORDstart,stop; unsignedintt=0; start=GetTickCount(); while(t++<10e+6); stop=GetTickCount(); printf("time:%lldms\n",stop-start); return0; } 试验中,发现貌似getTickCount函数会有10几毫秒的误差,囧。。。
四、Windows下精确至微秒
//MyTimer.h// #ifndef__MyTimer_H__ #define__MyTimer_H__ #includeclassMyTimer { private: int_freq; LARGE_INTEGER_begin; LARGE_INTEGER_end; public: longcostTime;//花费的时间(精确到微秒) public: MyTimer() { LARGE_INTEGERtmp; QueryPerformanceFrequency(&tmp);//QueryPerformanceFrequency()作用:返回硬件支持的高精度计数器的频率。 _freq=tmp.QuadPart; costTime=0; } voidStart()//开始计时 { QueryPerformanceCounter(&_begin);//获得初始值 } voidEnd()//结束计时 { QueryPerformanceCounter(&_end);//获得终止值 costTime=(long)((_end.QuadPart-_begin.QuadPart)*1000000/_freq); } voidReset()//计时清0 { costTime=0; } }; #endif //main.cpp #include"MyTimer.h" #include intmain() { MyTimertimer; unsignedintt=0; timer.Start(); while(t++<10e+5); timer.End(); std::cout<<"耗时为:"< 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!