Bajo nivel (C++) vs Alto nivel (Python)
Fecha: April 6th, 2008 | Categoría: Python | 13 Comments »Tengo un amigo siguiendo Ingenieria en Sistemas en la UTN. Para un trabajo práctico, había un problema que no le salía y me pidió ayuda. Yo estoy bastante acostumbrado a las competencias de programación en lenguajes de bajo nivel (C++ es mi preferido), pero él necesitaba el código en python. Lo implementé sin problemas (debugearlo fué otra cosa) y bueno, eventualmente dimos con la solución. De curioso nomás, implementé el mismo programa en C++... ¿Puede ser que la diferencia sea muy grande?
Estos fueron los tiempos, medidos con GNU time
tibix@dEliRiUm:~$ time python cucu.py
204 288
real 0m19.958s
user 0m9.865s
sys 0m0.068s
tibix@dEliRiUm:~$ time python cucu.py
204 288
real 0m18.456s
user 0m9.657s
sys 0m0.060s
tibix@dEliRiUm:~$ time g++ cucu.cpp -o cucu
real 0m6.971s
user 0m2.432s
sys 0m0.268s
tibix@dEliRiUm:~$ time ./cucu
204 288
real 0m0.218s
user 0m0.076s
sys 0m0.004s
Aclaro que corrí el programa dos veces en Python para medir la diferencia entre codigo sin "pre-compilacion" y codigo precompilado. Además quiero remarcar que mi computadora es muy lenta (Pentium III a 500 Mhz) por lo que compilar demora mucho... Pero por suerte que sea lenta me ayudó a darme cuenta la diferencia (Imaginense si tuviera un Quad core de Intel corriendo por encima de 3 ghzs... que el programa en python demore menos que la sensibilidad del programa gnu time (0.001s) no me sirve)
¿No les parece que la diferencia es abrumante? 20 segundos para el programa en Python, 0.2 (dos décimas de segundo) + el tiempo de compilado para el programa en C++!
Mi amigo (que es más amigo de Python) me replicó: ¿Y cuanto demoraste en programarlo? Y yo sabía que él tenía razon. Cronometré cuanto tiempo demoré en escribir de nuevo los problemas (sabiendo la estructura básica). La implementación en Python tomó 13 líneas, mientras que la de C++ tomó 25.
Python: 92.42 segundos
C++: 112.79 segundos
Redondeando, Python es 25% más rapido de escribir que C++ y C++ es 33% más lento que Python... Estando yo mucho más acostumbrado a escribir C++ que Python. (Confesión: en Python me demoré al poner los dos puntos despues de los bucles y los if, y borrando los paréntesis en el mismo tipo de líneas) Y no me quiero ni imaginar al escribir una clase, funciones, bucles largos....
Mi conclusión: Usar python.
