我对比较 ruby 速度和 python 很感兴趣,所以我采用了最简单的递归计算,即打印斐波那契数列。
这是python代码
#!/usr/bin/python2.7
def fib(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fib(n-1)+fib(n-2)
i = 0
while i < 35:
print fib(i)
i = i + 1
这是红宝石代码
#!/usr/bin/ruby
def fib(n)
if n == 0
return 0
elsif n == 1
return 1
else
fib(n-1)+fib(n-2)
end
end
i = 0
while (i < 35)
puts fib(i)
i = i + 1
end
在几次运行中,时间报告了这个平均值
real 0m4.782s
user 0m4.763s
sys 0m0.010s
那是红宝石,现在python2.7给出
real 0m11.605s
user 0m11.563s
sys 0m0.013s
这是怎么回事?