web-dev-qa-db-fra.com

que fait --enable-optimizations lors de la compilation de python?

J'essaie de compiler Python 3.6 sur une machine Linux basée sur un bras, ./configure sort ceci:

Si vous voulez une version compilée avec toutes les optimisations actives (LTO, PGO, etc.), lancez ./configure --enable-optimizations.

qu'est-ce que --enable-optimizations faire?

46
Yashar

Cet indicateur active l'optimisation guidée par le profil (PGO) et l'optimisation du temps de liaison (LTO).

Ce sont des optimisations coûteuses qui ralentissent le processus de construction mais génèrent une augmentation significative de la vitesse (environ 10 à 20% de ce que je me souviens avoir lu).

La discussion de ce que ces font exactement dépasse mes connaissances et est probablement trop large pour une seule question. Quoi qu'il en soit, vous pouvez en apprendre un peu plus sur LTO à partir de la documentation sur GCC qui a une implémentation correspondante et commencer à utiliser PGO en lisant sa page de wiki .

Voir également les problèmes pertinents ouverts sur le Python Bug Tracker qui les a ajoutés):

  • Issue 24915 : Améliorations de l'optimisation guidée par le profil (meilleure formation, prise en charge llvm, etc.) (PGO ajouté.)
  • Numéro 25702 : Optimisations de temps de liaison prises en charge pour GCC et CLANG (LTO ajouté.)
  • Issue 26359 : Options de compilation CPython pour des performances immédiates (Ajoute le --enable-optimizations drapeau sur le script de configuration qui active les optimisations susmentionnées.)

Comme l'a souligné @Shuo dans un commentaire et indiqué dans numéro 28032 , LTO n'est pas toujours activé avec le --enable-optimizations drapeau. Certaines plateformes ( en fonction de la version prise en charge de gcc ) la désactivent dans le script de configuration.

Cependant, il sera probablement toujours activé dans les futures versions de ce drapeau, il est donc assez sûr de parler d'eux à la fois.

48