Skip to content

Benchmark 导出缺少重复样本统计,无法可靠判定性能优化收益 #373

Description

@pikasTech

目标合并分支: master

问题

当前 port/linux/ci_benchmark.sh 连续运行 20 次,但 ci_benchmark_select.py 只按 Performance Points 选择中位次对应的一整份 benchmark_result.json,随后 github-action-benchmark 仅把这一份结果发布到 Pages。其余 19 次样本、均值、中位数、标准差、CV 和置信区间均未导出。

这会导致跨 Action run 的变化无法区分为 VM 优化收益、runner 波动或二进制布局影响。近期数据中:

  • 05719194e9 -> 94c0d053fb:Performance Points +9.219%,公共 VM 项目耗时下降约 7.200%–13.622%
  • 94c0d053fb -> 5cde1a9648:后者只包含线程锁语义修复,但 Performance Points 仍 +7.099%,各 VM 项目变化为 -1.756%–13.306%
  • function-call 新基准在优化前没有成功发布的 Action 基线,不能做直接前后对比。

因此现有 Pages 数据只能说明近期总体方向改善,不能可靠证明具体性能提交的净收益。

目标

  1. 保留每轮 20 次原始样本,或至少导出每个 benchmark 的 count、median、mean、standard deviation、CV、min 和 max。
  2. Performance Points 与各 VM benchmark 分别统计,不能用 Points 中位次对应的单份向量代替全部项目统计。
  3. 支持在同一 commit 上重复触发 benchmark,形成 runner 间方差基线。
  4. Pages 导出继续兼容 github-action-benchmark 的可视化,同时增加机器可读的聚合统计文件。
  5. 性能结论只有在收益稳定超过噪声/CV,且控制基准无异常漂移时才标记为有效。

验收

  • 同一 commit 至少两次 Action run 可查询每项 benchmark 的样本量与离散度。
  • 变更前后比较能输出绝对值、百分比、噪声范围和 improved / no-credible-change / regressed 判定。
  • 不增加目标固件 RAM/Flash;统计只发生在 Linux CI。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions