2016-12-31 14 views
27

Ben bir kol dayanan Linux makinesini Python 3.6 derlemek çalışıyorum, ./configure çıkışlar bu: Bir serbest bırakma aktif tüm optimizasyon (LTO, PGO, vs) ile inşa istiyorsanız--enable-optimizasyonlar python'u derlerken ne yapar?

, ./configure --enable-optimizations çalıştırın .

--enable-optimizations ne yapar?

+4

Okuduğum şey, "Profil Güdümlü Optimizasyonlar" adlı bir şeyi açıyor olmasıdır. Bu tür bir optimizasyonun yapılandırılması uzun zaman alır, ancak ortaya çıkan python ikili yorumlayıcısı Python kodunun yürütülmesinde% 10 daha hızlıdır. Bu referansı kontrol edin (aslında bir github sorunu) - [Sayı # 160] (https://github.com/docker-library/python/issues/160) –

cevap

26

Bu bayrak, Profil yönlendirmeli optimizasyon (PGO) ve Bağlantı Zaman Optimizasyonu (LTO) sağlar.

Her ikisi de, oluşturma işlemini yavaşlatan ancak önemli bir hız artışı sağlayan (okuma yaptığımdan% 10-20 civarında) pahalı optimizasyonlardır.

Bu 'un tam olarak ne yaptığını tartışmak bilgimin dışındadır ve muhtemelen tek bir soru için çok geniştir. Her iki durumda da, the docs on GCC which has an implementation for it'dan LTO hakkında bir şeyler okuyabilir ve its wiki page'u okuyarak PGO'da bir başlangıç ​​yapabilirsiniz.

  • Issue 24915: Profil Güdümlü Optimizasyon iyileştirmeler (daha iyi eğitim, LLVM desteği, vs) (. Katma PGO)
  • Ayrıca

    , bu eklenen Python Bug Tracker açılan ilgili sorunları görmek

  • Issue 25702: GCC ve clang için Bağlantı Zaman Optimizasyonları destek
  • Issue 26359 (Katma LTO.): CPython dışı kutu gerçekleştirmek için seçenekler oluşturmak ance (yukarıda bahsedilen optimizasyonlar sağlayan yapılandırmak komut dosyasına --enable-optimizations bayrağı ekler.)
  • yorumunda @Shuo tarafından işaret ve Issue 28032 belirtildiği üzere

, LTO --enable-optimizations bayrağıyla etkin daima değil olduğunu . Bazı platformlar (depending on the supported version of gcc), yapılandırma komut dosyasında bunu devre dışı bırakır.

Bu bayrağın gelecekteki sürümleri muhtemelen her zaman etkin olsa da, bu yüzden burada hakkında konuşmak oldukça güvenlidir.

+3

https://bugs.python.org/issue28032 başına, etkinleştir optimizasyonlar sadece LTO değil, PGO uyguluyor. – Shuo

+0

@Shuo iyi yakalama, bazı yapı robotları kırdı gibi görünüyor. Bu sorunu çözmek için soruyu güncelledik. –