既存関数と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