文档目录
Profile-Guided Optimization(PGO)
目标:用实际运行数据反馈编译器,生成针对实际执行路径优化的代码。
-
6.1 PGO 的三步流程
- 插桩编译(
-fprofile-generate)→ 运行代表性负载 → 优化编译(-fprofile-use)。
- 插桩编译(
-
6.2 PGO 的优化效果
- 分支预测准确性提升(编译器按实际频率排布 basic block)。
- 内联决策改进:频繁调用的函数更可能被内联;冷路径函数被推迟到
.text.unlikely。 - 指令缓存(I-Cache)命中率改善:热代码连续排放。
-
6.3 PGO 的工程实践
- 如何设计代表性测试负载(避免 PGO 针对测试数据过拟合)。
- 持续集成中的 PGO 流程(训练阶段 → 生产构建分离)。