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

  • 相关阅读:
    Linux监控平台、安装zabbix、修改zabbix的admin密码
    LVS DR模式搭建、keepalived+lvs
    负载均衡集群相关、LVS介绍、LVS调度算法、LVS NAT模式搭建
    集群相关、用keepalived配置高可用集群
    mysql基础
    MySQL主从、环境搭建、主从配制
    Tomcat配置虚拟主机、tomcat的日志
    Tomcat介绍、安装jdk、安装Tomcat、配置Tomcat监听80端口
    FTP相关、用vsftpd搭建ftp、xshell使用xftp传输文件、使用pure-ftpd搭建ftp服务
    HTTP Status 500
  • 原文地址:https://www.cnblogs.com/shangyu/p/2360402.html
Copyright © 2011-2022 走看看