-
Notifications
You must be signed in to change notification settings - Fork 14
Description
Hi!
Recently I did many Profile-Guided Optimization (PGO) benchmarks on multiple projects (including static analysis tools and compilers like Rustc, Clang, Clangd, Clang Tidy, and many others) - the results are available here. For Clang PGO results are even described in the official documentation (20% improvements) - https://llvm.org/docs/HowToBuildWithPGO.html . I think it could be a good idea to enable PGO at least for Clang dependency in Xeus repl.
I can suggest the following things to do:
- Enable PGO at least for the Clang dependency.
- Document enabling PGO somewhere in the Documentation (possibly in the README file)
Here are some examples of how PGO is already integrated into other projects' build scripts:
- Rustc: a CI script for the multi-stage build
- GCC:
- Clang: Docs
- Python:
- Go: Bash script
- V8: Bazel flag
- ChakraCore: Scripts
- Chromium: Script
- Firefox: Docs
- Thunderbird has PGO support too
- PHP - Makefile command and old Centminmod scripts
- MySQL: CMake script
- YugabyteDB: GitHub commit
- FoundationDB: Script
- Zstd: Makefile
- Foot: Scripts
- Windows Terminal: GitHub PR
- Pydantic-core: GitHub PR
After PGO, I can suggest evaluating LLVM BOLT as an additional optimization step after PGO. Building with LLVM BOLT is already supported by Clang too in the upstream.