text 16 Jul Recursive call: Ruby vs Python

Facciamo un piccolo test: calcoliamo Fibonacci ricorsivamente in Ruby (v1.9.1) e in Python (v2.5.1) e vediamo chi vince

Ruby Fibonacci code (f.rb)

def fib(n)
  if n == 0 || n == 1
    n
  else
    fib(n-1) + fib(n-2)
  end
end

36.times { |i| fib(i) }

Python Fibonacci code (f.py)

def fib(n):
  if n == 0 or n == 1:
    return n
  else:
    return fib(n-1) + fib(n-2)

for i in range(36):
  fib(i)

Ora lanciamo i due programmi nel seguente modo:

time ruby f.rb && time python f.py

E vediamo l’output:

real    0m9.956s
user    0m9.875s
sys     0m0.034s

real    0m24.471s
user    0m24.060s
sys     0m0.074s

Ecco Ruby impiega 9.956 secondi mentre Python 24.471 secondi!

Ruby vince nettamente su Python!!

Oh beh provate pero` questo codice in C (f.c):

int
fib(int n)
{
  if(n == 0 || n == 1)
    return n;
  else
    return fib(n-1) + fib(n-2);
}

int
main()
{
  int i;
  for(i = 0; i < 36; i++)
    fib(i);
}

Compiliamo:

 gcc f.c

Ed eseguiamo:

time ./a.out

0.546 secondi!


blog comments powered by Disqus