在编译python时,–enable-optimizations是做什么的?

我试图在基于arm的Linux机器上编译Python 3.6, ./configure输出:

如果你想要所有的优化活动(LTO,PGO等)的发布版本,请运行./configure --enable-optimizations

--enable-optimizations做什么的?

该标志启用简介指导优化(PGO)和链接时间优化(LTO)。

两者都是昂贵的优化,减缓构建过程,但产生了显着的速度提升(大约10-20%,从我记得读到)。

对于这些事情的讨论超出了我的理解范围,对于一个单一的问题可能过于宽泛。 无论哪种方式,你可以从GCC上的文档中读一些有关LTO 的文档,并且通过阅读它的wiki页面来开始PGO。

另外,请参阅在Python Bug Tracker上打开的相关问题:

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

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

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