注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

liuyue18301的个人主页

追逐梦想 光辉岁月

 
 
 

日志

 
 

clcok()  

2009-12-07 11:46:00|  分类: c语言 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

clock()

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

  clock_t clock(void) ;

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

  #ifndef _CLOCK_T_DEFINED

  typedef long clock_t;

  #define _CLOCK_T_DEFINED

  #endif

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

  #define CLOCKS_PER_SEC ((clock_t)1000)

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

  void elapsed_time()

  {

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

  }

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

  #include <stdio.h>

  #include <stdlib.h>

  #include <time.h>

  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");

  }

  在笔者的机器上,运行结果如下:

  Time to do 10000000 empty loops is 0.03000 seconds

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

  评论这张
 
阅读(114)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018