¿Por qué Python es ineficiente?
Python es un lenguaje de programación elegante. Hoy en día, con el rápido desarrollo de la inteligencia artificial, la computación en la nube y los big data, Python ha atraído la atención de todos los ámbitos de la vida, incluidos Alibaba, Sohu, Zhihu y Tencent nacionales. , NetEase, Tudou, Sina y Google extranjero, Dropbox, Facebook, Redhat, Uber, etc. están utilizando Python a gran escala para completar diversas tareas.
Python se está volviendo cada vez más utilizado y muy popular, sin duda porque tiene muchas ventajas, pero Python también tiene una desventaja importante. En comparación con el lenguaje C,
La eficiencia operativa de Python es baja. , entonces ¿cuál es la causa?
1. Python es un lenguaje dinámico
Un lenguaje dinámico es un tipo de lenguaje que puede cambiar su estructura en tiempo de ejecución. Por ejemplo, se pueden introducir nuevas funciones, objetos y códigos. y las funciones existentes se pueden eliminar u otros cambios estructurales, este tipo de lenguaje es más animado, pero es inevitable que la incertidumbre en el tiempo de ejecución también afecte la eficiencia de la ejecución.
2. Python se interpreta y ejecuta.
En comparación con los programas escritos en lenguaje compilado C, Python es un lenguaje de ejecución interpretado. El proceso de ejecución es que cuando Python ejecuta un programa de archivo, Python interpreta El intérprete de Python convierte el código fuente en código de bytes, que luego es ejecutado por el intérprete de Python. Cada vez que se ejecuta, debe convertirse en código de bytes y luego una máquina virtual convierte el código de bytes en lenguaje de máquina antes de que pueda ejecutarse en el hardware. En comparación con los lenguajes compilados, el proceso es más complicado y el rendimiento definitivamente se verá afectado. . Influencia.
3. Todo en Python es un objeto
Python es un lenguaje de programación orientado a objetos. Su concepto de diseño es que todo es un objeto, como números, cadenas, tuplas, listas. , diccionarios, funciones, métodos, clases, módulos, etc. son todos objetos, incluido el código. Cada objeto necesita mantener un recuento de referencias, por lo que se agrega trabajo adicional y el rendimiento se ve afectado.
4. Python GIL
GIL es el punto más criticado de Python. Debido a GIL, los subprocesos múltiples en Python no pueden ser realmente concurrentes, incluso en un solo subproceso. Tiene un gran impacto en el rendimiento, porque Python intentará cambiar de hilo cada vez que ejecute 100 códigos de operación, lo que afectará la eficiencia operativa de Python.
5. Recolección de basura
Python adopta estrategias de marcado y recolección de basura generacional. Cada vez que ocurre la recolección de basura, el programa en ejecución se interrumpirá, lo que provocará las llamadas congelaciones y afectará la eficiencia. .