ということで、Borland Cの結果もあわせて表にまとめた。
Pentium4:2.4GHz WindowsXP(MS932) cygwin gcc3.3.1 Borland C++5.5 JDK1.4 |
C | Java | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
gcc | Borland C | インタ プリタ | Hot Spot | AOT | |||||||||||
最適化 無 | 最適化 有 | 最適化 無 | 最適化 有 | 最適化 無 | 最適化 配列 | 最適化 有 | |||||||||
malloc | alloca | malloc | alloca | malloc | alloca | malloc | alloca | ||||||||
行列式 計算 | 再帰 有り | 動的メモリ確保 | 46 | 8 | 43 | 4 | 6 | 5 | 5 | 4 | 90 | 9 | 55 | 52 | 49 |
事前メモリ確保 | 5 | 5 | 3 | 3 | 4 | 4 | 4 | err | 81 | 8 | 10 | 6 | 5 | ||
再帰 無し | 動的メモリ確保 | 44 | 3 | 42 | 3 | 4 | 3 | 5 | 3 | 76 | 7 | 52 | 52 | 49 | |
事前メモリ確保 | 3 | 4 | 2 | 2 | 3 | 3 | 2 | err | 66 | 6 | 7 | 5 | 4 | ||
ループ | 動的メモリ確保 | 46 | - | 44 | - | 8 | - | 8 | - | 154 | 12 | 64 | 52 | 52 | |
事前メモリ確保 | 7 | 7 | 4 | 4 | 5 | 5 | 6 | err | 159 | 11 | 19 | 8 | 6 | ||
イン デックス | 動的メモリ確保 | 42 | 4 | 41 | 2 | 4 | err | 4 | 2 | 51 | 5 | 48 | 48 | 46 | |
事前メモリ確保 | 3 | 3 | 1 | 2 | 2 | err | 2 | 3 | 43 | 5 | 5 | 4 | 3 |
Borland Cだと、allocaの場合、最適化無しだと何故かエラーになるようだ。理由は分からない。
以前の結果でも、最適化した場合にエラーとなっていたりするので、Borland Cではallocaを使わない方が無難なのかも知れない。もしかすると動的メモリ確保がgccよりも速いのは、そこら辺にも理由があるのかも知れないが、はっきりしたことは私には分からない。
ともかく、インデックス版は処理速度の向上に対して確かに効果的であったと結論することは問題無いだろう。
今回で、インデックス版の効果の検証は終わりとしたい。