では、まず2003.03.31付で提示した、動的メモリ確保して行列式を計算させるソースコードをコンパイルし、実行してみよう。
コンパイルは以下のようにして行った。
gcj -o jtest.exe --main=Test Test.java gcj -o jtest1.exe -fno-bounds-check -fno-store-check --main=Test Test.java gcj -o jtest2.exe -O3 -fno-bounds-check -fno-store-check --main=Test Test.java
jtest.exeは最適化無し、jtest1.exeは配列関連のチェックについて最適化した場合、jtest2.exeはそれに加えてCと同様な最適化を行った場合ということになる。
こうして作成された実行バイナリを、以下のようにして実行した。
date '+%H:%M:%S' jtest.exe date '+%H:%M:%S' jtest1.exe date '+%H:%M:%S' jtest2.exe date '+%H:%M:%S'
この結果は、以下の通りである。
20:28:46 result: 489261678 20:29:41 result: 489261678 20:30:33 result: 489261678 20:31:22
最適化無しで約55秒、配列チェック無しが約52秒、最適化有りで約49秒となった。
これは最適化無しのJavaよりはかなり速いが、HotSpotでの結果よりは10倍程度遅いことになる。
むしろ、Cでの結果にかなり近いもののように見えなくも無い。
次は、事前メモリ確保での実装の場合を見てみよう。