¿Python es más rápido y liviano que C ++?

Siempre he pensado que las ventajas de Python son la legibilidad del código y la velocidad de desarrollo, pero el tiempo y el uso de la memoria no eran tan buenos como los de C ++.

Estas estadísticas me impactaron mucho.

¿Qué te dice tu experiencia sobre el uso del tiempo y la memoria de Python vs C ++?

Creo que estás leyendo esas estadísticas incorrectamente. Muestran que Python es hasta 400 veces más lento que C ++ y, con la excepción de un solo caso, Python es más como un montón de memoria. Sin embargo, cuando se trata del tamaño de la fuente, Python gana de plano.

Mis experiencias con Python muestran la misma tendencia definida de que Python es del orden de entre 10 y 100 veces más lento que C ++ al realizar cualquier procesamiento de números graves. Hay muchas razones para esto, las principales son: a) Python se interpreta, mientras que C ++ se comstack; b) Python no tiene primitivas, todo lo que incluye los tipos incorporados (int, float, etc.) son objetos; c) una lista de Python puede contener objetos de diferente tipo, por lo que cada entrada debe almacenar datos adicionales sobre su tipo. Todo esto dificulta gravemente tanto el tiempo de ejecución como el consumo de memoria.

Sin embargo, esta no es razón para ignorar a Python. Una gran cantidad de software no requiere mucho tiempo ni memoria, incluso con el factor de lentitud de 100 veces. El costo de desarrollo es donde Python gana con un estilo simple y conciso. Esta mejora en el costo de desarrollo a menudo supera el costo de recursos adicionales de memoria y CPU. Cuando no lo hace, sin embargo, entonces C ++ gana.

Todos los usos más lentos (> 100x) de Python en el tiroteo son operaciones científicas que requieren un alto conteo de GFlop / s. NO debes usar python para esos de todos modos. La forma correcta de usar python es importar un módulo que haga esos cálculos y luego pasar una tarde relajante con su familia. Esa es la forma pythonica 🙂

Mi experiencia es la misma que los puntos de referencia. Python puede ser lento y usa más memoria. Escribo mucho, mucho menos código y funciona la primera vez con mucho menos depuración. Ya que administra la memoria para mí, no tengo que hacer ningún manejo de la memoria, ahorrando horas de búsqueda de fugas en el núcleo.

¿Cuál es tu pregunta?

El tamaño de la fuente no es realmente una cosa sensata de medir. Por ejemplo, el siguiente script de shell:

 cat foobar 

es mucho más corto que sus equivalentes en Python o C ++.

También: Psyco vs. C ++ .

Sigue siendo una mala comparación, ya que nadie haría las cosas más complejas que los puntos de referencia tienden a centrarse en Python puro de todos modos. Una mejor sería comparar el rendimiento de las aplicaciones realistas, o C ++ versus NumPy, para tener una idea de si su progtwig será notablemente más lento.

El problema aquí es que tiene dos idiomas diferentes que resuelven dos problemas diferentes … es como comparar C ++ con el ensamblador.

Python es para el desarrollo rápido de aplicaciones y para cuando el rendimiento es una preocupación mínima.

C ++ no es para el desarrollo rápido de aplicaciones y hereda un legado de velocidad de C – para progtwigción de bajo nivel.

Creo que esas estadísticas muestran que Python es mucho más lento y usa más memoria para esos puntos de referencia. ¿Estás seguro de que los estás leyendo correctamente?

En mi experiencia, que es principalmente con la escritura de progtwigs vinculados a la red y al sistema de archivos en Python, Python no es significativamente más lento de lo que importa. Para ese tipo de trabajo, sus beneficios superan sus costos.

Es el mismo problema con el lenguaje de progtwigción administrado y fácil de usar como siempre: son lentos (y, a veces, comen memoria).

Estos son lenguajes para hacer control en lugar de procesar. Si tuviera que escribir una aplicación para transformar imágenes y tuviera que usar Python, también todo el procesamiento podría escribirse en C ++ y conectarse a Python a través de enlaces, mientras que la interfaz y el control del proceso serían definitivamente Python.