爲什麼執行函數f1()的時間在調試模式下會從一次運行變爲另一次運行?爲什麼它在發佈模式下始終爲零?關於clock()函數的問題
我沒有包括stdio.h也沒有cstdio和代碼編譯。怎麼樣 ?
#include <iostream>
#include <ctime>
void f1()
{
for(int i = 0; i < 10000; i++);
}
int main()
{
clock_t start, finish;
start = clock();
for(int i = 0; i < 100000; i++) f1();
finish = clock();
double duration = (double)(finish - start)/CLOCKS_PER_SEC;
printf("Duration = %6.2f seconds\n", duration);
}
我改變了函數f1()來計算前10000個整數的和並返回這個值。釋放模式對於執行時間仍然返回0。 – Ayrosa 2011-03-31 11:00:28
我終於找到了釋放模式下的執行時間大於0的情況。 – Ayrosa 2011-03-31 13:49:34
@jaayrosa,我不確定我對編譯器優化的假設是否正確,但很可能是空循環。如果您仍然看到循環中有指令的0運行時,則可能還有其他事情正在發生(請參閱hopia的答案)。 – Rob 2011-03-31 16:09:59