Edited at

Crystalで書く → はやい

More than 3 years have passed since last update.

RubyからGoの関数をつかう → はやいの便乗。

フィボナッチ数計算のコードをそのまんま、拡張子だけcrに変えて試してみた。

(桁はちょっと少なめで検証)


fib.cr

def fib(n)

return n if n <= 1
fib(n - 1) + fib(n - 2)
end

puts fib(40) #50だとrubyの実行時間がかかりすぎたため


で、結果。

(ruby: 2.2.2, crystal: 0.9.1)


ruby


$ time ruby fib.rb
102334155

real 0m17.136s
user 0m17.050s
sys 0m0.063s



crystal

$ time crystal fib.cr

102334155

real 0m1.960s
user 0m0.990s
sys 0m0.400s



ビルド済みcrystal

$ crystal build fib.cr --release

$ time ./fib
102334155

real 0m0.646s
user 0m0.639s
sys 0m0.004s


go(1.5.1)の


go

$ time go run fib.go

102334155

real 0m1.386s
user 0m1.216s
sys 0m0.116s



ビルド済みGo

$ time ./fib

102334155

real 0m0.765s
user 0m0.755s
sys 0m0.006s


と比較すると大差ないレベル。


追記

crystalでのShared Library作成についてはまだ検討中らしい。

Add the ability to create a dynamic library