前のSakura2VMのJITコンパイラの性能表のビフォア・アフターです。
と言ってもこれ、JITコンパイラ自体の性能向上って少ないんですよね………一応高速化はしたのですが。
それより、コード自体いじって、ループを少しアンロール(1ループで2頂点処理)したことが大きいです。まあ、とりあえず1.5倍ほど高速化しましたが、これ限定って感じで。(とりあえずC++のx86ネイティブより50%ほど高速に)
因みに、このパフォーマンスサンプルにはメモリの転送も含んでいます。結構メモリのネックも大きいので一応。
ただなんか、全般的に思ってたほど速くない、というか、まあ、十分に速いと言えば速いのですが、う〜〜〜ん。
JITコンパイルされたx86 SSE2のコードを見てもそんなに悪くないコードに見えるので………
Sakura2VM上で画像のソフトウェアレンダリングで、バイリニア補完の描画コードが、想定ほどのパフォーマンスが出てなくて………。でも、JITコンパイルされたSSE2のコード見てもそんなに悪くないように見えるんですよねぇ〜。
ただ、EntisGLS3のMMXの描画コードと速度を比較すると、数倍の差があると言う…。まあ、あのコードは異常にチューニングしたしなぁ…(普通に補完処理をMMXで書いた初期状態より2倍以上速くした記憶が…)
とりあえず、描画系はSakura2VMでのソフトウェア描画である必要は無いので(EntisGLS3の描画を呼び出すので)、将来の課題ですかねぇ…。
詞葉のインラインアセンブラでSakura2VMのSIMD命令を直書き限定ですが、C++のネイティブと同等かそれ以上の速度が出せる、ってことで…。後は、ARMのSIMD命令でどのくらい性能が出るか…。
いや〜、今期アニメは Free! が神懸ってますね。
中二病が京アニ最初で最後の奇跡だと思っていたのですが(ぇ、最後の奇跡じゃなかったみたいですね。
あと「わたモテ」も今期かなり楽しんでますw
えー、「私がモテないのはどう考えても原発が悪い」じゃなくて、「私がモテないのはどう考えてもナチスが悪い」でもなくて、「私がモテないのはどう考えてもお前らが悪い」ですね。
前期、「やはり俺の青春ラブコメはまちがっている。」も結構良かったのですが、「わたモテ」も違ったテイストですが面白いですね。
あと、神にーさまもいいのですが、ちょっとペースが速いですね…。次回はリバ攻略っぽいので楽しみにしているのですがw
それにしても、既に次回作の冬リリースは結構難しそうな情勢です。
いやはや…
次回作、と言うか、次回作の前に出す予定のタイトルです。
F-ZERO に STG 要素を少しだけ追加したようなゲームにする予定です。
EntisGLS4s のサンプルとして作るゲームなので、ソースコードは全部付ける予定です。
冬コミを目指しますが、なんやかんやで来年になりそうな気も…
因みに、EntisGLS4s は動作チェックを兼ねたサンプルコードを書きつつと言う感じですが、現状、サンプルが9つですね。あと数個は予定しています。ライブラリの主要どころをざっくり網羅できるようにするつもりなので。
あと、ARM用のJITコンパイラも…。時間があればすぐにでもという感じですが、後回しかなぁ。
ARM用JITコンパイラは基本的にARMv6以降のみにしようかと思っています。(thumbモードの)ARMv5とARMv6、更にはVFPや
NEONを使う場合には、ARMv6以降では結構共通化できると思うのですが、ARMv5は別物になりそうな気がするので、そこまでARMv5にコストは
掛けられないかなと。(一方で、486用JITとSSE2用JITは共通部分が多くて、汎用JITコンパイラクラスから派生した486用JITクラスを派
生してSSE2用のJITクラスを実装しています)
別にJITコンパイラがないと動作しないわけじゃないですし、実行速度がちょっと遅いだけで。
|