(本題)Luaのダイレクトスレッデッドコード

非常にいいかげんに実装。たいていのプログラムはセグフォで落ちる。非常に恣意的なテストプログラムを走らせる。

local i = 1
local j = 1
while i<100000000 do
  i = i + 1
  j = j + i
end
print(j)
% time (repeat 10 ./lua test.lua >/dev/null)
1:08.98 user 0.052 system 1:09.07 total
% time (repeat 10 ./lua-dthreadead test.lua >/dev/null)
1:06.77 user 0.052 system 1:06.86 total

すばらしく微々たる違い。3%強の高速化に成功したぞ!

% time (repeat 10 luajit test.lua >/dev/null)
6.044 user 0.032 system 6.108 total

やっこさん桁が違う……!

JITってすごいなーというお話です。

test