编译 python 时 --enable-optimizations 做什么?
what does --enable-optimizations do while compiling python?
我正在尝试在基于 arm 的 Linux 机器上编译 Python 3.6,
./configure
输出:
If you want a release build with all optimizations active (LTO, PGO, etc),
please run ./configure --enable-optimizations
.
--enable-optimizations
是做什么的?
此标志启用配置文件引导优化 (PGO) 和 Link 时间优化 (LTO)。
两者都是昂贵的优化,它们会减慢构建过程,但会产生显着的速度提升(比我记得阅读的内容高 10-20%)。
关于这些 究竟做了什么 的讨论超出了我的知识范围,对于一个问题来说可能过于宽泛。无论哪种方式,您都可以从 the docs on GCC which has an implementation for it and get a start on PGO by reading its wiki page.
中了解一些关于 LTO 的信息
此外,请参阅在 Python Bug Tracker 上打开的相关问题,添加了这些:
- Issue 24915:Profile Guided Optimization 改进(更好的训练、llvm 支持等)(添加了 PGO。)
- Issue 25702:Link 对 GCC 和 CLANG 的时间优化支持(添加了 LTO。)
- Issue 26359:CPython 开箱即用性能的构建选项(将
--enable-optimizations
标志添加到配置脚本这使得上述优化成为可能。)
正如@Shuo 在评论中指出并在 Issue 28032, LTO isn't always enabled with the --enable-optimizations
flag. Some platforms (depending on the supported version of gcc
中所述)将在配置脚本中禁用它。
这个标志的未来版本可能会一直启用它,所以在这里讨论它们是非常安全的。
我正在尝试在基于 arm 的 Linux 机器上编译 Python 3.6,
./configure
输出:
If you want a release build with all optimizations active (LTO, PGO, etc), please run
./configure --enable-optimizations
.
--enable-optimizations
是做什么的?
此标志启用配置文件引导优化 (PGO) 和 Link 时间优化 (LTO)。
两者都是昂贵的优化,它们会减慢构建过程,但会产生显着的速度提升(比我记得阅读的内容高 10-20%)。
关于这些 究竟做了什么 的讨论超出了我的知识范围,对于一个问题来说可能过于宽泛。无论哪种方式,您都可以从 the docs on GCC which has an implementation for it and get a start on PGO by reading its wiki page.
中了解一些关于 LTO 的信息此外,请参阅在 Python Bug Tracker 上打开的相关问题,添加了这些:
- Issue 24915:Profile Guided Optimization 改进(更好的训练、llvm 支持等)(添加了 PGO。)
- Issue 25702:Link 对 GCC 和 CLANG 的时间优化支持(添加了 LTO。)
- Issue 26359:CPython 开箱即用性能的构建选项(将
--enable-optimizations
标志添加到配置脚本这使得上述优化成为可能。)
正如@Shuo 在评论中指出并在 Issue 28032, LTO isn't always enabled with the --enable-optimizations
flag. Some platforms (depending on the supported version of gcc
中所述)将在配置脚本中禁用它。
这个标志的未来版本可能会一直启用它,所以在这里讨论它们是非常安全的。