Ruby Ruby-Inline Lua 計算速度比較
ruby-inlineを試したついでに計算速度の比較を行った。
15の階乗を100万回計算させたら...
言語 | 実行速度 |
---|---|
Ruby | 10.95s |
Lua | 0.90s |
Ruby+C(Ruby-inline) | 0.76(0.85)s |
想像以上にLua速い!なんだこれ!
ruby-inlineいいけれどこれ、Cのソースを文字列としてくくるからemacsのruby-modeでインデント出来なくなるんだよなあ...
でもいいぞruby-inline!もっとやれ!
ソースコードなどは以下からどうぞー。
Rubyのコード
#!/usr/bin/ruby def factorial(n) i = n result = 1 while (i>=2) do result *= i i -= 1 end return result end for i in 1..1000000 do factorial(15) end
$ time ruby fact-pureruby.rb ruby fact-pureruby.rb 10.95s user 0.61s system 99% cpu 11.564 total
Luaのコード
function factorial(n) local i = n local result = 1 while (i>=2) do result = result*i i = i-1 end return result end for i=1,1000000 do factorial(15) end
$ time lua fact-lua.lua lua fact-lua.lua 0.90s user 0.00s system 99% cpu 0.903 total
Ruby-inlineのコード
#!/usr/bin/ruby require 'rubygems' require 'inline' class InlineTest inline do |hoge| hoge.c ' double factorial(int n) { int i=n; double result=1; while (i >= 2) { result *= i--; } return result; } ' end end t = InlineTest.new() for i in 0..1000000 do t.factorial(15) end
$ rm -rf ~/.ruby_inline $ time ruby fact-inline.rb ruby fact-inline.rb 0.85s user 0.24s system 53% cpu 2.050 total $ time ruby fact-inline.rb ruby fact-inline.rb 0.76s user 0.25s system 99% cpu 1.010 total