速度比較 lua vs perl

luaには、厳密には配列は無く、テーブルという唯一のデータ構造で配列を実現しています。
連想配列のような感じですが、関数を入れて擬似的なクラスのように振る舞わせることもできます。
データ構造としては複雑そうで、単純な配列操作をした場合、遅いのではないかと疑問に思ったので、Perlと比較してみました。

等差数列の和を、わざと無駄なやり方で計算させてます(配列への代入と参照を毎回させています)

lua

local max = 10000000
local ary = {}
for i=1, max do
    if i > 1 then
        ary[i] = ary[i-1] + i
    else
        ary[i] = i;
    end
end
print(string.format("%d\n", ary[max]));

perl

my $max = 10000000;
my @ary = ();
for (1..$max) {
    if ($_ > 1) {
        $ary[$_] = $ary[$_ - 1] + $_;
    } else {
        $ary[$_] = $_;
    }
}
print sprintf("%d\n", $ary[$max]);

実行時間を計ってみた結果

$ time lua lua.lua
50000005000000

real 0m1.540s
user 0m0.782s
sys 0m0.426s

$ time perl perl.pl
50000005000000

real 0m5.031s
user 0m3.532s
sys 0m0.526s

杞憂でした。ダントツでluaの方が速かったです。
あとは文字列操作も気になるので、今度試してみます。

About irako

広告系Webエンジニア 最近はluaがお気に入り。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です