🟡 [M19] benchmark report variant 列顺序依赖输入顺序 #39

Closed
opened 2026-06-05 11:54:14 +08:00 by dailz · 1 comment
Owner

问题

format_report 构建 variants 时按 category_results 遍历顺序保留首次出现的 (backend, variant),没有排序。

影响

同一组 benchmark 结果如果输入顺序不同,报告表格列顺序会变化,影响跨运行比较。

位置

  • crates/bench/src/report.rs:44

建议

构建完成后按 (backend, variant) 排序,或使用 BTreeSet 同时完成去重和稳定排序。

## 问题 `format_report` 构建 `variants` 时按 `category_results` 遍历顺序保留首次出现的 `(backend, variant)`,没有排序。 ## 影响 同一组 benchmark 结果如果输入顺序不同,报告表格列顺序会变化,影响跨运行比较。 ## 位置 - `crates/bench/src/report.rs:44` ## 建议 构建完成后按 `(backend, variant)` 排序,或使用 `BTreeSet` 同时完成去重和稳定排序。
Author
Owner

已修复,提交 a8b64e7。

修改内容:

  1. Latency 表列顺序 — variants 去重改用直接 tuple 比较取代 format! 字符串比较,构建后 sort() 确保稳定字典序
  2. Memory 段行顺序 — 按 (test_name, backend, variant) 排序后再输出
  3. Extra Metrics 段行顺序 — 按 (test_name, variant_label) 排序后再输出
  4. 补充 Cargo.toml 的 [lib] target 以支持单元测试
  5. 新增回归测试:同一组数据以两种不同输入顺序传入,断言报告文本完全一致

测试通过。

已修复,提交 a8b64e7。 **修改内容:** 1. **Latency 表列顺序** — variants 去重改用直接 tuple 比较取代 format! 字符串比较,构建后 sort() 确保稳定字典序 2. **Memory 段行顺序** — 按 (test_name, backend, variant) 排序后再输出 3. **Extra Metrics 段行顺序** — 按 (test_name, variant_label) 排序后再输出 4. 补充 Cargo.toml 的 [lib] target 以支持单元测试 5. 新增回归测试:同一组数据以两种不同输入顺序传入,断言报告文本完全一致 测试通过。
dailz closed this issue 2026-06-05 16:25:39 +08:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dailz/logViewer#39