BenchmarkDotNet-新建项目
Benchmark 项目的结构非常简单, 只需要创建最基础的控制台程序即可
dotnet new console -n benchmarkproject
然后添加nuget包应用
dotnet add package BenchmarkDotNet
或者直接修改 benchmarkproject.csproj
文件
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="BenchmarkDotNet" Version="0.13.9" />
</ItemGroup>
</Project>
假设我想要对 string.IsNullOrEmpty
和 string.IsNullOrWhiteSpace
这两个看起来挺像的字符串判空方法进行基准测试, 用以对比两者的资源使用情况和执行效率
public class Test
{
[Benchmark]
public void TestEmpty() => string.IsNullOrEmpty("");
[Benchmark]
public void TestWhiteSpace() => string.IsNullOrWhiteSpace("");
}
我们需要写两个方法, 分别调用 string.IsNullOrEmpty
和 string.IsNullOrWhiteSpace
, 并且为这两个方法标记 [Benchmark]
特性
然后调用 BenchmarkRunner.Run
BenchmarkRunner.Run(typeof(Test));
这样代码就算是写完了
最后在项目目录下执行命令
dotnet run -c Release
然后等待测试结果即可
Method | Mean | Error | StdDev |
---|---|---|---|
TestEmpty | 0.0121 ns | 0.0123 ns | 0.0102 ns |
TestWhiteSpace | 1.7137 ns | 0.0306 ns | 0.0255 ns |
合集:
BenchmarkDotNet
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律