在c/c++中經常需要獲取某段程式的執行時間,那麼如何來實現呢?
使用time函式計算某段程式執行時間的**如下:
time_t start_time;
time(&start_time);
...time-consuming code
...time_t end_time;
time(&end_time);
time_t duration = end_time - start_time;
但該方式只能獲取以秒為單位的時間,如果想要獲取更細粒度的時間,則需要使用其它的方法。
clock函式返回程式執行的cpu時鐘數,使用clock函式統計程式段執行的時鐘數,再用執行的時鐘數除cpu每秒執行的時鐘數,即可得到執行的時間。**如下:
clock_t start_time = clock();
...time_consuming code
...clock_t end_time = clock();
double duration = double(end_time - start_time)/clocks_per_sec;
其中,clocks_per_sec表示cpu一秒鐘的執行時鐘數。該方式也有一定的限制條件,即若程式使用多核平行計算,則得出的時間不準確,統計的執行時鐘數是所有核的總時鐘數。
struct timeval tv;
gettimeofday(&tv,null);
long int start_time = tv.tv_sec * 1000 + tv.tv_usec/1000;
...time consuming code
...gettimeofday(&tv,null);
long int end_time = tv.tv_sec * 1000 + tv.tv_usec/1000;
long int duration = end_time - start_time;
在c++11中可以考慮使用更高階的特性,chrono,這裡就不做過多的介紹了。 C C計算程式執行時間
clock t clock void 簡單而言,就是該程式從啟動到函式呼叫占用cpu的時間。這個函式返回從 開啟這個程式程序 到 程式中呼叫clock 函式 時之間的cpu時鐘計時單元 clock tick 數,在msdn中稱之為掛鐘時間 wal clock 若掛鐘時間不可取,則返回 1。其中clo...
計算程式執行時間
在長時間計算程式執行時間時,可以使用clock函式。clock比較通用,精度並不是特別的高,大約是10ms。但是對於長時間的計算的話,還是可以使用的。以下是一段示例程式,將幫助你理解 include stdio.h include memory.h include time.h define siz...
程式執行時間計算
int sum int n 分析 宣告不計時間,第一句,第四句各占用乙個時間單位。第三句每執行一次占用四個時間單位,兩次乘法,一次加法,一次賦值。而執行n次共占用4n個時間單位。第二行初始化i,乙個時間單位 測試i n,n 1個時間單位 i n個時間單位 總共2n 2。忽略呼叫,返回值的開銷,以上總...