コンパイラーは以下の2つのケースを同じように扱いますか、それともx / 2が常に再評価されないため、ケース2はパフォーマンスの向上をもたらしますか?私はいつも後者を想定してきましたが、誰かがこれを確認できれば素晴らしいと思います。
ケース1:
double result;
for (int i = 0; i < 10000000; i++) {
result += variables[i] * (x/2);
}
return result;
ケース2:
double result;
double xOverTwo = x/2;
for (int i = 0; i < 10000000; i++) {
result += variables[i] * (xOverTwo);
}
return result;