美文网首页程序员
C++如何记录程序的运行时间

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

作者: 原新街的猫 | 来源:发表于2018-06-12 19:14 被阅读7次

    我们在运行一段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变量
    //////////////////////////program
    start = clock();     //开始时间
    //////////////////////////program
    finish = 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,将这个数值替换上即可.

    相关文章

      网友评论

        本文标题:C++如何记录程序的运行时间

        本文链接:https://www.haomeiwen.com/subject/rhyreftx.html