C語言程序執行時間計時方法匯總


C語言中程序計時方法總結

主流方法共分為如下三種

1. clock()函數

需要引用頭文件 “time.h”

注:clock函數返回從開始這個程序到調用的 clock() 函數之間的CPU時鍾計時單元(clock tick)數。返回值類型是 clock_t。其中 CLOCKS_PER_SEC 是一個常數,表示一秒鍾有多少個時鍾數。

代碼:

 1 #include<time.h>
 2 
 3 int main(){
 4      clock_t start, end; 
 5      start = clock();
 6 
 7      /*...
 8         需要計時的代碼
 9     ...*/
10 
11      end = clock();
12      printf("time=%f\n", (double)(end - start) / CLOCKS_PER_SEC);
13      return 0;
14 }    

使用場景:建議在Windows環境下使用

2. time(), difftime() 函數

返回從1970年1月1日00:00:00到現在經過的秒數

注:建議使用 difftime() 來計算程序執行所花時間(更精確,單位:s)

代碼:

 1 #include<time.h>
 2 
 3 int main(){
 4     time_t start,end;
 5     start = time(NULL);
 6 
 7     /*...
 8         需要計時的代碼
 9     ...*/
10 
11     end = time(NULL);
12     printf("time = %ds\n", difftime(end, start));
13     return 0;
14 }

 

3. gettimeoftoday() 函數

函數原型:int gettimeofday(struct timeval *tv, struct timezone *tz)

1.該函數是 Linux 系統專屬函數,可以精確到微秒 (us);

2.其中參數tv是保存獲取時間的結果類型,參數tz用於保存時區結果 (若不使用可以傳入NULL)。

代碼:

 1 #include<sys/time.h>
 2 
 3 int mian(){
 4     struct timeval start,end;
 5     gettimeofday(&start, NULL);
 6 
 7      /*...
 8         需要計時的代碼
 9     ...*/
10 
11     gettimeofday(&end, NULL);
12     long timeuse = 1000000*(end.tv_sec - start.tv_sec) + end.tv_usec-start.tv_usec;
13     printf("time =%f 秒\n", timeuse/1000000)
14     return 0;
15 }    

 

總結

Linux環境下優先使用 gettimeoftoday() 方法,Windows或其他環境推薦使用 clock() 方法,第二種方法由於精確度有限,不推薦使用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM