2015-05-31 97 views
2

試圖以此來找到我的代碼的執行時間:執行時間在C++中

#include <iostream> 
#include <time.h> 
using namespace std; 

int main() 
{ 
    clock_t t1, t2; 

    t1 = clock(); 

    // code goes here 

    t2 = clock(); 

    float diff = ((float)t2 - (float)t1); 

    cout <<"Execution Time = "<<diff/CLOCKS_PER_SEC <<endl; 
    system ("pause"); 

    return 0;  
} 

,但每次與相同的代碼執行時會返回一個不同的時間。代碼是否正確?

我想檢查我的代碼在不同情況下的執行時間,但不應該顯示相同的時間,當我執行相同的代碼兩次?

+2

時間不確定,對於這樣短的操作,它可能相差很大。 –

+6

它永遠不會顯示完全相同的時間。順便說一句,嘗試使用新的''函數來定時你的程序,看到一個例子[這裏](http://en.cppreference.com/w/cpp/chrono/steady_clock/now)。 – vsoftco

+0

處理器還有哪些? –

回答

0

正如here所提到的,時鐘滴答是一個常數但系統特定長度的時間單位,與那些由函數時鐘返回的時間單位相同。在提到我們需要考慮使用這種方法找出執行一段代碼的時間時,場景/事實的幾個 。

1)打勾表示的時間取決於操作系統。此外,操作系統內部的 時鐘滴答計數器。請參閱此SuperUser Question

2)需要爲系統上運行的任何進程分配資源。但是如果處理器忙於另一個更重要的過程,或者甚至可能已經耗盡資源,該怎麼辦?在這種情況下,您的進程將被放入一個隊列中,並以較低的優先級運行。但是,由於時鐘芯片被存儲在內部計數器中(如上所述),即使其他一些進程正在使用處理器,它也會繼續增加。

結論

你發現基於時鐘執行時間的方法,每一跳都不會 產量確切的結果,但它會給你的執行時間只在一念。