前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#性能测试BenchmarkDotnet

C#性能测试BenchmarkDotnet

作者头像
JusterZhu
发布2022-12-07 20:57:21
5700
发布2022-12-07 20:57:21
举报
文章被收录于专栏:JusterZhu

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。

代码语言:javascript
复制
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);
    }
代码调用:
代码语言:javascript
复制
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方法,还帮你分析生成的结果:它会生成不同形式的报表,它的结果报表都是统计分析出来的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JusterZhu 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.简介
  • 2.详细内容
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档