forked from mirrors/gecko-dev
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
28 lines
790 B
ReStructuredText
28 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
|