mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-28 23:31:56 +00:00
25308d30a2
Local PGO builds now use 3-tier machinery under the hood. Instead of a single object directory that gets cleaned in between the instrumented and profile-use builds, now the instrumented build uses a separate '${objdir}/instrumented' directory. This makes it easier to handle within mach since we can drive the two builds with environment variables and keep all build artifacts separate, without needing to do manual cleanup in between. Differential Revision: https://phabricator.services.mozilla.com/D50098 --HG-- extra : moz-landing-system : lando
29 lines
790 B
ReStructuredText
29 lines
790 B
ReStructuredText
.. _pgo:
|
|
|
|
===========================
|
|
Profile Guided Optimization
|
|
===========================
|
|
|
|
:abbr:`PGO (Profile Guided Optimization)` is the process of adding
|
|
probes to a compiled binary, running said binary, then using the
|
|
run-time information to *recompile* the binary to (hopefully) make it
|
|
faster.
|
|
|
|
How PGO Builds Work
|
|
===================
|
|
|
|
The supported interface for invoking a PGO build is to add ``MOZ_PGO=1`` to
|
|
configure flags and then build. e.g. in your mozconfig::
|
|
|
|
ac_add_options MOZ_PGO=1
|
|
|
|
Then::
|
|
|
|
$ ./mach build
|
|
|
|
This is roughly equivalent to::
|
|
|
|
#. Perform a build with *--enable-profile-generate* in $topobjdir/instrumented
|
|
#. Perform a run of the instrumented binaries with build/pgo/profileserver.py
|
|
#. Perform a build with *--enable-profile-use* in $topobjdir
|