雨谷の日和

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

JavaとCとの性能比較(行列式計算)

ということで、Borland Cの場合も含めた、実測結果をまとめておく。


Pentium4:2.4GHz
WindowsXP(MS932)
cygwin
gcc3.3.1
Borland C++5.5
JDK1.4
Java
gccBorland Cインタ
プリタ
Hot
Spot
AOT
最適化
最適化
最適化
最適化
最適化
最適化
配列
最適化
mallocallocamallocallocamallocallocamallocalloca
行列式
計算
再帰
有り
動的メモリ確保 468434 6554 909555249
事前メモリ確保 5533 444err 8181065
再帰
無し
動的メモリ確保 443423 4353 767525249
事前メモリ確保 3422 332err 666754
ループ動的メモリ確保 46-44- 8-8- 15412645252
事前メモリ確保 7744 556err 159111986
※単位はいずれも[sec]


まず、gccBorland Cとで、mallocに関する性能が著しく違うことがはっきりとわかる。
Solarisでの実測では、gccの場合でもmallocとallocaの違いはそれほど顕著ではなかったので、Windows版(cygwin)のgccmallocが極端に遅いということのような気がしないではない。
また、全体として単にループに展開するだけでは逆に遅くなるという傾向はBorland Cでも同じということも見て取れる。


今後、上記の実測の中でSolarisでまだやっていないものを行ってみたい。が、それは今のところ予定が立っていないので、実測できしだいここに掲載したい。
とりあえず、今後は行列式計算のアルゴリズムの高速化という別の取り組みを主なネタにして、日記を続けていこうと思う。