BenchmarkDotnet-对比不同运行时

微软整天说dotnet的新版本比旧版本快了很多, 每次更新都说有性能提升, 有各种各样的调用优化, 为了验证微软是不是瞎说, 我们可以对比不同的运行时

首先需要修改项目文件, 将原来的单运行时换成多运行时

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFrameworks>net6.0;net7.0;</TargetFrameworks>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="BenchmarkDotNet" Version="0.13.9"/>
  </ItemGroup>
</Project>

这边选择对比 net6.0net7.0

然后修改Test类, 添加特性[SimpleJob]

[SimpleJob(RuntimeMoniker.Net70)]
[SimpleJob(RuntimeMoniker.Net60, baseline: true)]
public class Test
{
    public int Count = 100;
    [Benchmark(Baseline = true)]
    public void TestEmpty()
    {
        for (var i = 0; i < Count; i++)
            string.IsNullOrEmpty("");
    }
    [Benchmark]
    public void TestWhiteSpace()
    {
        for (var i = 0; i < Count; i++)
            string.IsNullOrWhiteSpace("");
    }
}

RuntimeMoniker.Net70RuntimeMoniker.Net60 分别代表 net7.0net6.0

baseline: true 表示将 net6.0 作为基准

此时的测试基准是 net6.0 中的 TestEmpty 方法

然后需要运行命令, 不过由于支持了多运行时, 所以启动时的命令也要稍作修改, 指定一个运行时

dotnet run -c Release --framework net6.0

至于具体指定哪一个, 对结果不会有太大影响

测试完成结果如下

MethodJobRuntimeMeanErrorStdDevRatioRatioSD
TestEmpty.NET 6.0.NET 6.029.64 ns0.356 ns0.333 ns1.000.00
TestWhiteSpace.NET 6.0.NET 6.0212.49 ns3.012 ns2.817 ns7.170.13
TestEmpty.NET 7.0.NET 7.029.60 ns0.163 ns0.136 ns1.000.01
TestWhiteSpace.NET 7.0.NET 7.029.47 ns0.345 ns0.306 ns0.990.01

可以看到在net7.0中已经对string.IsNullOrWhiteSpace进行了优化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值