章节总结
- 调试性能问题通常比调试功能性bug更困难,这是因为测量的不稳定性。
- 除非设定特定的目标,否则不能停止优化。要知道是否达到了预期的目标,您需要制定有意义的定义和衡量标准。根据您关心的内容,可以是吞吐量、延迟、每秒操作数(性能屋顶)等。
- 现代系统具有非确定性性能。消除系统中的非确定性对于定义明确、稳定的性能测试(例如微基准测试)非常有帮助。在生产部署中测量性能需要使用统计方法来分析结果,以应对嘈杂的环境。
- 越来越多地,大型分布式软件的供应商选择在生产系统上直接对性能进行配置和监控,这需要使用轻量级的配置技术。
- 为了防止性能回归泄漏到生产软件中,采用自动化的统计性能跟踪系统非常有益。这种持续集成系统应该运行自动化性能测试,可视化结果,并在发现性能异常时发出警报。
- 可视化性能分布还可以帮助发现性能异常。这是向广大受众展示性能结果的安全方式。
- 使用假设检验方法确定性能分布之间的统计关系。一旦确定差异在统计上是显著的,就可以计算加速比,即均值或几何均值之比。
- 可以放弃冷运行以确保一切运行良好,但不要故意放弃不想要的数据。如果决定放弃某些样本,应对所有分布均匀地进行。
- 为了测量执行时间,工程师可以使用现代平台提供的两种不同的定时器。系统范围内的高分辨率定时器适用于测量持续时间超过一微秒的事件。要以高精度测量短期事件,使用时间戳计数器。
- 微基准测试对于快速证明某些内容非常有用,但您应该始终在实际条件下的真实应用程序上验证自己的想法。确保您正在对有意义的代码进行基准测试,方法是检查性能分析。