我試圖編譯的Python 3.6的基於ARM的Linux機器, ./configure
輸出這樣的:--enable-optimizations在編譯python時做了什麼?
如果你想有一個發佈版本與所有活動優化(LTO,PGO等), 請運行
./configure --enable-optimizations
。
--enable-optimizations
是做什麼用的?
我試圖編譯的Python 3.6的基於ARM的Linux機器, ./configure
輸出這樣的:--enable-optimizations在編譯python時做了什麼?
如果你想有一個發佈版本與所有活動優化(LTO,PGO等), 請運行
./configure --enable-optimizations
。
--enable-optimizations
是做什麼用的?
此標誌啓用簡檔指導優化(PGO)和鏈接時間優化(LTO)。
兩者都是昂貴的優化,這會減慢構建過程,但會產生顯着的速度提升(從我記憶中的讀數大約爲10-20%)。
關於這些究竟做什麼的討論超出了我的理解,可能對於單個問題來說過於寬泛。無論哪種方式,您都可以從the docs on GCC which has an implementation for it中瞭解一下LTO,並通過閱讀its wiki page開始PGO。
而且,看到開上添加了這些Python的Bug跟蹤的相關問題:
--enable-optimizations
標誌配置腳本使上述優化。)正如@Shuo在評論中指出,並在Issue 28032指出,LTO並不總是與的--enable-optimizations
標誌啓用。某些平臺(depending on the supported version of gcc
)將在配置腳本中禁用它。
此標誌的未來版本可能會始終啓用它,因此在這裏討論它們是非常安全的。
根據https://bugs.python.org/issue28032,enable-優化只適用於PGO,而不適用於LTO。 – Shuo
@Shuo好抓,似乎打破了一些buildbots。我已經更新了這個問題來解決這個問題。 –
我讀到的是它開啓了一個叫做'Profile Guided Optimizations'的配置文件。這種優化需要很長時間才能配置,但生成的Python二進制解釋器在執行Python代碼時速度提高了10%。檢查此參考(實際上是github問題) - [問題#160](https://github.com/docker-library/python/issues/160) –