性能实验设计与测试全解析
1. 测试与性能回归
在代码测试环节,其复杂程度取决于代码库的测试基础设施。一些代码库有大量单元测试确保正确性,可根据测试覆盖度和详细程度,利用现有测试;而有些代码库缺乏完善测试实践,就需编写自定义测试用例。若不确定,建议过度测试,避免引入功能或安全漏洞。
创建可复现实验时,可编写两个程序,一个评估当前性能,另一个评估当前正确性。为确保测试程序和性能程序使用相同代码,建议将实现放在不同源文件中,构建成不同目标文件。
性能回归测试也很重要,曾经的问题可能再次出现,需定期运行可复现实验,确保性能不会退回到优化前的状态,这与单元测试类似,发现的 bug 应添加到测试套件中,防止功能退化。低级别性能测试能很好地补充高级别性能测试,高级别测试检测性能回归,低级别测试帮助定位代码中出现问题的部分。
2. 选择合适的指标
性能分析和优化依赖准确的数据收集,选择合适的性能指标至关重要。性能指标主要分为两类:衡量单次操作成本的指标(如测量时间时,常称为测量延迟)和衡量给定时间间隔内操作发生频率的指标(常称为测量吞吐量)。
例如,在图形渲染性能测量中,帧时间属于第一类指标,它测量渲染一帧的时间成本;帧速率属于第二类指标,以每秒帧数衡量。选择指标时,要根据测量组件选择合适的详细程度,如比较 CPU 管道中两个算法的性能时,时钟周期是合适的指标;而比较图形渲染性能时,时钟周期可能过于底层。
所有指标按解读方式可分为三类:值越高越好(HIB)、值越低越好(LIB)、标称值最好(NIB)。HIB 和 LIB 指标更为常见。
3. 处理外部变量
在基准测试中
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



