博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CLOCKS_PER_SEC
阅读量:5046 次
发布时间:2019-06-12

本文共 1515 字,大约阅读时间需要 5 分钟。

VC++6.0中time.h下宏定义的常量。其值为1000。VC++6.0中该符号常量定义如下:

 

  #define CLOCKS_PER_SEC 1000

 

  此外,VC++6.0中把TC2.0中time.h下宏定义的常量CLK_TCK也宏定义成CLOCKS_PER_SEC,这样TC2.0下值为18.2的CLK_TCK在VC6.0下值变为1000。该宏定义如下:

 

  #define CLK_TCK CLOCKS_PER_SEC

 

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

 

  return 0;

 

  }

 

  这是一个求时间差的程序,那么为什么要除以CLOCKS_PER_SEC呢? 这是因为clock()是以毫秒为单位,要正确输出时间差需要把它换成秒,因此需要除以CLOCKS_PER_SEC。 clock()函数计算出来的是硬件滴答的数目,不是毫秒。在TC2.0中硬件每18.2个滴答是一秒,在VC++6.0中硬件每1000个滴答是一秒。

 

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

 

  下面是一个更为简单的例子:

 

  #include <stdio.h>

 

  #include <time.h>

 

  int main()

 

  {

 

  int n = 10000000;

 

  while(n--);

 

  printf("%f\n",clock()/(double)CLOCKS_PER_SEC);

 

  return 0;

 

  }

 

  在VC++6.0中可以用替换CLOCKS_PER_SEC。

出自

转载于:https://www.cnblogs.com/shangyu/archive/2012/02/20/2360402.html

你可能感兴趣的文章
输入月份和日期,得出是今年第几天
查看>>
利用mysqldump备份mysql
查看>>
Qt中子窗口全屏显示与退出全屏
查看>>
使用brew安装软件
查看>>
[BZOJ1083] [SCOI2005] 繁忙的都市 (kruskal)
查看>>
吴裕雄 python 机器学习——数据预处理嵌入式特征选择
查看>>
Centos6.4安装JDK
查看>>
201521123069 《Java程序设计》 第4周学习总结
查看>>
线性表的顺序存储——线性表的本质和操作
查看>>
【linux】重置fedora root密码
查看>>
用swing做一个简单的正则验证工具
查看>>
百度坐标(BD-09)、国测局坐标(火星坐标,GCJ-02)和WGS-84坐标互转
查看>>
pig自定义UDF
查看>>
输入名字显示其生日,没有则让输入生日,做记录
查看>>
爬虫综合大作业
查看>>
Kubernetes 运维学习笔记
查看>>
并查集 经典 畅通工程
查看>>
Spark MLlib 之 Naive Bayes
查看>>
php修改SESSION的有效生存时间
查看>>
spring security 11种过滤器介绍
查看>>