最近、レイトレーサーの実行方法に関する投稿を書きました。 その後、レイトレーサーコードはJavaScriptで記述されました。 Lua、つまりLuaJIT 2.0がどのように同じタスクに対処するのかと思っていました。 以下は比較結果です。
参加者には、Chrome 9.0 Beta、Opera 11.01、Firefox 4.0 Beta 9、Explorer 9 Beta、およびLuaJIT 2.0 Beta 5が含まれていました。 シーンは次のとおりです。
結果は次のとおりです(RPSは「1秒あたりの光線数」を表します)。
クロム | 20,400 RPS |
オペラ | 15,700 RPS |
Firefox | 9,300 RPS |
探検家 | 9,000 RPS |
ルアジット | 5,000 RPS |
予期しない結果:LuaJITは最も遅く、他の参加者からはマージンがありました。
FreeLancerが指摘したように、Luaでガベージコレクターの設定を変更できます。 行のcollectgarbage( 'setpause'、2000)をコードの先頭に追加すると、ガベージコレクターはレイトレーサーの動作をほとんど中断せず、速度は25,000 RPSに増加しますが、ピークメモリ消費は1.5ギガバイトに増加します。 Chromeは、20,400 RPSの結果を示したときに150 MBしか「食べませんでした」。
ここからサンプルコードをダウンロードできます: JavaScriptおよびLuaJIT 。 JSとLuaのコードは、わずかな構文の違いを除いて同一です。 自宅のLuaでサンプルを実行するには、自分でluajit.exeファイルを作成し(ソースのソースLuaJITから準備またはコンパイルを行い)、コマンドラインで実行する必要があります。
luajit main.lua