zoukankan      html  css  js  c++  java
  • CLOCKS_PER_SEC

    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中可以用CLK_TCK替换CLOCKS_PER_SEC。

    出自http://baike.baidu.com/view/3674653.html?wtp=tt

  • 相关阅读:
    2049
    2046 ACM 数学
    1290 ACM 数学
    2017 ACM 字符串的本质
    1171 Big Event in HDU 01背包
    2045 数学:排列组合
    git命令(版本控制之道读书笔记)
    mysql:赋予用户权限、查看及修改端口号
    Linux系统的命令别名功能(转)
    回到上次目录、历史命令查找快捷方式及执行时间显示设置、查看系统版本
  • 原文地址:https://www.cnblogs.com/shangyu/p/2360402.html
Copyright © 2011-2022 走看看