Skip to content

Evaluate using Profile-Guided Optimization (PGO) and LLVM BOLT #1077

@zamazan4ik

Description

@zamazan4ik

Hi!

Recently I checked Profile-Guided Optimization (PGO) improvements on multiple projects. The results are here. E.g. PGO results for LLVM-related tooling are here. According to the tests, PGO usually helps with the compiler and compiler-like workloads (like static analysis) - e.g. Clang gets +20% compilation speed with PGO. That's why I think trying to optimize the Rust-Code-Analysis tool with PGO can be a good idea.

I can suggest the following action points:

  • Perform PGO benchmarks on Rust-Code-Analysis. And if it shows improvements - add a note about possible improvements in Rust-Code-Analysis's tool performance with PGO.
  • Providing an easier way (e.g. a build option) to build scripts with PGO can be helpful for the end-users and maintainers since they will be able to optimize the Rust-Code-Analysis tool according to their own workloads.
  • Optimize pre-built binaries

Testing Post-Link Optimization techniques (like LLVM BOLT) would be interesting too (Clang and Rustc already use BOLT as an addition to PGO) but I recommend starting from the usual PGO.

I recommend trying to use PGO with cargo-pgo for the Rust code.

Here are some examples of how PGO optimization is integrated in other projects:

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions