用途:为 microsoft/microsoft-ui-reactor 仓库的贡献者提供本地性能对比。它测量当前分支的四个核心性能数字,并与 main 基线做同机 A/B 对比,相当于在 PR 上评论 /perf 的本地等价物。Reactor 是用于构建 WinUI 3 桌面应用的声明式 C# 框架,基准负载为 StressPerf.ReactorOptimized StocksGrid 压力测试。
主要能力:输出四项指标——Renders/sec(越高越好)、Avg Reconcile (ms)、Avg Diff (ms)、Avg Memory (MB)(后三项越低越好)。StressPerf.Direct(原生 WinUI3 命令式)无虚拟 DOM,因此 reconcile/diff 显示为 n/a。结果写入 tests/stress_perf/ci/out/result.json 与 comment.md,包含 main、pr、winui3 聚合值(各指标中位数与 spread)及运行环境信息。
使用方式:先确认 dotnet --version ≥ 10 且 pwsh 可用,并确认有可测量的改动(git rev-list --count origin/main..HEAD 或 git status --porcelain)。对比模式需创建 main 工作树:git fetch origin main 与 git worktree add ../perf-main origin/main。然后运行:pwsh tests/stress_perf/ci/Run-PerfBenchmark.ps1 -BaselineRoot ../perf-main -Percent 50 -Duration 10 -Reps 2 -Warmup 1。仅测当前树可省略 -BaselineRoot。运行较慢,需给足超时。结束后用 git worktree remove ../perf-main 清理。
适用场景:推送前检查性能回归、比较分支与 main、获取四个性能数字。不适用于无关的性能分析、tests/startup_perf/ 启动性能测试,或修改性能代码。
限制:必须驱动已提交脚本,不得自行实现测量;只测量不修复,不编辑代码,不向 GitHub 发布内容;仅限同机 A/B 对比,不与其他机器或存储基线比较;需遵守噪声带(低于运行间波动与 4% 下限的差异视为噪声);绝对数字依赖机器,应信任 Δ。无头环境会因 0xC000027B 失败,此时应报告并改用 PR 上的 /perf 工作流。