总结UNIX/LINUX下C++程序计时的方法
前言
良好的计时器可帮助程序开发人员确定程序的性能瓶颈,或对不同算法进行性能比较。但要精确测量程序的运行时间并不容易,因为进程切换、中断、共享的多用户、网络流量、高速缓存访问及转移预测等因素都会对程序计时产生影响。
下面看看小编为大家整理几个计时方法
方法一:
如果是想统计某个程序的运行时间,那么可以使用
time./a.out
方法二:
如果是想对某个函数或者语句进行计时,那么有别的方法。比如说,gettimeofday函数。直接贴示例代码:
#include<sys/time.h>
voidf()
{
//...
}
intmain()
{
structtimevalt1,t2;
gettimeofday(&t1,NULL);
f();
gettimeofday(&t2,NULL);
//那么函数f运行所花的时间为
//deltaT=(t2.tv_sec-t1.tv_sec)*1000000+t2.tv_usec-t1.tv_usec微秒
return0;
}
gettimeofday只能精确到微秒,并且它受系统时钟的影响(它的原理就是通过读取系统时钟,因此当计时的这段时间里有其他程序修改了系统时钟,那么结果将不准确)。
如果想精确到纳秒呢?继续往下看:
方法三:
#include<time.h>
voidf()
{
//...
}
intmain()
{
timespect1,t2;
clock_gettime(CLOCK_MONOTONIC,&t1);
f();
clock_gettime(CLOCK_MONOTONIC,&t2);
//那么f所花时间为
//deltaT=(t2.tv_sec-t1.tv_sec)*10^9+t2.tv_nsec-t1.tv_nsec纳秒
return0;
}
这里说的都是wallclock,如果想获得cpu执行时间,以及了解clock_gettime参数的解释和可能的取值,可以man一下。
总结
以上就是在UNIX/LINUX下C++程序计时的方法的全部内容,希望本文的内容对大家学习使用C++程序能有所帮助。如有疑问欢迎大家留言讨论。
热门推荐
7 简短的二胎祝福语
10 简短霸气女儿生日 祝福语
11 祝福语高考小众诗句简短
12 元旦祝福语20秒简短
13 老师过年祝福语大全 简短
14 一生祝福语简短
15 产检祝福语简短霸气
16 朋友店开张祝福语简短
17 生日爱情祝福语大全简短
18 朋友女儿生日祝福语 简短