(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
```
