Lua Performance Tips

Lua Programming Gems

Lua Programming Gems

Lua Programming Gems は, Luaプログラミングテクニックについてまとめた,いわゆる「Gems本」だ。公式ページでは第2章 "Lua Performance Tips" をサンプルとして無料公開しており, PDF 形式でダウンロードして読むことができる。この内容がなかなか面白い。

最も基本的なポイントであるグローバル変数とローカル変数の違いから, table における配列とハッシュの扱いについて,文字列の内部的な扱いについて,等々, Lua におけるパフォーマンスの要点について触れている。

分かりやすい例

例えば,こんな例は分かりやすい。

for i = 1, 1000000 do
  local x = math.sin(i)
end

これは math.sin に毎回アクセスしている部分をローカル変数に書き換えるだけで約 30% 速くなるという。

local sin = math.sin
for i = 1, 1000000 do
  local x = sin(i)
end

分かりにくい例

for i = 1, 1000000 do 
  local a = {} 
  a[1] = 1; a[2] = 2; a[3] = 3 
end 

これは,テーブル a に初期値を設定してやることによってテーブルの rehash を避けることができるようになり,半分以下の処理時間になるという。本当?

for i = 1, 1000000 do 
  local a = {true, true, true} 
  a[1] = 1; a[2] = 2; a[3] = 3 
end