为了账号安全,请及时绑定邮箱和手机立即绑定

C++如何记录程序的运行时间

标签:
C++

我们在运行一段C++程序时,有时需要知道运行这个程序花了多长时间.特别是当我们的程序结构很复杂,或者需要处理海量的数据时,高效快速的运行就显得尤为重要.判断一个程序是否高效,最直观的方法就是记录它的运行时间.记录时间一般有两种方法,一种是调用GetTickCount()函数,另一种是调用clock()计时函数.

GetTickCount()函数(不建议)

下面函数的介绍摘自百科:
它返回从操作系统启动到当前所经过的毫秒数,返回值以32位的双字类型DWORD存储,可以存储的最大值是(2^32-1) ms约为49.71天,因此若系统运行时间超过49.71天时,这个数就会归0.此外这个函数并非实时发送,而是由系统每18ms发送一次,因此其最小精度为18ms.

clock()函数(建议)

它返回的是从“开启这个程序进程”到“程序中调用clock()函数”之间的CPU时钟计时单元(clock tick)数.也就是程序一开始CPU就开始"滴答",直到程序运行到clock()函数,这时就会输出到此为止总共"滴答"了多少下,所以它返回的是一个int整型数,而不是时间.要想知道具体的时间,就必须知道你的CPU一秒钟"滴答"了多少下,而CLOCKS_PER_SEC正是这样一个常量.
首先要在程序中引入time.h这个头文件,然后在程序的结尾调用clock()函数:

#include <time.h>   //引入头文件int main(){clock_t stop;  //定义clock_t变量//////////////////////////程序具体内容stop = clock();   //调用clock函数cout<<"time = "<<stop/CLOCKS_PER_SEC<<"s"<<endl;  //输出时间(单位:s)}

若我们想要知道某一段程序的运行时间,就需要调用两次clock()函数,两次的时间差就是程序运行时间:

#include <time.h>   //引入头文件int main(){clock_t start,finish;   //定义clock_t变量//////////////////////////programstart = clock();     //开始时间//////////////////////////programfinish = clock();   //结束时间cout<<"time = "<<double(finish-start)/CLOCKS_PER_SEC<<"s"<<endl;  //输出时间(单位:s)}

Linux下获得CLOCKS_PER_SEC数值的方法

本人在Linux平台下运行上面的程序时,出现CLOCKS_PER_SEC未定义的问题,可能在Linux平台中time.h文件中没有定义这个常量,那如何获得这个常量的数值呢?我用了一个很笨但直接的方法.
在程序中输出finish-start的数值,用秒表记录程序的运行时间(当然运行时间要尽量长一点),比如我的程序运行了65s,而finish-start的值在6.5e7附近,那么就可以得出CLOCKS_PER_SEC=1e6,将这个数值替换上即可.



作者:为君起松声
链接:https://www.jianshu.com/p/4ef71a7dbdab
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消