さて「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年ほど前」となります。