就像一個實驗,我一直在運行下面的代碼塊。我在哪裏估計for
循環中不同迭代次數所花費的時間。C++:在循環迭代中花費的時間
std::vector<double> numIt= {1e2, 1e4, 1e6, 1e8, 1e9, 1e10,1e11};
for(int i=0; i< (int) numIt.size() ; i++)
{
int tmp=0;
std::chrono::high_resolution_clock::time_point t1 = std::chrono::high_resolution_clock::now();
for (int j=0; j< numIt[i]; j++)
{
tmp=i-j;
}
std::chrono::high_resolution_clock::time_point t2 = std::chrono::high_resolution_clock::now();
auto durationFPextraction = std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1).count();
std::cout <<i<< "\t"<< tmp<<"\t"<<numIt[i] << "\t" << durationFPextraction <<std::endl;
}
它打印出以下內容,已經運行了幾個小時,現在通過1e+10
長度for
循環迭代。如果所花費的時間是線性的,它不應該花費大約14000毫秒(14秒)?
0 -99 100 0 1 -9998 10000 0 2 -999997 1e+06 2 3 -99999996 1e+08 144 4 -999999995 1e+09 1394
什麼平臺?你確定'1e11'是否在你的整數範圍內?爲什麼比較一個整數到一個double? –
將內循環更改爲'long int'並開始工作。這是一個明顯的整數溢出的情況。我的錯。謝謝。 – Yakku