超越分析器:探索替代性能优化技术
在他的演讲“性能焦虑”中,Joshua Bloch 强调了分析器的局限性及其潜在的不准确性。然而,这提出了一个问题:我们还有哪些其他选项来优化性能?我们应该回归我们的直觉和猜测吗?
Bloch 引用的论文“评估 Java 分析器的准确性”中得出的结论是,分析器可能由于不正确性问题而变得不可靠。然而,这并不会使所有分析方法无效。
解决观察者效应和分析准确性
观察者效应是指分析器影响分析器行为的潜力。正在分析的程序。必须使用不会中断程序执行的分析器(例如以随机间隔捕获数据的基于采样的分析器)来最大程度地减少这种影响。
超越采样:不相关采样和调用堆栈分析
为了提高分析的准确性,采样机制必须真正随机且独立于程序状态,这一点至关重要。此外,探查器应捕获函数调用堆栈,以识别采样时哪些语句处于活动状态。这样可以精确定位性能瓶颈。
按行报告,而不是按函数报告
传统分析器通常按函数报告数据,这可能会导致难以识别负责性能问题的特定代码行。为了解决这个问题,分析器应该提供报告来细分每行代码的性能贡献,从而实现更精细的优化。
测量精度与位置精度
与其主要关注时间测量的精度,更重要的是优先考虑问题定位的准确性。通过识别对性能开销有显着贡献的代码区域,即使各个测量可能存在一定程度的统计变化,也可以精确地进行优化。
性能调优的实用方法
在性能调优中,没有必要在修复每个问题之前量化每个问题的确切贡献。相反,迭代地识别和解决问题会更有效。随着每个问题的解决,剩余问题的百分比会变大,从而更容易定位和解决它们。
结论
虽然分析器有其局限性,但性能优化的替代方法。通过采用最小化观察者效应的采样方法、分析函数调用堆栈、按行报告数据以及关注问题定位而不是精确测量,开发人员可以有效识别和解决性能瓶颈。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3