C語言中計算函數執(zhí)行時間的三種方式
這篇文章主要介紹三種計算執(zhí)行時間的方式。
方式1: time + difftime
使用time.h標準庫中的time和difftime函數可以返回記錄的兩次time_t結構的時間之間的差值,這種方式只能精確到秒級,代碼示例如下:
#include <stdio.h> #include <time.h> int fibonacci(int n) { if(n == 0 || n == 1) return 1; return fibonacci(n-1) + fibonacci(n-2); } int main() { int n = 0; while(~scanf("%d",&n)) { time_t start_time=0, end_time=0; time(&start_time); printf("fibonacci(%d)=%d\n",n,fibonacci(n)); time(&end_time); printf("Time Used: %f\n",difftime(end_time,start_time)); } return 0; }
- 執(zhí)行結果如下
45
fibonacci(45)=1836311903
Time Used: 9.000000
方式2: clock + CLOCKS_PER_SEC
另外利用clock函數代替time函數也能起到相同作用,這種方式通過計算兩個clock函數之間的時鐘單元來實現,代碼示例如下:
#include <stdio.h> #include <time.h> int fibonacci(int n) { if(n == 0 || n == 1) return 1; return fibonacci(n-1) + fibonacci(n-2); } int main() { int n = 0; while(~scanf("%d",&n)) { time_t start_time=0, end_time=0; start_time=clock(); printf("fibonacci(%d)=%d\n",n,fibonacci(n)); end_time=clock(); printf("Time Used: %f\n",(double)(end_time-start_time)/CLOCKS_PER_SEC); } return 0; }
- 執(zhí)行結果如下
45
fibonacci(45)=1836311903
Time Used: 8.715660
方式3: timeb+ftime
另外利用clock函數代替time函數也能起到相同作用,這種方式通過計算兩個clock函數之間的時鐘單元來實現,代碼示例如下:
#include <stdio.h> #include <sys/timeb.h> #include <string.h> int fibonacci(int n) { if(n == 0 || n == 1) return 1; return fibonacci(n-1) + fibonacci(n-2); } int main() { int n = 0; while(~scanf("%d",&n)) { struct timeb start_time, end_time; memset(&start_time,0,sizeof(struct timeb)); memset(&start_time,0,sizeof(struct timeb)); ftime(&start_time); printf("fibonacci(%d)=%d\n",n,fibonacci(n)); ftime(&end_time); printf("Time Used: %d.%d\n",end_time.time-start_time.time,end_time.millitm-start_time.millitm); } return 0; }
- 執(zhí)行結果如下
45
fibonacci(45)=1836311903
Time Used: 8.621
總結
到此這篇關于C語言中計算函數執(zhí)行時間的三種方式的文章就介紹到這了,更多相關C語言計算函數執(zhí)行時間內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
VSCode配置C++環(huán)境的方法步驟(MSVC)
這篇文章主要介紹了VSCode配置C++環(huán)境的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-05-05