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++中,最小的计时单位是一毫秒。

最新文章

  1. &lt;td&gt;&lt;/td&gt;标签的border 样式在浏览器中显示不出来
  2. codeforces 742D Arpa&#39;s weak amphitheater and Mehrdad&#39;s valuable Hoses ——(01背包变形)
  3. log4j相对路径找不到,处理方法
  4. Runtime类
  5. 30秒搭建Github Page
  6. 车销 商场 批发零售无线POS开单 智能POS开单打印 开单APP应用-云POS扫描打印一体方案
  7. AD10长方形通孔焊盘的画法
  8. cocos run -p android报错 BUILD FAILED ..\ant\build.xml:892
  9. 将错误日志记录在txt文本里
  10. IIS 7.5站点配置
  11. linux lvm的操作手册_pvcreate_vgcreate_lvcreate_相关
  12. iOS中的界面多选功能--(UICollectionView)
  13. Android 之 Fragment
  14. python新手之一环境安装
  15. UML类图二
  16. springMVC系列之(四) spring+springMVC+hibernate 三大框架整合
  17. 免费开源ERP-成功案例分析(1)
  18. [Bilingual] Different proofs of Jordan cardinal form (Jordan标准型的几种证明)
  19. LINQ 详解
  20. p112 the podocyte

热门文章

  1. 源代码解说ActionBar的各种使用方法
  2. Java使用JDBC连接随意类型数据库(mysql oracle。。)
  3. JDK 生成数字证书
  4. HDUOJ----2952Counting Sheep
  5. 安装R语言的包的方法
  6. 在python3.x下使用如下代码: import cPickle as pk 报错
  7. react 事件绑定的2种常用方式
  8. django 数据库获取值
  9. JEECG中datagrid方法自定义查询条件
  10. Flume入门