雨谷の日和

過去20年で2,700を超えるアニメの第1話だけは見続けた僕のお勧めアニメがハズレなはずがない

Javaの実行時最適化の効果

さて「JavaとCの実行比較」の結果には、Javaの実行方法にも疑問がある。
Javaの実行時には最適化が為される。
その結果と、最適化されていないC言語のそれを比較すること自体、公正な態度ではないのだ。
では、Javaの実行時最適化の機能を切った状態で実行時間を見てみよう。
それには以下のように「-Xint」オプションを指定し、インタプリタモードで実行すればよい。

date '+%H:%M:%S'
java -Xint Test
date '+%H:%M:%S'

以下が、その結果である。

20:28:19
20:30:53

なんと、実行終了までに約154秒もかかってしまった。
実行時最適化が為されている場合と比較すると、実に約20倍弱も遅い。
最適化の為されていないCのそれと比べても約10倍弱遅い。
最適化の為されたCのそれとでは30倍以上の差があることになる。
これでは「Javaは遅くて使い物にならない」と言われても仕方がない。
現在のJavaの実行時最適化が実装されたのはjdk1.3から、2002年のことだから約2年ほど前にようやく状況が変わったということになる。


※訂正[2004.03.14]
jdk1.3のリリースは2000年5月でした。従って「2002年のことだから約2年ほど前」は誤りです。正しくは「2000年のことだから約4年ほど前」となります。