Various materials about Profile Guided Optimization and other similar stuff like AutoFDO, Bolt, etc.
558
2 commits
updated Oct 18, 2026
Various materials about Profile Guided Optimization (PGO) and other similar stuff like AutoFDO, Bolt, etc.
There is an (unfinished) article about all the details about PGO, PLO, etc. - link. With high chance, it will answer (almost) all your questions about PGO and PLO.

Also, you could find PDO (Profile Directed Optimization), FDO (Feedback Driven Optimization), FBO (Feedback Based Optimization), PDF (Profile Directed Feedback), PBO (Profile Based Optimization) - do not worry, that's just a PGO but with a different name.
Additionally, I need to mention Link-Time Optimization (LTO) since usually PGO is applied after LTO (since usually LTO is easier to enable and it brings significant performance and/or binary size improvements). PGO does not replace LTO but complements it. More information about LTO can be found in lto.md.
Here I collect links to the articles/benchmarks/etc. with PGO on multiple projects (with numbers!).
rustc compiler):
llvm-mingw benches: GitHub commentemsdk benchmarks: GitHub commentgo compiler):
dex2oat: Mediumredb, sled, sanakirja): GitHub commentserde_json, rustc_serialize, simd-json): GitHub issuexml-rs: GitHub issuequick-xml: GitHub issueroxmltree: GitHub issuetonic: GitHub issuetantivy: GitHub issuemaster branch on 60bfb73351f0412c95b8ba2afe75e988514470a6 commithighs ../check/instances/greenbea.mps workloadrinja, minijinja, tera, liquid, handlebars, askama): GitHub commentBelow you can find some examples of where and how PGO is integrated into different projects.
Here we collect projects where PGO is described as an optimization option in the documentation:
Possibly other compilers support PGO too. If you know any, please let me know.
Here we collect and track PGO integrations into build systems:
b_pgo in the docs).profile key the in the package.yml format will perform an automatic PGO build docs. (Example)workload key in the stone.yaml format will perform an automatic PGO build TODO: no docs available?Check "are_we_pgo_yet.md" file in the repo to check the PGO status in a project.
Here I collect all results by applying LLVM BOLT to the projects (with numbers).
Just a list of BOLT-related issues in different projects. So you can estimate the BOLT state in your favorite open-source product.
Even if PGO is supported by a project, it does not mean that your favorite Linux distro builds this project with PGO enabled. For this there are a lot of reasons: maintainer burden (because we are humans (yet)), build machines burden (in general you need to compile twice), reproducibility issues (like profile is an additional input to the build process and you need to make it reproducible), a maintainer just don't know about PGO, etc.
So here I will try to collect information about the PGO status across the Linux distros for the projects that support PGO in the upstream. If you didn't find your distro - don't worry! Just check it somehow (probably in some chats/distros' build systems, etc.) and report it here (e.g. via Issues) - I will add it to the list.
2414Here we track LLVM BOLT enablement across various projects in various OS-specific build scripts:
Meta-issues about PGO and LLVM BOLT usage in different OSs and package managers:
cpython build: link.profraw internal details: blogI spent some time on giving talks about PGO at different conferences. Multiple times people were asking me to share slides/videos. Here they are.
Few notes about them:
None of this talks contains all the material from this repository since it's impossible to cover all PGO nuances during a talk at a conference. That's why reading the article is highly recommended anyway.
You can see that multiple talks have the same or almost the same content. That's fine since different conferences usually have different people that didn't listen talks from other conferences. For you it means that you don't need to watch / listen all the presentations. But if you want - you are welcome!
TechSpot 2024 "Performance meetup" (Warsaw, Poland), “Profile-Guided Optimization (PGO): 101” (video, slides)
Winglang Community Meeting March 2024 (Online), “Profile-Guided Optimization (PGO) for Winglang” (slides)
Tech Internals Conf 2024 (Cyprus), “Profile-Guided Optimization (PGO): (Ab)using it for fun and profit” (video, slides)
OxidizeConf 2024 (Berlin, Germany), “Profile-Guided Optimization (PGO) in Rust - 101” (video, slides)
RustFest 2024 (Zurich, Switzerland), “Profile-Guided Optimization (PGO) in Rust: unknown parts” (slides)
p99conf 2024 (Online), “Profile-Guided Optimization (PGO): (Ab)using it for Fun and Profit” (video, slides)
RustLab 2024 (Florence, Italy), “Profile-Guided Optimization (PGO) for Rust applications: Practical Guide” (video, slides)
If you have an example where PGO shines (and where doesn't) - please open an issue and/or PR to the repo. It's important to collect as many as possible showcases about PGO!
(top 24 of 54)
1,130 followers · starred Apr 2026
163 followers · starred Nov 2024
339 followers · starred May 2024
481 followers · starred Nov 2023
Various materials about Profile Guided Optimization and other similar stuff like AutoFDO, Bolt, etc.
558
2 commits
updated Oct 18, 2026
Various materials about Profile Guided Optimization (PGO) and other similar stuff like AutoFDO, Bolt, etc.
There is an (unfinished) article about all the details about PGO, PLO, etc. - link. With high chance, it will answer (almost) all your questions about PGO and PLO.

Also, you could find PDO (Profile Directed Optimization), FDO (Feedback Driven Optimization), FBO (Feedback Based Optimization), PDF (Profile Directed Feedback), PBO (Profile Based Optimization) - do not worry, that's just a PGO but with a different name.
Additionally, I need to mention Link-Time Optimization (LTO) since usually PGO is applied after LTO (since usually LTO is easier to enable and it brings significant performance and/or binary size improvements). PGO does not replace LTO but complements it. More information about LTO can be found in lto.md.
Here I collect links to the articles/benchmarks/etc. with PGO on multiple projects (with numbers!).
rustc compiler):
llvm-mingw benches: GitHub commentemsdk benchmarks: GitHub commentgo compiler):
dex2oat: Mediumredb, sled, sanakirja): GitHub commentserde_json, rustc_serialize, simd-json): GitHub issuexml-rs: GitHub issuequick-xml: GitHub issueroxmltree: GitHub issuetonic: GitHub issuetantivy: GitHub issuemaster branch on 60bfb73351f0412c95b8ba2afe75e988514470a6 commithighs ../check/instances/greenbea.mps workloadrinja, minijinja, tera, liquid, handlebars, askama): GitHub commentBelow you can find some examples of where and how PGO is integrated into different projects.
Here we collect projects where PGO is described as an optimization option in the documentation:
Possibly other compilers support PGO too. If you know any, please let me know.
Here we collect and track PGO integrations into build systems:
b_pgo in the docs).profile key the in the package.yml format will perform an automatic PGO build docs. (Example)workload key in the stone.yaml format will perform an automatic PGO build TODO: no docs available?Check "are_we_pgo_yet.md" file in the repo to check the PGO status in a project.
Here I collect all results by applying LLVM BOLT to the projects (with numbers).
Just a list of BOLT-related issues in different projects. So you can estimate the BOLT state in your favorite open-source product.
Even if PGO is supported by a project, it does not mean that your favorite Linux distro builds this project with PGO enabled. For this there are a lot of reasons: maintainer burden (because we are humans (yet)), build machines burden (in general you need to compile twice), reproducibility issues (like profile is an additional input to the build process and you need to make it reproducible), a maintainer just don't know about PGO, etc.
So here I will try to collect information about the PGO status across the Linux distros for the projects that support PGO in the upstream. If you didn't find your distro - don't worry! Just check it somehow (probably in some chats/distros' build systems, etc.) and report it here (e.g. via Issues) - I will add it to the list.
2414Here we track LLVM BOLT enablement across various projects in various OS-specific build scripts:
Meta-issues about PGO and LLVM BOLT usage in different OSs and package managers:
cpython build: link.profraw internal details: blogI spent some time on giving talks about PGO at different conferences. Multiple times people were asking me to share slides/videos. Here they are.
Few notes about them:
None of this talks contains all the material from this repository since it's impossible to cover all PGO nuances during a talk at a conference. That's why reading the article is highly recommended anyway.
You can see that multiple talks have the same or almost the same content. That's fine since different conferences usually have different people that didn't listen talks from other conferences. For you it means that you don't need to watch / listen all the presentations. But if you want - you are welcome!
TechSpot 2024 "Performance meetup" (Warsaw, Poland), “Profile-Guided Optimization (PGO): 101” (video, slides)
Winglang Community Meeting March 2024 (Online), “Profile-Guided Optimization (PGO) for Winglang” (slides)
Tech Internals Conf 2024 (Cyprus), “Profile-Guided Optimization (PGO): (Ab)using it for fun and profit” (video, slides)
OxidizeConf 2024 (Berlin, Germany), “Profile-Guided Optimization (PGO) in Rust - 101” (video, slides)
RustFest 2024 (Zurich, Switzerland), “Profile-Guided Optimization (PGO) in Rust: unknown parts” (slides)
p99conf 2024 (Online), “Profile-Guided Optimization (PGO): (Ab)using it for Fun and Profit” (video, slides)
RustLab 2024 (Florence, Italy), “Profile-Guided Optimization (PGO) for Rust applications: Practical Guide” (video, slides)
If you have an example where PGO shines (and where doesn't) - please open an issue and/or PR to the repo. It's important to collect as many as possible showcases about PGO!
(top 24 of 54)
1,130 followers · starred Apr 2026
163 followers · starred Nov 2024
339 followers · starred May 2024
481 followers · starred Nov 2023