Мне было интересно сравнить скорость 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
за несколько прогонов, time сообщает это среднее
real 0m4.782s
user 0m4.763s
sys 0m0.010s
это для рубина, теперь python2.7 дает
real 0m11.605s
user 0m11.563s
sys 0m0.013s
В чем дело?
fibo = lambda n: int((((1 + math.sqrt(5)) / 2)**n + (1/((1 + math.sqrt(5)) / 2))**n) / math.sqrt(5) + 0.5)
- person Nick T   schedule 29.10.2010