我现在用C++语言写了一段程序,想计算这段程序运行的准确时间,这是要用于跟其它实验结果作对比的,所以要精确到毫秒,C++程序运行时间 确实很难掌握啊!

成都创新互联公司专注于成都网站建设、网站设计、网页设计、网站制作、网站开发。公司秉持“客户至上,用心服务”的宗旨,从客户的利益和观点出发,让客户在网络营销中找到自己的驻足之地。尊重和关怀每一位客户,用严谨的态度对待客户,用专业的服务创造价值,成为客户值得信赖的朋友,为客户解除后顾之忧。
C++程序运行时间中的计时函数是clock(),而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:
- #ifndef _CLOCK_T_DEFINED
 - typedef long clock_t;
 - #define _CLOCK_T_DEFINED
 - #endif
 
这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。其中clock_t是用来保存时间的数据类型,在time.h文件中,我们可以找到对 它的定义:
- #ifndef _CLOCK_T_DEFINED
 - typedef long clock_t;
 - #define _CLOCK_T_DEFINED
 - #endif
 
很明显,clock_t是一个长整形数。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:
- int main( void )
 - {
 - long i = 10000000L;
 - clock_t start, finish;
 - double duration;
 - /* 测量一个事件持续的时间*/
 - printf( "Time to do %ld empty loops is ", i );
 - start = clock();
 - while( i-- ) ;
 - finish = clock();
 - duration = (double)(finish - start) / CLOCKS_PER_SEC;
 - printf( "%f seconds"n", duration );
 - system("pause");
 - }
 
可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。下面举个例子,你可以使用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的C++程序运行时间 :
- void elapsed_time()
 - {
 - printf("Elapsed time:%u secs."n",clock()/CLOCKS_PER_SEC);
 - }
 
当然,你也可以用clock函数来计算你的机器运行一个循环或者处理其它事件到底花了多少时间:
- int main( void )
 - {
 - long i = 10000000L;
 - clock_t start, finish;
 - double duration;
 - /* 测量一个事件持续的时间*/
 - printf( "Time to do %ld empty loops is ", i );
 - start = clock();
 - while( i-- ) ;
 - finish = clock();
 - duration = (double)(finish - start) / CLOCKS_PER_SEC;
 - printf( "%f seconds"n", duration );
 - system("pause");
 - }
 
上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一 些,从而使计时精度更高呢?通过尝试,你会发现这样是不行的。在标准C++程序运行时间 中,最小的计时单位是一毫秒。
                当前文章:计算C++程序运行时间总结
                
                浏览地址:http://www.csdahua.cn/qtweb/news3/249453.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网