语法类似Ruby的Crystal性能提高11倍 - ptimofeev


什么是Crystal编程语言?这是一种静态类型的,已编译的,面向对象的语言,其语法在很大程度上受到了Ruby的启发。
其网站上的承诺是该语言的速度与C一样快,与Ruby一样流畅。这句话听起来令人兴奋,并且使您想检查Crystal与Ruby相比有多快。当然,这不是一个公平的比较,因为一种是编译语言,另一种是解释语言)。
让我们用Ruby和Crystal编写一些代码,以生成给定数字的斐波那契数列。然后,我们可以看到在序列中找到第46个数字(即1,836,311,903)需要花费多少时间。您将在稍后看到我为什么选择此号码。

Ruby:

def fibonacci(n)
   return n if n < 2
   fibonacci(n-1) + fibonacci(n-2)
end

puts fibonacci(46)

Crystal:

def fibonacci(n)
   return n if n < 2
   fibonacci(n-1) + fibonacci(n-2)
end

puts fibonacci(46)

我的机器上的结果:
语言运行内存使用情况

Ruby 2.6.5p114(2019-10-01修订版67812)运行时间:1:54.46分钟 内存:16.10M
Crystal0.34.0(2020-04-07)  运行时间:12.617秒   内存:1.87M

Crystal版本快11倍。

其他资源