Pregunta

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 impresionaron mucho.

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

¿Fue útil?

Solución

Creo que estás leyendo esas estadísticas incorrectamente. Muestran que Python es hasta 400 veces más 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 al máximo.

Mis experiencias con Python muestran la misma tendencia definida de que Python está en el 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 compila; 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 el consumo de tiempo de ejecución y de memoria.

Sin embargo, esta no es razón para ignorar 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. Sin embargo, cuando no lo hace, entonces C ++ gana.

Otros consejos

Todos los usos más lentos (> 100x) de Python en el tiroteo son operaciones científicas que requieren un alto recuento 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. Eso es la forma pitónica :)

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 ninguna gestión de la memoria, ahorrando horas de perseguir las fugas del núcleo.

¿Cuál es tu pregunta?

El tamaño de la fuente no es realmente una medida 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 los puntos de referencia de las cosas que más se centran 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 programa será notablemente más lento.

El problema aquí es que tienes 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 ++ es no para el desarrollo rápido de aplicaciones y hereda un legado de velocidad de C: para programación de bajo nivel.

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

En mi experiencia, que es principalmente cuando se escriben programas 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 programación administrado y fácil de usar que 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 utilizar Python, también se podría escribir todo el procesamiento en C ++ y conectarlo a Python mediante enlaces, mientras que la interfaz y el control del proceso serían definitivamente Python.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top