自学做蛋糕的网站,百度竞价推广计划,美食网站的设计与实现,世界十大搜索引擎排名1.简介在我们开发高性能代码时#xff0c;需要各种针对性能优化进行编码。那么如何才能知道我们所加的代码是否有性能方面的正向优化呢#xff1f;有了BenchmarkDotNet#xff0c;做性能对比测试就非常容易了#xff0c;只需要把你的测试方法加上特性[Benchmark], 想做不同…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 和 LoongArch642.详细内容官方地址地址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.RunMd5VsSha256();Console.WriteLine(END DateTime.Now.ToString());}}
}运行效果在运行之前需要将应用程序编译为release版本否则会出现异常。BenchmarkDotNet 不仅仅是帮你运行benchmark方法还帮你分析生成的结果它会生成不同形式的报表,它的结果报表都是统计分析出来的。