在c語言中有專門處理系統時間,程式計時等等功能的庫,
即time.h
在time.h中函數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。
下面這個程式計算了循環1千萬次所用的時間:
#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");
}
運作結果如下:
Time to do 10000000 empty loops is 0.03000 seconds