« 吉里吉里2 for Java/Android の公開について考える | メイン | 環境依存部分 »

2011年11月13日

Android:: Java版 TJS2 の速度

    

Java版 TJS2 で AO bench in TJS2 が動作させられるくらいは動くようになったのでベンチマーク。
動くと言っても、Window や Layer は未実装なので、演算のみで計測。
CPU は Core i7-2720QM 2.2GHz。
ネイティブ吉里吉里2 2.31.2011.615 では、433000 msec。
Java版 TJS2 で 570128 msec。
32% 程度遅いが、思っていたよりも速い。
数倍のオーダーかと思っていたが……
ただ、実行結果はまだ見られないので結果があっているかどうかは分からない。
バイトコードが一致して、VMがその命令を実行することは確認しているので、ほとんど同じ処理はしているはず。
後、Java版 はまずは動くことを目標としていたので、最適化の余地はかなり大きい。
TJS2 スクリプトの実行速度という点であれば、ネイティブ版と大差ない速度で動く可能性もある。
32% の時点で大差ないとも思えるけど。

実行環境のバイトコードへのJIT ( Javaバイトコード/Dalvikバイトコード ) を実装したならネイティブ版の速度を超える可能性は十分にある。
まあ、Java VM のJIT によって TJS2 → Javaバイトコード → ネイティブコード と一部ネイティブになって動く部分もあるだろうし。
こうなるとネイティブ版で逆転するには LLVM の実装だろうな。
Javaバイトコード から LLVM バイトコードへ変換するものとか既にあったりするんだろうか?


なんにしても Java 版が意外と速いことが分かったので、副産物と思っていた Linux/Mac で動くと言うのも実用的に使えるかもしれない。
もっとも、影響があるのは画像部分の SIMD での処理やマルチスレッド処理部分だろうから、その辺りでネイティブには遠く及ばないだろうけど。
でも、SIMD や マルチスレッドがなかったとしても、最近の PC ならそこそこ普通に動く気はする。
一部のゲームのようにひたすらに重いことしなければ。



投稿者 Takenori : 2011年11月13日 14:47




comments powered by Disqus
Total : Today : Yesterday : なかのひと