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

  • 相关阅读:
    大白话解说,半分钟就懂 --- 分布式与集群是什么 ? 区别是什么?
    intellij idea中去除@Autowired注入对象的红色波浪线提示
    用JQuery获取事件源怎么写
    springBoot 配置url 访问图片
    地图服务 纬度、经度对应坐标轴x,y
    5个问题带你了解export和import的使用以及export和export defalut 的区别
    5个你可能不知道的html5语义化标签
    CSS选择器[attribute | = value] 和 [attribute ^ = value]的区别
    前端ps实用小技巧
    7步教你使用git命令上传本地代码至github仓库(小白向)
  • 原文地址:https://www.cnblogs.com/shangyu/p/2360402.html
Copyright © 2011-2022 走看看