Lua で素数を求めてみルア #
速いという噂をよく耳にする Lua が、どのくらい速いのか試してみた
フィボナッチ数列計算させたらどのスクリプト言語でも速くて面白くなかったので、10万未満の素数を計算させたら、すごく差がついた
厳密な速さ比べをしたいわけではなく、Lua が本当に速いのどうか知りたいだけなので、各言語で最速になるようにとか考えず、全部同じようなロジックで統一。Lua だけ載せとく
function is_prime(n)
local i
for i = 2, (n-1) do
if n % i == 0 then return false end
end
return true
end
max = 100000
for i=2,max do
if is_prime(i) then print(i) end
end
結果
Lua 5.1 | 23.4s |
LuaJIT | 3.4s |
perl 5.8 | 49.6s |
perl 5.18 | 43.0s |
php 5.2 | 54.8s |
php 5.4 | 31.9s |
ruby 1.8 | 159.7s |
ruby 2.0 | 50.4s |
Lua 、確かに速いなぁ。ruby は 2.0 で普通になったんだなぁ
あと、素数とは関係ないけど、フィボナッチな計算で
a, b = b, a + b
みたいな横着が、php だけ書き方わからんかった。わからんでもいいんですけどね