天天看點

C語言中測試程式運作時間

在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