编译器是否以相同的方式处理以下两种情况,或者情况 2 是否提供了性能提升,因为 x/2 没有不断地重新评估?我一直认为是后者,但如果有人能证实这一点,那就太好了。
情况1:
double result;
for (int i = 0; i < 10000000; i++) {
result += variables[i] * (x/2);
}
return result;
案例二:
double result;
double xOverTwo = x/2;
for (int i = 0; i < 10000000; i++) {
result += variables[i] * (xOverTwo);
}
return result;