时间:2021-05-02
前言
良好的计时器可帮助程序开发人员确定程序的性能瓶颈,或对不同算法进行性能比较。但要精确测量程序的运行时间并不容易,因为进程切换、中断、共享的多用户、网络流量、高速缓存访问及转移预测等因素都会对程序计时产生影响。
下面看看小编为大家整理几个计时方法
方法一:
如果是想统计某个程序的运行时间,那么可以使用
? 1 time ./a.out方法二:
如果是想对某个函数或者语句进行计时,那么有别的方法。比如说,gettimeofday函数。直接贴示例代码:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <sys/time.h> void f() { //... } int main() { struct timeval t1, t2; gettimeofday(&t1, NULL); f(); gettimeofday(&t2, NULL); //那么函数f运行所花的时间为 //deltaT = (t2.tv_sec-t1.tv_sec) * 1000000 + t2.tv_usec-t1.tv_usec 微秒 return 0; }gettimeofday只能精确到微秒,并且它受系统时钟的影响(它的原理就是通过读取系统时钟,因此当计时的这段时间里有其他程序修改了系统时钟,那么结果将不准确)。
如果想精确到纳秒呢?继续往下看:
方法三:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <time.h> void f() { //... } int main() { timespec t1, 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 纳秒 return 0; }这里说的都是wall clock,如果想获得cpu执行时间,以及了解clock_gettime参数的解释和可能的取值,可以man一下。
总结
以上就是在UNIX/LINUX下C++程序计时的方法的全部内容,希望本文的内容对大家学习使用C++程序能有所帮助。如有疑问欢迎大家留言讨论。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C++实现统计代码运行时间计时器的简单实例一、前言这里记下从网上找到的一些自己比较常用的C++计时代码二、Linux下精确至毫秒#include#include
python网络编程详解网络编程的专利权应该属于Unix,各个平台(如windows、Linux等)、各门语言(C、C++、Python、Java等)所实现的符
本文总结了C++输入输出的各种注意事项,对于C++初学者或C++程序员来说都有一定的借鉴参考价值。具体总结分析如下:一、string类:1.cin>>strin
安装vscode,安装c/c++插件C/C++IntelliSense,TabNine,BracketPairColorizer。在win10下打开linux子
前言之前已经跟大家介绍了在ubuntu系统下C++调用matlab程序的方法,需要的朋友们可以参考这篇文章,本文将给大家介绍关于windows下C++调用mat