¿Qué hace la optimización de Python(-O o PYTHONOPTIMIZE)?
optimization python-3.x (1)
Los documentos solo dicen que el intérprete de Python realiza "optimizaciones básicas", sin entrar en ningún detalle. Obviamente, depende de la implementación, pero ¿hay alguna manera de hacerse una idea de qué tipo de cosas se pueden optimizar y cuánto ahorro de tiempo de ejecución podría generar?
¿Hay alguna desventaja de usar -O?
Lo único que sé es que -O inhabilita la assert
, pero presumiblemente no se debe usar assert
para las cosas que aún podrían salir mal en la producción.
En Python 2.7, -O
tiene el siguiente efecto:
- la extensión del código de bytes cambia a
.pyo
- sys.flags.optimize se establece en 1
-
__debug__
es falso - afirma que no se ejecuta
Además, -OO
tiene el siguiente efecto:
- sys.flags.optimize se establece en 2
- las cadenas de doc no están disponibles
Para verificar el efecto para una versión diferente de CPython, grep el código fuente para Py_OptimizeFlag
.
Enlace a la documentación oficial: https://docs.python.org/2.7/tutorial/modules.html#compiled-python-files