2.5-图表
2 分钟阅读
译文 · 基于 Criterion.rs Documentation
图表
原文链接: https://bheisler.github.io/criterion.rs/book/user_guide/plots_and_graphs.html
Criterion.rs 可生成多种有用的图表,便于更好理解基准测试行为。默认使用 gnuplot 生成,若不可用则回退到 plotters crate。以下示例由 gnuplot 后端生成,plotters 版本类似。
请注意,在较旧版本的 criterion.rs 中 HTML 报告默认启用。新版本为绘图与 HTML 生成引入了 cargo feature。要启用 HTML 报告生成,请确保 Cargo.toml 中启用了该 feature:
| |
File Structure
图表与保存的数据位于 target/criterion/$BENCHMARK_NAME/。目录结构示例如下:
$BENCHMARK_NAME/
├── base/
│ ├── raw.csv
│ ├── estimates.json
│ ├── sample.json
│ └── tukey.json
├── change/
│ └── estimates.json
├── new/
│ ├── raw.csv
│ ├── estimates.json
│ ├── sample.json
│ └── tukey.json
└── report/
├── both/
│ ├── pdf.svg
│ ├── regression.svg
│ └── iteration_times.svg
├── change/
│ ├── mean.svg
│ ├── median.svg
│ └── t-test.svg
├── index.html
├── MAD.svg
├── mean.svg
├── median.svg
├── pdf.svg
├── pdf_small.svg
├── regression.svg (optional)
├── regression_small.svg (optional)
├── iteration_times.svg (optional)
├── iteration_times_small.svg (optional)
├── relative_pdf_small.svg
├── relative_regression_small.svg (optional)
├── relative_iteration_times_small.svg (optional)
├── SD.svg
└── slope.svg
new 文件夹包含最近一次基准运行的统计,base 文件夹包含 base 基线上一次运行的统计(有关基线的更多信息见 命令行选项)。图表在 report 文件夹中。Criterion.rs 仅保留最近一次运行的历史数据。report/both 文件夹包含在同一张图上显示两次运行的图表,report/change 包含显示最近两次运行差异的图表。本示例展示默认 bench_function 基准方法产生的图表。其他方法可能产生额外图表,将在各自页面说明。
MAD/Mean/Median/SD/Slope
这些是 Criterion.rs 生成的最简单图表,显示给定统计量的 bootstrap 分布与置信区间。
Regression
回归图在 X-Y 平面上绘制每个数据点,横轴为迭代次数,纵轴为耗时。同时显示 Criterion.rs 对每次迭代时间的最佳拟合直线。良好的基准测试应使数据点紧密沿直线分布。若数据点分散很广,说明噪声大,基准可能不可靠。若数据点呈一致趋势但与直线不符(例如曲线或多段折线),说明基准测试随迭代次数做不同工作量,Criterion.rs 无法生成准确统计,可能需要重做基准。
report/both 中的合并回归图仅显示回归线,是两次运行性能差异的有用视觉指标。
回归图仅在 Criterion.rs 使用线性采样模式时可显示。在平坦采样模式下,会改为显示迭代时间图。
Iteration Times
迭代时间图显示平均迭代时间的集合。不如回归图有用,但由于平坦采样模式下无法显示回归图,因此会显示此图。
PDF 图显示样本的概率分布函数,并显示用于将样本分类为离群值的范围。在本示例(与上文回归示例相同)中,可见性能趋势在约 35 次迭代以下有明显变化,值得进一步调查。