Simple bucle

Francesc Alted falted en openlc.org
Mar Dic 16 18:16:29 CET 2003


La verdad es que no puedo menos que asombrarme de lo fácil que la gente hace
un benchmark. Lo que acabas de exponer es una prueba sintética de velocidad
a las que no se les deberia hacer mucho caso.

De todas maneras estoy de acuerdo en que son divertidas. Y lo serian aún más
si al autor del artículo se le hubiera ocurrido probar psyco, que es una
especie de byte-compiler, parecido al de Java, pero para Python, para que la
comparación hubiera sido más justa.

Aquí tienes un ejemplo de uso de psyco aplicado a este caso:

import sys
from time import time
import psyco

def test(niter, use_psyco):
    t1 = time()
    for i in xrange(niter):
        pass
    if use_psyco:
        print "Tiempo de ejecucion (con psyco):", time()-t1
    else:
        print "Tiempo de ejecucion (sin psyco):", time()-t1

niter = int(sys.argv[1])
test(niter, 0)
psyco.bind(test)  # Compilamos test() con psyco
test(niter, 1)

y, la ejecución en mi portátil P4 en 2GHz:

$ time python prova.py 20000000 0
Tiempo de ejecucion (sin psyco): 2.365052104
Tiempo de ejecucion (con psyco): 0.0294950008392

real    0m2.433s
user    0m2.390s
sys     0m0.040s

Así pues, tenemos que, en igualdad de condiciones, Python es unas 10 veces
más rápido que Java (tomando en consideración que mi portátil sea 3 veces
más rápido que el tuyo), y esto sin considerar que el tiempo de compilación
está incluido en el benchmark (por cierto, cuanto tiempo tarda tu compilador
de Java en compilar? >:-).

Evidentemente, todo esto hay que tomárselo con una pizca de sal ;-).

Saludos,

-- 
Francesc Alted




Más información sobre la lista de distribución Python-es