75

I'm trying to compile Python 3.6 on an arm based Linux machine, ./configure outputs this:

If you want a release build with all optimizations active (LTO, PGO, etc), please run ./configure --enable-optimizations.

what does --enable-optimizations do?

4

1 回答 1

75

此标志启用配置文件引导优化 (PGO) 和链接时间优化 (LTO)。

两者都是昂贵的优化,会减慢构建过程,但会显着提高速度(我记得读过的内容大约提高了 10-20%)。

关于这些究竟是做什么的讨论超出了我的知识范围,对于一个问题来说可能过于广泛。无论哪种方式,您都可以从 GCC 上的文档中阅读一些关于 LTO 的信息,该文档有一个实现,并通过阅读其 wiki 页面开始使用 PGO 。

此外,请参阅在 Python Bug Tracker 上打开的相关问题,其中添加了以下内容:

  • 问题 24915配置文件引导优化改进(更好的培训、llvm 支持等)(添加了 PGO。)
  • 问题 25702对 GCC 和 CLANG 的链接时间优化支持(添加了 LTO。)
  • 问题 26359开箱即用性能的 CPython 构建选项(将--enable-optimizations标志添加到启用上述优化的配置脚本。)

正如@Shuo 在评论中指出并在Issue 28032中所述,LTO 并不总是--enable-optimizations使用该标志启用。某些平台(取决于支持的版本gcc)将在配置脚本中禁用它。

这个标志的未来版本可能会一直启用它,所以在这里讨论它们是非常安全的。

于 2016-12-31T12:22:30.857 回答