注意:轉載文章,不為別的,只為自己看着方便一些,侵刪。
本文主要向大家介紹了C語言程序計時方法實現教程,通過具體的內容向大家展示,希望對大家學習C語言有所幫助。
方法一:使用clock()函數
頭文件:time.h
函數原型:clock_t clock(void)
說明:其中clock函數返回從開始這個程序到調用的clock()函數之間的CPU時鍾計時單元(click tick)數。 返回值類型是clock_t。其中CLOCKS_PER_SEC是一個常數,表示一秒鍾有多少個時鍾計時單元。精確值:精確到毫秒,適合一般的場合實例:
#include<time.h>
intmain(){
clock_t start, end;
start = clock();
/*...需要計時的代碼...*/
end = clock();
printf("time=%f\n", (double)(end - start) / CLOCKS_PER_SEC);
return0;
}
</time.h>
方法二:使用time()和difftime()函數
頭文件:time.h
函數原型:time_t time(time_t, * timer) double difftime(time_t, time_t)
功能:返回自1970年1月1日00:00:00到現在經過的秒數
說明:其中difftime(t2-t1)要比t2-t1更准確。diffime會根據機器進行轉換
精確值:精確到秒
實例:
#include<time.h>
intmain(){
time_t start,end;
start = time(NULL);
/*...需要計時的代碼...*/
end = time(NULL);
printf("time = %d秒\n", difftime(end, start));
return0;
}
</time.h>
方法三:gettimeofday()函數
頭文件:sys/time.h
函數原型:int gettimeofday(struct timeval *tv, struct timezone *tz)說明:1.這個函數是linux系統專屬函數,可以精確到微秒; 2.其中參數tv是保存獲取時間的結果類型,參數tz用於保存時區結果(若不使用可以傳入NULL) 。精確值:精確到微秒實例:
#include<time.h>
intmian(){
struct timeval start,end;
gettimeofday(&start, NULL);
/*...需要計時的代碼...*/
gettimeofday(&end, NULL);
longtimeuse = 1000000*(end.tv_sec - start.tv_sec) + end.tv_usec-start.tv_usec;
printf("time =%f 秒\n", timeuse/1000000)
return0;
}
</time.h>
總結:如果是linux下最好使用第三種方法,如果是其它系統最好使用第一種方法。第二種方法統計的時間精確到秒。針對的是運行時間較長,或者有明顯的時間差的程序。第二種方法可移植性好,性能穩定,但是精度低只能精確到秒。
本文由職坐標整理並發布,了解更多內容,請關注職坐標編程語言C/C+頻道!