¿qué hace --enable-optimizations al compilar python?


Estoy tratando de compilar Python 3.6 en una máquina Linux basada en arm, ./configure produce esto:

Si desea una versión de compilación con todas las optimizaciones activas (LTO, PGO, etc), por favor, ejecute ./configure --enable-optimizations.

¿Qué hace --enable-optimizations?

Author: Jim Fasarakis Hilliard, 2016-12-31

1 answers

Este indicador habilita la optimización guiada por Perfil (PGO) y la Optimización del Tiempo de Enlace (LTO).

Ambas son optimizaciones costosas que ralentizan el proceso de compilación pero producen un aumento de velocidad significativo (alrededor del 10-20% de lo que recuerdo haber leído).

La discusión de lo que estos hacen exactamente está más allá de mi conocimiento y probablemente demasiado amplia para una sola pregunta. De cualquier manera, puede leer un poco sobre LTO desde los documentos en GCC que tiene una implementación para él y para empezar con PGO, lee su página wiki.

También, vea los problemas relevantes abiertos en el Rastreador de errores de Python que agregó estos:

  • Cuestión 24915: Mejoras de optimización guiada por perfil (mejor entrenamiento, soporte llvm, etc.) (Añadido PGO.)
  • Cuestión 25702: Compatibilidad con optimizaciones de tiempo de enlace para GCC y CLANG (Añadido LTO.)
  • Cuestión 26359: Opciones de compilación de CPython para listas para usar performance (Agrega el indicador --enable-optimizations al script configure que habilita las optimizaciones antes mencionadas.)

Como señaló @Shuo en un comentario y declaró en Número 28032, LTO no está siempre habilitado con la bandera --enable-optimizations. Algunas plataformas ( dependiendo de la versión soportada de gcc) lo deshabilitará en el script de configuración.

Las versiones futuras de esta bandera probablemente siempre la tendrán habilitada, por lo que es bastante seguro hablar de ello los dos aquí.

 31
Author: Jim Fasarakis Hilliard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-24 22:02:57