该技能的用途是:当需要验证某处代码改动的性能影响时,编写并运行临时的 BenchmarkDotNet 基准,对比改动前后的表现。
主要能力与流程分三步。第一步编写基准:创建针对被改动操作的 BenchmarkDotNet 基准类,类需为 public、非 sealed、非 static 的 class;把初始化放进 [GlobalSetup],基准方法返回值以防死代码消除,避免手写循环和副作用,聚焦常见热路径,使用一致输入数据,避免 [DisassemblyDiagnoser](Linux 上会崩溃,可改用 --envvars DOTNET_JitDisasm:MethodName)。第二步准备基线与改动版运行时构建:先把改动安全地保存为 commit、patch 或独立 worktree,不要把无关改动 stash 或还原;临时移除改动恢复基线,构建 Release 运行时与 testhost,命令为 ./build.cmd|.sh clr+libs -rc Release -lc Release,将生成目录复制为 artifacts/bin/testhost_baseline;再恢复改动并重复同样的 Release 构建;基线在 testhost_baseline,改动版在 testhost 目录,分别使用各自的 CoreRun。若改动版在恢复基线前已构建,需清理或显式重建以避免用到旧二进制。第三步本地运行:dotnet run -c Release -- --filter "*" --coreRun "<baseline-corerun>" "<changed-corerun>",可选 --envvars 传入环境变量。若遇到 GetRuntimeVersion not implemented for NotRecognized,需升级 BenchmarkDotNet 至兼容的 preview 或 nightly 版本。
@EgorBot 用法:仅当用户明确要求时使用,它只在 dotnet/runtime 仓库的 PR 上有效,会自动将改动与 base 分支对比。触发时在 PR 评论中写 @EgorBot 加目标与参数,代码块内只放基准代码;常用目标组合 -linux_amd -osx_arm64,目标不超过 3 个。以用户凭据发布时需注明内容由 AI 生成。结果可能因虚拟机差异而波动,不要跨架构或云厂商比较。
限制:资料未提供该技能的安装方式、费用、平台要求等信息。