나는이 같은 코드를 가지고 있고, 나는 그것이 조금 어려운 읽고 찾을 :C/C++ 컴파일러는이 if 문을 최적화할까요?
// code2
const bool expr1 = expensiveOperation1() && otherOperation() && foo();
const bool expr2 = expensiveOperation2() && bar() && baz();
if(expr1 || expr2){
// one of the conditions met
}
을하지만 지금은해야 :
// code1
if((expensiveOperation1() && otherOperation() && foo())
|| (expensiveOperation2() && bar() && baz()) {
// do something
}
난 그냥 다음에 변경이 더 쉽게 읽을 수 있도록하기 효율성에 관심이 있으십니까?
내 말은 code1
에서 첫 번째 결합 조항이 충족되면 두 번째 문장을 살펴보기가 번거롭지 않습니다. 진술이 사실임이 이미 분명하기 때문입니다.
그러나 더 쉽게 읽을 수있는 예제에서는 cond1
과 cond2
을 모두 계산해야합니다. 또는 컴파일러는 code2
을 code1
으로 변경할 수있을 정도로 똑똑 할 것입니다. 다른 곳에서는 expr2를 사용하지 않으면됩니까?
gcc/g ++ (g ++ v3.4, 정확하게 사용하고 있습니다.). – Frank