Lua高速化プロジェクト開発状況など(1)

AO benchが動いたので

% grep 'model name' /proc/cpuinfo
model name      : AMD Athlon(tm)64 X2 Dual Core Processor  4600+
model name      : AMD Athlon(tm)64 X2 Dual Core Processor  4600+
% uname -a
Linux rambai.cs.uec.ac.jp 2.6.26-2-amd64 #1 SMP Fri Aug 14 02:17:16 UTC 2009 x86_64 GNU/Linux
% ./src/lua-original test/ao.lua
--- aobench ---
init scene
render start
save ppm
time to render end      193
total time      193
--- done ---
% ./src/lua-stackalloc-dev test/ao.lua
--- aobench ---
init scene
render start
save ppm
time to render end      138
total time      138
--- done ---

138*100/193 = 71.50... → 約30%の高速化

GC時間の計測

% ./src/lua-gctime-original test/ao.lua
--- aobench ---
init scene
render start
save ppm
time to render end      191
total time      191
--- done ---
## execution: 191.114170 s, gc: 29.057515 s
% ./src/lua-gctime-stackalloc-dev test/ao.lua
--- aobench ---
init scene
render start
save ppm
time to render end      142
total time      142
--- done ---
## execution: 142.623048 s, gc: 0.000066 s

GC時間がほぼ0に。GC以外の部分も速くなってるのはキャッシュヒット率向上、とかだと嬉しい。まだ調べていない。

細かいことはいいじゃないですか

% cat | ./src/lua-stackalloc-dev
local t = {10, 20}
local u = {t}
u[1][1] = u[1][1] + 100
print("t[1]", t[1])
print("u[1][1]", u[1][1])
v = {t}
v[1][1] = v[1][1] + 100
print("t[1]", t[1])
print("u[1][1]", u[1][1])
print("v[1][1]", v[1][1])

t[1]    110
u[1][1] 110
t[1]    110
u[1][1] 110
v[1][1] 210

仕様です。未実装。よくないよ。次か次の次ぐらいで実装する。

開発場所

コードとかは基本的に全てgithubにて公開。Linux/gccWindows/VCでビルドできるはず。
http://github.com/hogelog/lua

test