C++计时具体操作方法详解

C++编程语言应用范围广泛,功能强大,我们在上篇文章中就已经对C++时间的基本概念进行了一个简单的介绍。现在,我们将进一步对C++计时的具体操作进行解读,让大家能从中获得更多的知识。#t#

成都创新互联服务项目包括东坡网站建设、东坡网站制作、东坡网页制作以及东坡网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,东坡网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到东坡省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

C++计时操作中所用到的函数是clock(),而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:

clock_t clock( void );

这个C++计时的函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。其中clock_t是用来保存时间的数据类型,在time.h文件中,我们可以找到对 它的定义:

 
 
 
  1. #ifndef _CLOCK_T_DEFINED 
  2. typedef long clock_t; 
  3. #define _CLOCK_T_DEFINED 
  4. #endif 

很明显,clock_t是一个长整形数。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:

#define CLOCKS_PER_SEC ((clock_t)1000)

可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。下面举个C++计时的例子,你可以使用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间:

 
 
 
  1. void elapsed_time() 
  2. printf("Elapsed time:%u secs.\n",clock()/CLOCKS_PER_SEC); 

当然,你也可以用clock函数来计算你的机器运行一个循环或者处理其它事件到底花了多少时间:

 
 
 
  1. #include “stdio.h” 
  2. #include “stdlib.h” 
  3. #include “time.h” 
  4. int main( void ) 
  5. long i = 10000000L; 
  6. clock_t start, finish; 
  7. double duration; 
  8. /* 测量一个事件持续的时间*/ 
  9. printf( "Time to do %ld empty loops is ", i ); 
  10. start = clock(); 
  11. while( i-- ) ; 
  12. finish = clock(); 
  13. duration = (double)(finish - start) / CLOCKS_PER_SEC; 
  14. printf( "%f seconds\n", duration ); 
  15. system("pause"); 
  16. }

在笔者的机器上,C++计时操作后的运行结果如下:

Time to do 10000000 empty loops is 0.03000 seconds

上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使C++计时的精度更高呢?通过尝试,你会发现这样是不行的。在标准C/C++中,最小的计时单位是一毫秒。

网站题目:C++计时具体操作方法详解
文章URL:http://www.shufengxianlan.com/qtweb/news11/304461.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联