SuperAPI AI 工具集

performance-benchmarking

测试与质量

查看项目

更新于 10-18 10:26

技能介绍

性能基准测试技能旨在帮助开发者生成有意义的性能数字,避免因测量误差而产生误导性结论。该技能强调,基准测试工具在代码未改变时也可能报告出看似显著的差异,因此必须首先建立噪声底限,即测量相同代码多次运行得到的差异范围。噪声底限是工具、机器和工作负载的属性,而非代码的属性;低于噪声底限的效应应视为未测量,而非不存在。

主要能力包括:

  • 噪声底限的建立与解释:通过在同一提交上运行两次基准并记录差异范围来确定底限,并在工具、机器或工作负载变化时重新建立。
  • 配对测量:在同一条件下测量两个臂(如修改前后),使共享方差在差异中抵消,避免顺序偏差。
  • 进程拓扑选择:独立进程(每个臂在新进程中重复N次)或交替配对(同一进程内A/B、B/A顺序比较),避免将所有A运行完再运行B。
  • 明确声明预热次数并排除,每次测量前强制垃圾回收,报告配对差异的中位数和胜出次数,并披露完整协议。
  • 确保测量的是工作树:验证构建系统从工作区路径解析包,并断言源文件和输出路径指向工作区而非包存储。
  • 正确性守卫:在测量前断言夹具具有预期属性(如非零差异长度、非空结果集、预期分支被执行)。
  • 输出一致性:在每个样本上比较廉价签名(如结果哈希、记录数),并报告其恒定。
  • 输入分布匹配:声明夹具抽取的分布(命中率、大小混合、偏斜)并解释其代表真实工作负载。
  • 指标选择:当墙钟时间太嘈杂时,选择精确指标如分配计数、操作计数、系统调用计数。
  • 随机臂比较:配对种子,报告差异相对于标准误,并在更高N下重新运行以避免小样本偏差。
  • 预先声明采纳标准:在测量前明确阈值和无回归条款,并机械应用。
  • 门禁策略:定义方向和不确定性策略,区分不确定与通过,缺失必要不确定性视为无效测量,聚合百分比需要分母清单。
  • 声明措辞:跨实现结果不是排名,需限定比较范围;列举所有注意事项。

使用方式:该技能提供了一套系统化的协议和检查清单,开发者可在执行基准测试时遵循这些步骤,从建立噪声底限开始,到选择进程拓扑、执行测量、分析结果,最后根据预先声明的标准做出采纳或拒绝决定。对于CI门禁,需明确区分咨询性结果和必需门禁,并保持策略一致性。

适用场景:性能优化前后的对比、CI中的性能门禁、代码审查中的性能声明验证、跨实现性能比较(需谨慎限定)、以及任何需要可靠性能数字的工程决策。

限制:该技能要求严格的测量纪律,可能增加测试时间;噪声底限依赖于具体环境,需定期重新评估;对于墙钟时间等嘈杂指标,可能无法得出显著结论;跨实现比较需注意输出表示差异,不能简单视为排名;小样本结果需谨慎对待。