假设我们有以下代码:

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循环中编写更好?

最佳答案

答案就像很多事情一样,取决于情况。

是的,如果编译器决定将循环融合在一起,因为它会根据启发式方法适当地改善运行时性能。

No更合适,因为只有7个元素,而loop-fusion毫无意义。

还要注意,融合是没有意义的,因为该操作仅执行一次(在该示例中)。



要获得更详细的答案,请查看编译器的程序集输出,并比较不同编译器的输出。



另一件事是,如果不提高性能,为什么还要关心这种微优化。

09-07 02:53