总结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++程序能有所帮助。如有疑问欢迎大家留言讨论。
热门推荐
3 祝福语简短的微信
10 幼儿祝福语大全简短贺卡
11 感谢教官文案祝福语简短
12 鼠年同事祝福语简短创意
13 元旦祝福语 简短独特群发
14 妈咪跟我生日祝福语简短
15 给儿子新婚祝福语简短
16 伴娘祝福语长文案简短
17 恭喜高考完祝福语简短
18 生日祝福语送老公简短