在实际开发中,若要快速生成可运行、可对比的C#性能基准测试(Benchmark)代码,却不愿反复手动编写[MemoryDiagnoser]、[SimpleJob]及大量属性样板,GitHub Copilot正好派上用场。只需用自然语言描述清楚需求,它几秒内就能交付完整的基准测试框架——但前提是,被测方法必须先定义好。

用Copilot聊天直接生成Benchmark类
打开VS Code,确保GitHub Copilot插件已安装并登录。在项目根目录新建一个文件,命名为BenchmarkTests.cs。
在文件顶部写一句清晰的自然语言提示,例如:
“用C#和BenchmarkDotNet为CalculateSum(int n)方法生成基准测试。该方法在MathHelper类中,接收一个整数n,返回1到n的累加和。要求:包含空循环对照组、使用[SimpleJob]、启用内存诊断、测试n=1000和n=10000两个输入规模。”
然后按下Ctrl+Enter(Windows)或Cmd+Enter(Mac)触发Copilot聊天。它会立即生成完整可编译的Benchmark类,包括命名空间、using引用、[MemoryDiagnoser]特性以及两个[Benchmark]方法,一应俱全。
【务必先定义好被测方法】如果MathHelper.CalculateSum还未存在,Copilot可能会虚构签名或直接报错——它不会自动创建被测逻辑,只会基于你描述的接口生成测试骨架。因此,被测方法需提前编写完毕。
让Copilot补全已有方法的Benchmark片段
方法一:光标停在被测方法内部末尾,按Tab唤出内联补全
将光标放在CalculateSum方法右大括号}后面,输入[Benchmark],再按Tab。Copilot很可能自动补全整个测试方法体,涵盖Assert、调用行和注释。
方法二:在测试文件中手动写桩,让Copilot填充逻辑
在BenchmarkTests.cs里输入:
public class MathHelperBenchmarks
{
private readonly MathHelper _helper = new();
[Benchmark]
public int TestSum1000() =>
此时光标停在=>后面,按Tab。Copilot会继续生成_helper.CalculateSum(1000),并自动补全另一组n=10000的测试方法。
批量生成多方法横向对比测试
第一步:整理待测方法列表
在新文件CompareAlgorithms.md中列出所有要压测的方法,例如:
- SumLoop(int n)
- SumFormula(int n)
- SumLinq(int n)
第二步:复制该列表,粘贴到Copilot聊天框,附带指令:“基于以上三个方法,生成一个BenchmarkDotNet类,每个方法都测试n=100000,禁用JIT预热,使用MediumRun job,输出结果保留3位小数。”
第三步:复制生成的C#代码,粘贴进BenchmarkTests.cs,并删除原文件中的旧内容。
第四步:在终端执行dotnet run -c Release -f net8.0 --project BenchmarkTests.csproj,验证是否能直接运行。如果出现“无法找到BenchmarkRunner”错误,说明缺少BenchmarkDotNet NuGet包——请先执行dotnet add package BenchmarkDotNet即可解决。
