python linux python-3.x configure python-3.6

¿Qué hace--enable-optimizations hacer al compilar python?



linux python-3.x (1)

Este indicador habilita la optimización guiada por perfil (PGO) y la optimización de tiempo de enlace (LTO).

Ambas son costosas optimizaciones que ralentizan el proceso de construcció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, es demasiado amplia para una sola pregunta. De cualquier manera, puede leer un poco acerca de LTO en los documentos en GCC que tienen una implementación y comenzar con PGO leyendo su página wiki .

También, vea los problemas relevantes abiertos en el Python Bug Tracker que agregó estos:

  • Problema 24915 : Mejoras en la optimización guiada del perfil (mejor capacitación, soporte llvm, etc.) (PGO agregado).
  • Problema 25702 : compatibilidad de las optimizaciones de tiempo de enlace para GCC y CLANG (LTO agregado).
  • Problema 26359 : opciones de compilación de CPython para un rendimiento inmediato (agrega el indicador --enable-optimizations al script de configuración que habilita las optimizaciones antes mencionadas).

Como lo señaló @Shuo en un comentario y se indicó en el problema 28032 , LTO no siempre está habilitado con el indicador --enable-optimizations . Algunas plataformas ( según la versión compatible de gcc ) lo deshabilitarán en el script de configuración.

Sin embargo, las versiones futuras de este indicador probablemente siempre lo tendrán habilitado, por lo que es bastante seguro hablar de ambos aquí.

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

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

¿Qué hace --enable-optimizations ?