既存関数とluasubのベンチマーク比較
今度は、NScripter組み込みの命令とLuaで実装した命令の比較をしてみた。
詳細
sin, cosについて、組み込みとluaでの実装を用意して、それぞれを実行してその速度を比較した。
結果
sin,6516 cos,6595 sin_lua,6420 cos_lua,6431
考察
笑ってしまうことに、組み込みよりもlua実装の方が早いことがわかった。
かつ、lua実装に関しては、math系をローカル化することでさらに高速化の余地があることから、まず間違いなく面倒な計算はluaにまかせた方が早いことになる。
スクリプト
00.txt
*start csvopen "bench_tri.csv","w" resettimer for %2=1 to 100 for %0=0 to 359 sin %1,%0 next next gettimer %10 csvwrite "sin",%10 resettimer for %2=1 to 100 for %0=0 to 359 cos %1,%0 next next gettimer %10 csvwrite "cos",%10 resettimer for %2=1 to 100 for %0=0 to 359 sin_lua %1,%0 next next gettimer %10 csvwrite "sin_lua",%10 resettimer for %2=1 to 100 for %0=0 to 359 cos_lua %1,%0 next next gettimer %10 csvwrite "cos_lua",%10 csvclose end *define game
system.lua
NSExec("luasub sin_lua") function NSCOM_sin_lua() local ret = NSPopIntRef() NSPopComma() local deg = NSPopInt() NSSetIntValue(ret, math.floor(math.sin(math.rad(deg))*1000)) end NSExec("luasub cos_lua") function NSCOM_cos_lua() local ret = NSPopIntRef() NSPopComma() local deg = NSPopInt() NSSetIntValue(ret, math.floor(math.cos(math.rad(deg))*1000)) end