#include <iostream>
#include <chrono>
#include <vector>
#include <algorithm>
template<class Type>
Type lnSearch(std::vector<Type>& Data, Type Target) {
for (typename std::vector<Type>::iterator Iterator = Data.begin(); Iterator != Data.end(); Iterator ) {
if (*Iterator == Target) return *Iterator;
else continue;
}
return Type{};
}
int main(void) {
std::vector<int> data;
for (int i = 0; i < 100000000; i ) {
data.push_back(i);
}
std::chrono::high_resolution_clock::time_point start = std::chrono::high_resolution_clock::now();
std::cout << lnSearch(data, 99999999);
std::chrono::high_resolution_clock::time_point stop = std::chrono::high_resolution_clock::now();
std::chrono::seconds sduration = std::chrono::duration_cast<std::chrono::seconds>(stop - start);
std::chrono::milliseconds msduration = std::chrono::duration_cast<std::chrono::milliseconds>(stop - start);
std::cout << "Time taken by function: " << sduration.count() << "." << msduration.count() << "s" << std::endl;
return 0;
}
我的演算法真的很快嗎,我的時鐘編碼是否錯誤,或者我對快速的看法是錯誤的?
在 vs22 上的 Release 模式下,它在 0.133s - 0.344s 的范圍內運行了 100,000,000 次迭代
uj5u.com熱心網友回復:
由于代碼中的 if 陳述句是非常可預測的,因此處理器可以很好地優化此代碼。
可以在此處找到深入的解釋:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/495266.html
標籤:C
上一篇:在VSCode中使用C 中的Vector時不執行任何操作
下一篇:std::sort導致段錯誤
