linux下统计代码运行时间消耗-gettimeofday
程序员文章站
2024-01-23 17:31:22
...
最近在工控机的centos上做业务功能开发,有些业务流程对时间要求比较苛刻,但系统又不是实时系统,代码运行时间没法保证,所以每次添加代码和进程的时候都只能手工测试一下时间消耗,也是醉醉的。
linux上有获取当前系统时间的接口gettimeofday,获取回来的时间可以精确到微妙(实际精度到不了1微妙,测试大概也就是几十微妙)。简单测试例子如下,用usleep代表想测试的实际代码。
#include <stdio.h>
#include <iostream>
#include <time.h>
#include <unistd.h>
#include <sys/time.h>
//统计时间消耗
int main(int argc, char** argv){
struct timeval tv;
long startTimeUsec = 0;
long endTimeUsec = 0;
//获取开始时间
gettimeofday(&tv,NULL);
startTimeUsec = tv.tv_sec*1000000 + tv.tv_usec;
printf("开始: %ld\n",startTimeUsec);
//用usleep模拟实际的程序代码
usleep(8000);
//获取结束时间
gettimeofday(&tv,NULL);
endTimeUsec = tv.tv_sec*1000000 + tv.tv_usec;
printf("结束: %ld\n",endTimeUsec);
//计算时间消耗
printf("时间消耗: %ld\n",(endTimeUsec - startTimeUsec));
return 0;
}
编译运行如下:
[email protected]:~/lxd$ g++ -o timecount timecount.cpp
[email protected]:~/lxd$
[email protected]:~/lxd$ ./timecount
开始: 1603787697631180
结束: 1603787697639334
时间消耗: 8154
[email protected]:~/lxd$