Conversando rápidamente con un 'amix' en twitter (@Yaraher - Alvaro Pereyra) me dí con la sorpresa de que el rendimiento de Ruby se ha incrementado dramáticamente, así que lo sometí a una sencilla prueba comparándolo con Python: la archi conocida secuencia fibonacci.
El vídeo muestra una ventana de Terminator, dividida en 2 áreas horizontales y 4 verticales. En la primera sección vertical se ejecuta la secuencia fibonacci empleando Python2.6, en la segunda con Python 3.1, en la tercera con Ruby 1.8 y en la cuarta con Ruby 1.9.1.
En primer lugar las tareas se ejecutan simultáneamente, luego se ejecuta cada una individualmente y así poder apreciar su rendimiento como proceso mandatorio.
Código Python
Código Ruby
El resultado de la prueba fue una victoria absoluta para Ruby 1.9.1 (con unos impresionantes 8.xx segundos, pero solamente cuando es el proceso principal que emplea el CPU, cuando no es así el rendimiento es similar al de Python), ambas versiones de Python van muy parejas sin mucho cambio en el rendimiento (19 y 21 segundos) y si están empleando 1.8, dejen de hacerlo: es malísimo (62 segundos)
El vídeo muestra una ventana de Terminator, dividida en 2 áreas horizontales y 4 verticales. En la primera sección vertical se ejecuta la secuencia fibonacci empleando Python2.6, en la segunda con Python 3.1, en la tercera con Ruby 1.8 y en la cuarta con Ruby 1.9.1.
En primer lugar las tareas se ejecutan simultáneamente, luego se ejecuta cada una individualmente y así poder apreciar su rendimiento como proceso mandatorio.
Código Python
def fib(n):
if n == 0 or n == 1:
return n
else:
return fib(n-1) + fib(n-2)
for i in range(36):
#print "n=%d => %d" % (i, fib(i))
print ("n=",i," =>",fib(i))
Código Ruby
def fib(n)
if n == 0 || n == 1
n
else
fib(n-1) + fib(n-2)
end
end
36.times do |i|
puts "n=#{i} => #{fib(i)}"
end
El resultado de la prueba fue una victoria absoluta para Ruby 1.9.1 (con unos impresionantes 8.xx segundos, pero solamente cuando es el proceso principal que emplea el CPU, cuando no es así el rendimiento es similar al de Python), ambas versiones de Python van muy parejas sin mucho cambio en el rendimiento (19 y 21 segundos) y si están empleando 1.8, dejen de hacerlo: es malísimo (62 segundos)
Salvo que todavía el soporte en gemas y demás bibliotecas para la 1.9.1 todavía no está en lo que debería. Pero definitivamente, la velocidad es ya no un problema :)
ResponderEliminarLa velocidad ya no es un problema gracias a este feedback por parte de Nobuyoshi Nakada.
ResponderEliminarhttp://redmine.ruby-lang.org/issues/show/2277
o me equivoco?