假設我們有下面的代碼:C++編譯器是否將多個算法組合到一個循環中?
int main() {
int myints[] = {3,7,2,5,6,4,9};
// using default comparison:
std::cout << "The smallest element is " << *std::min_element(myints,myints+7) << '\n';
std::cout << "The largest element is " << *std::max_element(myints,myints+7) << '\n';
}
將編譯器優化上面爲一個循環?還是寫一個for循環更好?
這聽起來像是一個微觀優化問題...... – 2013-04-07 11:48:52
沒有* C++編譯器這樣的東西。有你的C++編譯器,還有我的C++編譯器。你的可能不會優化和挖掘。告訴編譯器的唯一方法是檢查編譯器生成的代碼。我同意奧利的觀點,你應該擔心除此之外的其他事情。 – john 2013-04-07 11:50:30
可能它可以。理論上,它也可以用向量化版本的指令來代替這兩個調用,所以「for」循環看起來會非常不同。如果一個循環對你很重要,你應該自己寫。 – dasblinkenlight 2013-04-07 11:56:42