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のソースを文字列としてくくるからemacsruby-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
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy