我想比较 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
这里是Ruby代码
#!/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
这是关于Ruby的,现在Python2.7也提供了类似的功能。
real 0m11.605s
user 0m11.563s
sys 0m0.013s
Whats the deal?
fibo = lambda n: int((((1 + math.sqrt(5)) / 2)**n + (1/((1 + math.sqrt(5)) / 2))**n) / math.sqrt(5) + 0.5)
- Nick T