Help us understand the problem. What is going on with this article?

Crystalで書く → はやい

More than 5 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

msky026
クラウド系デベロッパー。開発はそこそこ。Ruby/Elixir/Crystal/Unity/Salesforce とともに再びスマホゲーの世界に。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away