Skip to content

Commit

Permalink
feat(docs): add cargo-pgo to PGO documentation 馃摑
Browse files Browse the repository at this point in the history
  • Loading branch information
meysam81 committed Aug 20, 2023
1 parent 484cb4e commit 15f0149
Showing 1 changed file with 22 additions and 0 deletions.
22 changes: 22 additions & 0 deletions src/doc/rustc/src/profile-guided-optimization.md
Expand Up @@ -145,3 +145,25 @@ in Clang's documentation is therefore an interesting read for anyone who wants
to use PGO with Rust.

[clang-pgo]: https://clang.llvm.org/docs/UsersManual.html#profile-guided-optimization

## Community Maintained Tools

As an alternative to directly using the compiler for Profile-Guided Optimization,
you may choose to go with `cargo-pgo`, which has an intuitive command-line API
and saves you the trouble of doing all the manual work. You can read more about
it in their repository accessible from this link: https://github.com/Kobzol/cargo-pgo

For the sake of completeness, here are the corresponding steps using `cargo-pgo`:

```bash
# Install the binary as usual: cargo install cargo-pgo
cargo pgo build
LLVM_PROFILE_FILE=./target/pgo-profiles/rustc-pgo_%m_%p.profraw ./target/x86_64-unknown-linux-gnu/release/myprogram
cargo pgo optimize
```

These steps will do the following just as before:

1. Build an instrumented binary from the source code.
2. Use the instrumentation in the binary when running it for the first time.
3. Use the instrumentation results from the last step to create an optimized binary.

0 comments on commit 15f0149

Please sign in to comment.