bpo-24318: Rewrite the README PGO section. (#6863)

* bpo-24318: Rewrite the README PGO section.

Merged from a phone on an airplane. :)
This commit is contained in:
Gregory P. Smith 2018-05-16 10:34:47 -05:00 committed by GitHub
parent 4e81296b18
commit 93f9a8a5af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 15 deletions

View File

@ -93,25 +93,26 @@ Profile Guided Optimization
^^^^^^^^^^^^^^^^^^^^^^^^^^^
PGO takes advantage of recent versions of the GCC or Clang compilers. If used,
either via ``configure --enable-optimizations`` above or by manually running
``make profile-opt`` regardless of configure flags it will do several steps.
either via ``configure --enable-optimizations`` or by manually running
``make profile-opt`` regardless of configure flags, the optimized build
process will perform the following steps:
First, the entire Python directory is cleaned of temporary files that may have
resulted in a previous compilation.
The entire Python directory is cleaned of temporary files that may have
resulted from a previous compilation.
Then, an instrumented version of the interpreter is built, using suitable
compiler flags for each flavour. Note that this is just an intermediary step.
The binary resulting from this step is not good for real life workloads as
it has profiling instructions embedded inside.
An instrumented version of the interpreter is built, using suitable compiler
flags for each flavour. Note that this is just an intermediary step. The
binary resulting from this step is not good for real life workloads as it has
profiling instructions embedded inside.
After this instrumented version of the interpreter is built, the Makefile will
automatically run a training workload. This is necessary in order to profile
the interpreter execution. Note also that any output, both stdout and stderr,
that may appear at this step is suppressed.
After the instrumented interpreter is built, the Makefile will run a training
workload. This is necessary in order to profile the interpreter execution.
Note also that any output, both stdout and stderr, that may appear at this step
is suppressed.
Finally, the last step is to rebuild the interpreter, using the information
collected in the previous one. The end result will be a Python binary that is
optimized and suitable for distribution or production installation.
The final step is to build the actual interpreter, using the information
collected from the instrumented one. The end result will be a Python binary
that is optimized; suitable for distribution or production installation.
Link Time Optimization