用途:在 CI 流水线中对 .NET 基准测试做持续对比,检测性能回归,防止性能劣化代码被合入。
主要能力:使用 BenchmarkDotNet(v0.14+)的 JSON 导出(-report-full.json)产出机器可读结果;通过 GitHub Actions 上传/下载产物管理基线(actions/upload-artifact@v4、actions/download-artifact@v4);用阈值脚本比较当前与基线的 Statistics.Mean/Median/StandardDeviation 及 Memory.BytesAllocatedPerOperation;支持 PR 评论、非零退出码使构建失败等告警方式;可选用 GitHub Pages benchmark-action 或外部时序库做趋势跟踪。
使用方式:在基准类上加 [JsonExporterAttribute.Full]、[MemoryDiagnoser];CI 中执行 dotnet run -c Release --project benchmarks/MyBenchmarks.csproj -- --exporters json;基线仅从 main 分支更新,下载基线时设 continue-on-error: true 处理首次运行;比较脚本示例:python3 scripts/compare-benchmarks.py --baseline ./baseline-results --current <结果目录> --threshold 10;CI 可用 Job.ShortRun 缩短耗时,用 --filter Critical 只跑关键路径。阈值建议:专用硬件 5%,共享 runner 10–15%,自托管 5–10%;分配回归可比时序更可靠,零分配路径可设硬门禁。
限制:文档假设 .NET 8.0.x、GitHub Actions 环境;产物默认保留 90 天;基准类设计、内存诊断器、性能架构、profiling、可观测性、可复用工作流等由其他技能负责;跨仓库比较需自建外部存储;阈值需按环境实测校准。