在C++中,在for循环之外使用"if"或在for循环中使用"if"是否更有效

mjl*_*007 2 c++ performance

我正在用C++编写程序,我正在讨论是否将"if"放在循环中.我会想象做一次检查,然后循环总体上更有效,而不是常量循环和检查,但我不太确定.或者这一点无关紧要,因为编译器无论如何都会优化它?

这更有效吗?

for(int i = 0; i < SOME_BOUND; i++){
    if(SOME_CONDITION){
        //Some actions
    }
    else {
        //Some actions
    }

}
Run Code Online (Sandbox Code Playgroud)

或者这更有效率?

if(SOME_CONDITION){
    for(int i = 0; i < SOME_BOUND; i++){
        //Some Actions
    }
}
else {
    for(int i = 0; i < SOME_BOUND; i++){
        //Some Actions
    }
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*igt 8

一个检查肯定更好,但是硬件(分支预测)和编译器(在循环外提升表达式和条件)都有一些功能,这使得很难预测两个源代码之间是否真的存在运行时差异.

通常,您应该关注正确性和可维护性,并且如果性能分析显示优化程序缺少性能,则仅出于性能原因而重复循环.