ルア対 Javascript

スモールピック

最近、レイトレーサーの実行方法に関する投稿を書きました。 その後、レイトレーサーコードは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が含まれていました。 シーンは次のとおりです。

BigImage

結果は次のとおりです(RPSは「1秒あたりの光線数」を表します)。

クロム20,400 RPS
オペラ15,700 RPS
Firefox9,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

Source: https://habr.com/ru/post/J113250/


All Articles