Diagnosing Compiler Performance by Comparing Optimization Decisions
summary
Captures compiler decisions as optimization trees per compilation unit, emits logs by adding hooks into the Graal compiler, and compares runs with tree edit distance to pinpoint differing inlining, escape analysis, and loop‑unrolling outcomes. A tool called Prof loads profiles and logs, reports semantic tree diffs, and helped diagnose six unstable Renaissance benchmarks where inlining changes cause 8–30% speed regressions; identified fixes are merged upstream and one regression is already resolved in production.
AI-written summary · about
chapters (6)
- 0:00Compiler performance diagnosis
- 2:11Performance regressions in JIT compilers
- 4:17Capturing optimization decisions
- 10:23Demonstrating regression differences
- 15:21Benchmark results
- 17:10Summary and future directions
related talks
19mOptimization-Aware Compiler-Level Event Profiling
06mProfile-Guided Optimization in the Go Compiler
47mHow an Optimizing Compiler Works
52mUnderstanding Compiler Optimization
21mGetting the Most Bang out of your Buck with Compilers on POWER
15mNot So Fast: Understanding and Mitigating Negative Impacts of Compiler Optimizations on Code Reuse G
34mWhat happens to your code when you don't look?
28mCode optimization tips and tricks
