Bajo nivel (C++) vs Alto nivel (Python)

Fecha: April 6th, 2008 | Categoría: Python | 12 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.


12 Comments on “Bajo nivel (C++) vs Alto nivel (Python)”

  1. 1 meneame.net said at 2:31 pm on April 18th, 2008:

    Comparacion de Performance: C++ vs Python…

    ¿Qué pasa al hacer el mismo programa en dos lenguajes distintos? Comparacion de la velocidad de ejecución de un programa implementado dos veces: en C++ y en Python. La diferencia es considerable: 2 ordenes de magnitud….

  2. 2 Manolo el del Bombo said at 11:19 pm on May 9th, 2008:

    Es normal, Phyton es un lenguaje interpretado como bien dices de alto nivel (muy, muy alto nivel), cada vez que se ejecuta el programa tiene que ir al interprete y línea a línea ejecutar código. Esto había visto por algún sitio que hacía que provocaba que los programas interpretados fueran entre 2 y 50 veces más lentos que los compilados!!!, pero en este más que nada, la sencillez de aprender y lo mucho que se puede hacer con dos líneas (según tú imaginación) hace que merezca la pena.

  3. 3 Manolo el del Bombo said at 11:21 pm on May 9th, 2008:

    … perdón por el “que hacía que provocaba”

  4. 4 rosa said at 12:23 pm on March 13th, 2009:

    euu uachin , nos paramos de mano loco !!!!!!!!!!!!! :P

  5. 5 martin said at 12:27 pm on March 13th, 2009:

    EE MANGA DE GILES SON ALTOS UAHCOS USTEDES :p NERDS DE MIERDA:)”

  6. 6 Teo said at 8:06 pm on September 1st, 2009:

    teodoro@teodoro-laptop:~$ time python time.py
    204 288

    real 0m2.506s
    user 0m2.440s
    sys 0m0.040s
    teodoro@teodoro-laptop:~$ time ./time

    real 0m0.029s
    user 0m0.024s
    sys 0m0.004s

    Aunque Python sea muy bonito para programar, por ser de alto nivel se desperdicia tiempo en el procesador, y aunque los procesadores actuales tenga una gran velocidad, es un deber de los programadores cuidar los recursos que requieren sus programas.
    Mi conclusión: Usar C++

  7. 7 Baku said at 3:56 pm on September 16th, 2009:

    @Teo: Ahora comprendo a Matz cuando habla de Ruby.

    Yo creo que los programadores se enfocan mucho al tema de los recursos “si hago esto será mas eficiente”, “si hago esto otro, gastaré menos RAM”… y sinceramente, le quita la magia a programar.

    Yo creo que lo mas importante de un lenguaje, es las posibilidades que tenga para que el programador desarrolle su creatividad.

    Python es un lenguaje que poco tiene que pedirle a los lenguajes de “industria”; la mayoría de las máquinas contemporáneas tienen la capacidad para correr un programa en Python sin muchos lios.

    Salvo que vayas a programar un Office, o un programa muy extenso, yo creo que Python cumple las espectativas para desarrollar software de calidad. Si te das cuenta además, en la esfera Linux, hay muchísimos programas creados en Python, y van de fábula.

  8. 8 Revisión: Python vs C++ | estebanordano.com.ar said at 8:05 pm on September 22nd, 2009:

    [...] Update a http://estebanordano.com.ar/bajo-nivel-c-vs-alto-nivel-python/ [...]

  9. 9 eordano said at 8:05 pm on September 22nd, 2009:

    Post actualizado:
    http://estebanordano.com.ar/revision-python-vs-c/

  10. 10 Zequez said at 11:47 pm on February 5th, 2010:

    Yo prefiero C++, siempre quiero que mis programas anden con el máximo rendimiento posible, incluso preferiría usar ASM en algunos scripts xD.

  11. 11 eordano said at 10:23 am on February 6th, 2010:

    @Zequez y te resulta productivo? cuánto demorás en programar cada script?

    El “machine time” se vuelve cada vez más y más barato. Tu tiempo vale mucho más.

  12. 12 Juan said at 1:42 am on March 27th, 2010:

    c++ bajo nivel??, bajo nivel???, low level??, estan seguros de lo que dicen?


Leave a Reply