我試圖找出2e6跳轉的「for循環」的確切執行時間。 下面的代碼在從g ++編譯爲C++文件後的10ms內運行。 人們告訴我,這是由C++編譯器自動完成的優化代碼,所以你 得到毫無意義的執行時間。換句話說,因爲沒有任何輸出呼叫 如printf或COUT < <變量A,B,C這樣的優化代碼將用於 做什麼,「for循環」,這就是爲什麼我真的很短的編程執行時間在10ms內。對 ?他們爲什麼說時間結果對於「for循環」是沒有意義的。10毫秒C++執行時間
請告知
int main(){
int max = 2e6;
int a,b,c;
// CODE YOU WANT TO TIME
int start = getMilliCount();
for (int i = 0; i < max; i++) {
a = 1234 + 5678 + i;
b = 1234 * 5678 + i;
c=1234/2+i;
}
int milliSecondsElapsed = getMilliSpan(start);
printf("\n\nElapsed time = %u milliseconds %d\n", milliSecondsElapsed,max);
return 0;
}
請參見[裝配輸出](http://goo.gl/HDSOiv)。 – 2014-09-01 11:17:43
編譯器確實可以完全清除循環,如果它可以證明它沒有副作用(就像你的例子)。我不明白你對'please advise'的期望。建議...什麼? – bolov 2014-09-01 11:19:29
您可以聲明'c'變量,以強制其值在每次迭代時被計算和分配。我不知道這個結果是多少有些沒有意義。 – 2014-09-01 12:02:09