我正在用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)
一个检查肯定更好,但是硬件(分支预测)和编译器(在循环外提升表达式和条件)都有一些功能,这使得很难预测两个源代码之间是否真的存在运行时差异.
通常,您应该关注正确性和可维护性,并且如果性能分析显示优化程序缺少性能,则仅出于性能原因而重复循环.