• 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

  • 相关阅读:
    项目用到的分页功能(保存)
    跟上脚步(微信小程序)
    啊!!!贾克斯。
    Javascript闭包——懂不懂由你,反正我是懂了(作者: FrankFang 来源: 博客园)
    OpenCV4Android 之 OpenCV4Android SDK
    OpenCV4Android 之 Android 开发简介
    (-2147483648 > 0)?
    基于能量水平的无线传感器网络拓扑控制研究
    遍历文件夹及其子孙文件夹中的文件
    目标检测中背景建模方法
  • 原文地址:https://www.cnblogs.com/shangyu/p/2360402.html
Copyright © 2020-2023  润新知