C#性能测试BenchmarkDotnet

目录

1.简介

2.详细内容


 

1.简介

在我们开发高性能代码时,需要各种针对性能优化进行编码。那么如何才能知道我们所加的代码是否有性能方面的正向优化呢?有了BenchmarkDotNet,做性能对比测试就非常容易了,只需要把你的测试方法加上特性[Benchmark], 想做不同.net平台的性能测试,比如传统的 .NET Framework, .NET Core,.NET 5 ~ 7,Mono,这些都没问题。

支持的运行时:.NET 5+、.NET Framework 4.6.1+、.NET Core 2.0+、Mono、NativeAOT支持的语言:C#、F#、Visual Basic支持的操作系统:Windows、Linux、macOS支持的体系结构:x86、x64、ARM、ARM64、Wasm 和 LoongArch64

2.详细内容

官方地址地址:https://benchmarkdotnet.org/

nuget安装:

测试代码编写:

编写测试代码时,需要注意在SimpleJob特性中需要指定框架版本。例如我这里使用的是.NET 6框架那么就要指定为RuntimeMoniker.Net60。

using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Jobs;
using System.Security.Cryptography;

  [SimpleJob(RuntimeMoniker.Net60)]
  [RPlotExporter]
   public class Md5VsSha256
  {
       private SHA256 sha256 = SHA256.Create();
       private MD5 md5 = MD5.Create();
       private byte[] data;

      [Params(1000, 10000)]
       public int N;

      [GlobalSetup]
       public void Setup()
      {
           data = new byte[N];
           new Random(42).NextBytes(data);
      }

      [Benchmark]
       public byte[] Sha256() => sha256.ComputeHash(data);

      [Benchmark]
       public byte[] Md5() => md5.ComputeHash(data);
  }

代码调用:

using BenchmarkDotNet.Running;

namespace ConsoleApp1
{
   internal class Program
  {
       static void Main(string[] args)
      {
           Console.WriteLine("Start" + DateTime.Now.ToString());
           var summary = BenchmarkRunner.Run<Md5VsSha256>();
           Console.WriteLine("END" + DateTime.Now.ToString());
      }
  }
}

运行效果:

在运行之前需要将应用程序编译为release版本,否则会出现异常。

BenchmarkDotNet 不仅仅是帮你运行benchmark方法,还帮你分析生成的结果:它会生成不同形式的报表,它的结果报表都是统计分析出来的。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值