BenchmarkDotNet

.NET Core性能测试组件BenchmarkDotNet 支持.NET Framework Mono

.NET Core 超强性能测试组件BenchmarkDotNet 支持Full .NET Framework, .NET Core (RTM), Mono。

BenchmarkDotNet支持 C#, F#, 和Visual Basic,可以跨平台运行。

而且支持各种报表导出,相当的方便。

GitHub: https://github.com/PerfDotNet/BenchmarkDotNet

下面我们来实际使用及体验。

本篇主要讲解在.NET Core 应用中使用 BenchmarkDotNet。

新建应用

首先我们新建一个.NET Core 控制台应用 NETCoreTest

安装BenchmarkDotNet

使用NuGet 命令行安装:

Install-Package BenchmarkDotNet

也可以在NuGet 管理器中搜索安装

编写代码

安装好以后我们就可以编写测试代码

新建一个 Md5VsSha256 类 ,在方法中加入Benchmark 特性

    public class Md5VsSha256
    {
        private const int N = 10000;
        private readonly byte[] data;

        private readonly SHA256 sha256 = SHA256.Create();
        private readonly MD5 md5 = MD5.Create();

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

        [Benchmark]
        public byte[] Sha256()
        {
            return sha256.ComputeHash(data);
        }

        [Benchmark]
        public byte[] Md5()
        {
            return md5.ComputeHash(data);
        }
    }

执行测试

下面我们来执行

在Program.cs Main 中加入如下代码:

var summary = BenchmarkRunner.Run<Md5VsSha256>();

然后执行程序,可以使用dotnet run 也可以使用vs 的DEBUG。

下面是控制台输出的结果

执行完以后在程序目录下会有一个BenchmarkDotNet.Artifacts 文件夹。

里面也会有对应的测试结果文件。

更多强大的功能可以参看官方文档:https://perfdotnet.github.io/BenchmarkDotNet/

时间: 2024-08-08 09:40:37

BenchmarkDotNet的相关文章

BenchmarkDotNet(性能测试)

转载自:http://www.cnblogs.com/Leo_wl/p/5918279.html .NET Core性能测试组件BenchmarkDotNet 支持.NET Framework Mono .NET Core 超强性能测试组件BenchmarkDotNet 支持Full .NET Framework, .NET Core (RTM), Mono. BenchmarkDotNet支持 C#, F#, 和Visual Basic,可以跨平台运行. 而且支持各种报表导出,相当的方便. G

本文告诉大家如何使用 benchmarkdotnet 做测试

经常我写一个类,作为一个工具类,小伙伴会问我这个类的性能,这时我就需要一个标准的工具进行测试. 现在在 github 提交代码,如果有小伙伴想要知道某个函数的性能,就会用 BenchmarkDotNet 进行测试. 例如我有一个函数 StooTer ,我定义这个函数的性能是非常高,我需要告诉大家在什么的设备运行,但是因为每个人的写法不一样,所以就比较难看.而且谁也不知道你是如何测试,也许使用 StopWatch 或 DateTime 来测试. 但是在 github 经常可以看到下面的测试 Ben

利用BenchmarkDotNet 测试 .Net Core API 同步和异步方法性能

事由: 这两天mentor给我布置了个任务让我用BenchmarkDotNet工具去测试一下同一个API 用同步和异步方法写性能上有什么差别. 过程: 首先 我们需要在Nuget上安装BenchMarkDotNet (安装当前最新版本,当前我已经安装好了) 但是却安装失败出现两个error. 其中一个是 第二个 ok,第二个错误非常显眼,那我先尝试着按照它的说法解决  我边在Nuget上找到 Microsoft.CodeAnalysis.CSharp 2.8.2 ,Microsoft.CodeA

一个小时学会Git

最近要与部门同事一起做技术分享,我选择了Git,因为Git 是一种在全球范围都广受欢迎的版本控制系统.在开发过程中,为了跟踪代码,文档,项目等信息中的变化,版本控制变得前所未有的重要. 一.版本控制概要 1.1.什么是版本控制 版本控制(Revision control)是一种在开发的过程中用于管理我们对文件.目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术. 实现跨区域多人协同开发 追踪和记载一个或者多个文件的历史记录 组织和保护你的源代码和文档 统计工作

使用 JavaScriptService 在.NET Core 里实现DES加密算法

文章<ASP.NET Core love JavaScript>和<跨平台的 NodeJS 组件解决 .NetCore 不支持 System.Drawing图形功能的若干问题>为我们扩展.NET Core的API提供了一套解决方案,上周在看.NET的加解密算法发现目前为止没有包括DES算法,github上在才刚刚加入,具体可以看 https://group.cnblogs.com/topic/75273.html . Node.js的Crypto库就提供各种加密算法,可以非常方便地

NetCore开源项目集合

具体见:https://github.com/thangchung/awesome-dotnet-core 半年前看到的,今天又看到了,记录下. General ASP.NET Core Documentation - The official ASP.NET Core documentation site. .NET Core Documentation - Home of the technical documentation for .NET Core, C#, F# and Visual

快速序列化组件MessagePack介绍

简介 MessagePack for C#(MessagePack-CSharp)是用于C#的极速MessagePack序列化程序,比MsgPack-Cli快10倍,与其他所有C#序列化程序相比,具有最好的性能. MessagePack for C#具有内置的LZ4压缩功能,可以实现超快速序列化和二进制占用空间小. 性能永远是重要的! 可用于游戏,分布式计算,微服务,数据存储到Redis等.支持.NET, .NET Core, Unity, Xamarin. 从上图我们看出MessagePack

谈谈在.NET Core中使用Redis和Memcached的序列化问题

前言 在使用分布式缓存的时候,都不可避免的要做这样一步操作,将数据序列化后再存储到缓存中去. 序列化这一操作,或许是显式的,或许是隐式的,这个取决于使用的package是否有帮我们做这样一件事. 本文会拿在.NET Core环境下使用Redis和Memcached来当例子说明,其中,Redis主要是用StackExchange.Redis,Memcached主要是用EnyimMemcachedCore. 先来看看一些我们常用的序列化方法. 常见的序列化方法 或许,比较常见的做法就是将一个对象序列

SmartSql = Dapper + MyBatis + Cache(Memory | Redis) + ZooKeeper + R/W Splitting + ......

SmartSql Why 拥抱 跨平台 DotNet Core,是时候了. 高性能.高生产力,超轻量级的ORM.156kb (Dapper:168kb) So SmartSql TargetFrameworks: .NETFramework 4.6 & .NETStandard 2.0 SmartSql = SmartSql = MyBatis + Cache(Memory | Redis) + ZooKeeper + R/W Splitting +Dynamic Repository + ..