RubyからGoの関数をつかう → はやい - Qiita
約20倍はやい!!!!!!すごい!!!!!!!!!!!!!!
Go単体での実行に毛が生えた程度になりました!!!!!!!!!!!!!!!!!!
もう「Rubyより、ずっとはやい」なんて言わせないぞ!!!!!!!!
http://qiita.com/grj_achm/items/679b3f3af2cf377f0f02
def fib(n)
return n if n <= 1
fib(n - 1) + fib(n - 2)
end
puts fib(40)
巷で良く見る fib のコードですね。
$ time ruby fib1.rb
102334155
real 12.692
system 0.031
user 12.651
これを再帰を使わない様に修正すると以下の様になります。
def fib(n)
f0, f1, v = 0, 1, 0
n.times do |x|
if x <= 1
v = x
else
v = f0 + f1
f0, f1 = f1, v
end
end
return f0 + f1
end
puts fib(40)
$ time ruby fib0.rb
102334155
real 0.072
system 0.031
user 0.031
約400倍はやい!!!!!!すごい!!!!!!!!!!!!!!