理解应用程序性能的第一步是了解如何衡量它。有些人把性能看作是应用程序的一个特性。但与其他特性不同,性能不是一个布尔属性:应用程序总是具有某种程度的性能。这就是为什么无法对是否具有性能这个问题回答“是”或“否”。
性能问题通常比大多数功能问题更难追踪和复现。每次基准测试运行都不同于其他运行。例如,在解压缩zip文件时,我们会一遍又一遍地得到相同的结果,这意味着这个操作是可重现的。但是,无法完全重现这个操作的相同性能配置文件。
对于关注性能评估的任何人来说,都知道进行公平性能测量并从中得出准确结论有多么困难。性能测量有时可能会非常意外。改变源代码中看似不相关的部分可能会对程序性能产生显着影响。这种现象被称为测量偏差。由于测量中存在误差,性能分析需要使用统计方法进行处理。这个话题本身就值得一本书来讨论。在这个领域有很多边角案例和大量的研究。我们不会深入探讨这个话题。相反,我们只会关注高层次的想法和方向。
进行公正的性能实验是获得准确和有意义结果的关键步骤。设计性能测试和配置环境都是评估性能过程中重要的组成部分。本章将简要介绍现代系统为什么会产生嘈杂的性能测量结果以及您可以采取什么措施。我们将涉及在实际生产部署中测量性能的重要性。
没有一个长寿命的产品能够没有性能回归。这对于具有大量贡献者并且变化非常快的大型项目尤其重要。本章专门介绍了在持续集成和持续交付(CI / CD)系统中跟踪性能变化的自动化过程,同时也提供了有关开发人员在实现源代码更改时如何正确收集和分析性能测量结果的一般指导。
本章末尾描述了可以由开发人员用于基于时间的测量的SW和HW计时器以及设计和编写良好的微基准测试时常见的陷阱。
Part1. Performance analysis on a modern CPU
于 2023-08-01 00:57:07 首次发布