background image

clock 函数定义如下:

clock_t clock( void );

” “

这个函数返回从 开启这个程序进程 到 程序中调用 clock()

函数 时之间的 CPU 时钟计时

单元(clock tick)数,在 MSDN 中称之为挂钟时间(wal-clock)。其中 clock_t 是用来保
存时间的数据类型,在 time.h 文件中,我们可以找到对它的定义:

#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif

很 明 显 , clock_t 是 一 个 长 整 形 数 。 在 time.h 文 件 中 , 还 定 义 了 一 个 常 量
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;