知识卡片

在线剖析能做到静态离线分析做不到的针对性优化

普通读书笔记卡 · 1812.b

内容

有人认为编译时能无限分析代码一定比运行时优化更好,但忽略了运行时才能拿到的信息:实际数据分布、当前硬件、方法真实调用频率——这些在线剖析数据能指导静态分析永远做不到的优化。反过来纯离线分析虽理论上不受限制,却往往产生太多数据让编译器分不清重点。运行时反馈的价值不在信息量更大,而在信息更贴近当前真实执行情况。

参考来源

- 位置:《架构之美》第10章《元循环虚拟机的力量:Jikes RVM》10.2.2节《静态编译器中的无限分析必然意味着更好的性能》(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0213.xhtml) - 结论依据:原文明确"在线剖析允许及时地使用这些信息来降低开销,例如分支预测,还允许更高级的优化,例如数值推测……虽然离线分析也没有限制,但通常会导致太多的数据以至编译器不能确定哪些数据很重要。因为运行时反馈更及时,它可以更好地指导程序内及其他编译器优化"。 - 原始内容:在线剖析允许及时地使用这些信息来降低开销,例如分支预测,还允许更高级的优化,例如数值推测……因为运行时反馈更及时,它可以更好地指导程序内及其他编译器优化。