Evaluate implementing Profile-Guided Optimization (PGO) in ccl #467
zamazan4ik
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hi!
Profile-Guided Optimization (PGO) is a compiler optimization technique that uses information collected from runtime to optimize a program in compile-time (if we are talking about the Ahead-Of-Time (AoT) compilation model).
I do an investigation about Profile-Guided Optimization (PGO) adoption across the industry: check PGO integration in different projects, perform PGO benchmarks, etc. - all my current results are available in my repo: https://github.com/zamazan4ik/awesome-pgo
According to my tests, PGO helps a lot with optimizing different applications in different domains in real-life workloads: compilers, static analysis, databases, networking, logging, and much more. PGO is already integrated into many compilers like Clang, GCC, Rustc, Go.
In this issue, I suggest implementing PGO support in CCL. As a reference, I can suggest looking at the most mature (in my opinion) PGO implementations right now: LLVM (e.g. check Clang PGO documentation - https://clang.llvm.org/docs/UsersManual.html#profile-guided-optimization) and GCC (https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html#index-fprofile-generate). Since CCL declares on the website "Fast execution speed, competitive with other Common Lisp implementations on most benchmarks" I guess performance improvements are valuable in the CCL community.
PGO support in CCL would be useful for CCL itself (since it would be possible to deliver faster compile times). Outside CCL, other Common Lisp code could benefit from it as well - e.g. the Endatabas database (https://github.com/endatabas/endb).
Beta Was this translation helpful? Give feedback.
All reactions