【发布时间】:2013-04-07 11:47:46
【问题描述】:
假设我们有以下代码:
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循环中更好?
【问题讨论】:
-
这听起来像是一个微优化问题...
-
没有像 the C++ 编译器这样的东西。有你的 C++ 编译器,还有我的 C++ 编译器。你的可能没有优化,我的可能。告诉编译器的唯一方法是检查编译器生成的代码。我同意 Oli 的观点,你应该担心的不是这个。
-
有可能。从理论上讲,它还可以用指令的矢量化版本替换这两个调用,因此“for”循环看起来会非常不同。如果单个循环对您很重要,您应该自己编写。
标签: c++ c++11 compiler-optimization