偶然要测试程序每秒处理数据条数,即处理数据效率。这里用了最笨的方法,程序执行前后,打点,取时间。计算两次打点的时间差。用总数据条数 / 时间差,得到效率、
所以需要求时间差。这里自己总结记录下来,希望能对需要的人有帮助。
windows:
#include <Windows.h> 其他头文件自己加。
int main()
{
double Diff_time=0;//时间差
LARGE_INTEGER Freg;
LARGE_INTEGER Count1,Count2;
QueryPerformanceFrequency(&Freg);
/*************获取时间起点*************/
QueryPerformanceCounter(&Count1);
int i=0;
for(i=0;i<100000;++i)
{
i%2;
}
/*************获取时间终点*************/
QueryPerformanceCounter(&Count2);
Diff_time=(double)(Count2.QuadPart-Count1.QuadPart)/(double)Freg.QuadPart*1000.0;//计算时间差,d的单位为ms.
cout<<"时间间隔 "<<Diff_time<<" ms"<<endl;
cout<<"每秒处理 "<<(i+1)/(Diff_time/1000)<<",每毫秒处理 "<<(i+1)/Diff_time<<endl;
return 0;
}
Linux:
#include<sys/time.h> 其他头文件自己加
int main()
{
timeval tBegin, tEnd, Diff_time;
/*************获取时间起点*************/
gettimeofday(&tBegin, 0);
int i=0;
for(i=0;i<100000;++i)
{
i%2;
}
/*************获取时间终点*************/
gettimeofday(&tEnd, 0);
long start = ((long)tBegin.tv_sec)*1000+(long)tBegin.tv_usec/1000;
long end = ((long)tEnd.tv_sec)*1000+(long)tEnd.tv_usec/1000;
long cost_time = end - start;
printf("ms耗时:%d\n",cost_time);
return 0;
}