基准测试概述
大多数基准测试结果都是短暂的。 当终端滚动回溯达到极限时,它们会消失。 一些基准测试工具允许你缓存结果,但大多数只能在本地进行。 Bencher 允许你跟踪本地和 CI 运行的基准测试,并与历史结果进行比较。
跟踪基准测试的最简单方法是使用 bencher run
CLI 子命令。
它包装了现有的基准测试工具输出并生成一份报告。
随后,这份报告被发送到 Bencher API 服务器,
在那里使用基准测试工具适配器解析基准测试工具输出。
基准测试工具适配器检测所有存在的基准测试及其相应的度量。
这些基准测试和度量与报告一起被保存。
如果设置了阈值,
新的度量将与报告中每个基准测试的历史度量进行比较。
如果检测到回归,将生成一条警报。
从此,我们将你的“基准测试”称为“性能回归测试”以避免任何混淆。
Benchmark
Benchmark 是一个命名的性能回归测试。 如果性能回归测试是 Bencher 的新测试,则会自动创建一个 Benchmark。 否则,性能回归测试的名称将用作 Benchmark 的唯一标识符。
更改性能回归测试的名称时要小心。 您需要在 Bencher 中手动重命名 Benchmark 以匹配此新名称。 否则,重命名的性能回归测试将被视为新的 Benchmark。 这一警告同样适用于 移动 一些性能回归测试。 根据基准测试工具,性能回归测试的路径可能会成为其名称的一部分。
上述警告的唯一例外是忽略 Benchmark。 查看抑制警报以获取完整的概述。
度量指标
度量指标是一个单点时间的性能回归测试结果。对于单个度量指标,最多可以收集三个值:value
、lower_value
和 upper_value
。所有度量指标都必须包含 value
,而 lower_value
和 upper_value
是可选的,可以独立选择。哪些值会被收集是由基准测试工具适配器决定的。
测量
测量是指标的度量单位。默认情况下,所有项目都以延迟
和吞吐量
作为测量单位,单位分别为纳秒(ns)
和操作/秒(ops/s)
。测量由基准测试工具适配器确定。
报告
报告是针对特定分支和测试平台的一组基准和其指标。报告通常使用bencher run
CLI 子命令生成。查看如何跟踪性能回归测试以获得完整概述。
Branch
Branch 是运行报告时使用的 git
引用(即分支名称或标签)。默认情况下,所有项目都以 main
分支开始。在使用bencher run
CLI 子命令时,如果未提供分支,则默认使用 main
分支。请参阅分支选择以获取完整概述。
Head
分支的 Head 是该分支的最新实例。 如果有起始点,它将引用最新的起始点。 每当分支有一个新的起始点时,它就会有一个新的 Head。 请参阅分支选择以获得全面概述。
起始点
一个分支可以有一个起始点。起始点是特定版本(以及 git
哈希值,如果可用的话)的另一个分支。历史指标和阈值(可选)将从起始点复制过来。请参阅分支选择以获取完整概述。
Testbed
Testbed 是运行报告时使用的测试环境名称。
默认情况下,所有项目都以 localhost
Testbed 开头。
当使用 bencher run
CLI 子命令时,如果未提供其他 Testbed,则默认 Testbed 为 localhost
。
阈值
阈值用于捕捉性能回退。 阈值被分配给一个独特的组合: 分支、测试平台和测量。 请参阅阈值以获取完整概览。
测试
测试由阈值用于检测性能回归。 测试及其参数的组合称为模型。 请参阅阈值以获取完整概述。
Model(模型)
模型是测试及其用于阈值的参数的组合。一个模型必须有下边界、上边界或同时具备两者。
- 下边界
- 当较小的值表示性能退化时使用下边界,例如在
Throughput
(吞吐量)度量中。
- 当较小的值表示性能退化时使用下边界,例如在
- 上边界
- 当较大的值表示性能退化时使用上边界,例如在
Latency
(延迟)度量中。
- 当较大的值表示性能退化时使用上边界,例如在
每个边界用于计算一个边界限制。然后每个新的指标都将与每个边界限制进行比较。当新的指标低于下边界限制或高于上边界限制时,生成一个警报。请参见阈值以获取完整概述。
边界限制
边界限制是从下边界或上边界计算得出的值。 它用于与新的度量进行比较。 当新的度量低于下边界限制或高于上边界限制时,会生成警报。 请参阅阈值以获取完整概览。
警报
当新的指标因低于下限或高于上限而未通过测试时,会生成一个警报。请参阅阈值以获取完整概述。
🐰 恭喜!您已经全面了解了如何跟踪
基准测试性能回归测试! 🎉