関連する質問の 1 つに対する回答をテストするときに、次のように書きました。
public static long timeDouble(int iters) {
long start = System.currentTimeMillis();
for (; iters >=0; iters--) {
double a = 1.2, b = 2.246, c = 4.4924, d = 8.98488, e = 17.969772;
a = Math.sqrt(a);
b = Math.cos(b);
c = Math.sin(c);
d = Math.tan(d);
e = a + b - c * d / (e + 1);
e = Math.pow(e, e);
}
return System.currentTimeMillis() - start;
}
このメソッドの実行時間は平均 414 ミリ秒でした (1000000 回の反復を使用)。ただし、次の行を追加する必要がありました。
e = e + d - c * b / (a + 1);
e = Math.pow(e, e);
この行の追加により、このメソッドの計算時間は平均 206 ms (同じテスト条件を使用) に短縮されました。
これは何が原因ですか?