diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /build/docs/pgo.rst | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'build/docs/pgo.rst')
-rw-r--r-- | build/docs/pgo.rst | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/build/docs/pgo.rst b/build/docs/pgo.rst new file mode 100644 index 000000000..51d03c625 --- /dev/null +++ b/build/docs/pgo.rst @@ -0,0 +1,40 @@ +.. _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 evaluate the +*build* target of client.mk with *MOZ_PGO* defined. e.g.:: + + $ make -f client.mk MOZ_PGO=1 + +This is equivalent to:: + + $ make -f client.mk profiledbuild + +Which is roughly equivalent to: + +#. Perform a build with *MOZ_PROFILE_GENERATE=1* and *MOZ_PGO_INSTRUMENTED=1* +#. Package with *MOZ_PGO_INSTRUMENTED=1* +#. Performing a run of the instrumented binaries +#. $ make maybe_clobber_profiledbuild +#. Perform a build with *MOZ_PROFILE_USE=1* + +Differences between toolchains +============================== + +There are some implementation differences depending on the compiler +toolchain being used. + +The *maybe_clobber_profiledbuild* step gets its name because of a +difference. On Windows, this step merely moves some *.pgc* files around. +Using GCC or Clang, it is equivalent to a *make clean*. |