2014-02-05 28 views
0

我想爲我的賦值計算一個函數的運行時間。我不斷得到0堅果我的老師嚴格地說,他想要一個非零值,即使是一個10尺寸的循環。我的代碼到目前爲止,這是在C++中獲取函數的運行時間

#include <chrono> 

using namespace std; 
using std::chrono::duration_cast; 
using std::chrono::nanoseconds; 
using std::chrono::steady_clock; 

steady_clock::time_point t1 = steady_clock::now(); 
for(int i=0;i<times;i++){ 
    bubbleSort(arr,size); 
} 
steady_clock::time_point t2 = steady_clock::now(); 
cout<<(float)duration_cast<nanoseconds>(t2-t1).count()/times<<"  "; 

我也試過chrono::high_resolution_clockclock()等等。 主要問題是我必須給time=1; and size=10一些非零值。 請建議我如何做到這一點?

+1

你不能測量小於時鐘分辨率的時間。 –

+0

什麼亞歷克斯說,也嘗試'high_resolution_clock'情況下'steady_clock'是不是在您的操作系統中的分辨率非常高。 – vanza

+0

'bubbleSort'函數中有一個嵌套循環。即使是簡單的'cout <<「Hello Worl \ n」;'也會給出一些非零值。我不明白如何cout比嵌套循環需要更多的時間和檢查條件 – SSMA

回答

0

我試着運行你的代碼,評論當然是bubbleSort部分。它給了一些非零價值。試試這個:

cout<<(float)duration_cast<nanoseconds>(t2-t1).count()/(float)times<<"  "; 
+0

仍然不工作me – SSMA

+0

@SSMA你在使用什麼編譯器?它是Visual Studio嗎? – 0x499602D2

+0

是的Visual Studio 2012 – SSMA