python python-3.x lua

loop en python3 mucho más lento que python2



python-3.x lua (1)

Mi proyecto implica un pesado bucle sobre stocks y cálculos estadísticos. Fue escrito en python3. A medida que los datos crecen, creo que el rendimiento del script es bastante lento. Intenté con lua debido a su fama de velocidad e intenté hacer algunas pruebas de la siguiente manera, también en comparación con python2 como punto de referencia.

Solo un bucle simple como código de prueba:

versión lua

for i=1,100,1 do for j=1,100,1 do print(i*j) end end

versión de python

for i in range(1,101): for j in range(1,101): print(i*j)

los resultados son los siguientes (intenté un tiempo y escogí lo mejor para cada grupo):

lua5.2.3: 0.461sec
python2.7.6: 0.429sec
python3.4: 0.85sec

Lo que me sorprendió es que python2 es aproximadamente 2 veces más rápido que python3.

¿Por qué? e incluso con un simple bucle?

Pensé que python3 es el futuro de python, así que aprendí python3 desde el principio.

¿Realmente necesito exportar mi código a python2, o cualquier modificación que pueda con bucles para mejorar su rendimiento en python3?


He aumentado tus bucles y deshabilitado la salida (es mucho más lento cuando se muestra).
Y no soy un experto en pitones. Pero puede acelerar su código python con el compilador jit pypy, por ej. (Pero aún más lento que luajit). Además, este tema sobre python3 y python2 podría ser interesante para usted también.

pitón

r=0 for i in range(1,10000): for j in range(1,10000): r=i*j

python3

$ time python3 loop.py real 0m16.612s user 0m16.610s sys 0m0.000s

python2

$ time python2 loop.py real 0m11.218s user 0m11.190s sys 0m0.007s

pypy

$ time pypy loop.py real 0m0.923s user 0m0.900s sys 0m0.020s

lua

local r=0 for i=1,10000,1 do for j=1,10000,1 do r=i*j end end

lua 5.2.3

$ time lua loop.lua real 0m1.123s user 0m1.120s sys 0m0.000s

luajit

$ time luajit loop.lua real 0m0.074s user 0m0.073s sys 0m0.000s