.Net性能测试工具BenchmarkDotNet学习

BenchmarkDotNet 是一个用于性能基准测试的开源框架。它可以让开发人员编写简单易懂的代码,并测量和分析这些代码的性能表现,从而帮助开发人员优化其代码,以达到更高的性能和更好的效率。

源码地址:https://github.com/dotnet/BenchmarkDotNet

NuGet地址:https://www.nuget.org/packages/BenchmarkDotNet

  1. 用起来还比较简单,在对应的method上面打上[Benchmark]标记即可;

  2. 通过var summary = BenchmarkRunner.Run();来启动;

  3. 要求class和method必须是public;

  4. 要求程序必须是Release;

  5. 会自动将程序中打标记的对应模块跑很多遍,最后给出均值和偏差;

项目中添加BenchmarkDotNet

NuGet\Install-Package BenchmarkDotNet -Version 0.13.5
<PackageReference Include="BenchmarkDotNet" Version="0.13.5" />

代码示例

代码来源于最近看的冯辉的 《.NET框架设计与实现》附源码:

​
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Configs;
using BenchmarkDotNet.Jobs;
using BenchmarkDotNet.Running;
​
//运行基准测试
BenchmarkRunner.Run<PgoBenchmarks>();
​
[Config(typeof(MyEnvVars))]
public class PgoBenchmarks
{
   // 自定义配置环境 "Default vs DPGO"
   class MyEnvVars : ManualConfig
  {
       public MyEnvVars()
      {
           // 使用默认模式
           AddJob(Job.Default.WithId("Default mode"));
           // 使用DPGO模式模式
           AddJob(Job.Default.WithId("Dynamic PGO")
              .WithEnvironmentVariables(
                   new EnvironmentVariable("DOTNET_TieredPGO", "1"),
                   new EnvironmentVariable("DOTNET_TC_QuickJitForLoops", "1"),
                   new EnvironmentVariable("DOTNET_ReadyToRun", "0")));
​
      }
  }
​
  [Benchmark]
  [Arguments(6, 100)]
   public int HotColdBasicBlockReorder(int key, int data)
  {
       if (key == 1)
           return data - 5;
       if (key == 2)
           return data += 4;
       if (key == 3)
           return data >> 3;
       if (key == 4)
           return data * 2;
       if (key == 5)
           return data / 1;
       return data; // 默认key为6,所以会使用返回data
  }
}
​
​

运行结果

传送门:https://raokun.top/raokun/archives/net-xing-neng-ce-shi-gong-ju-benchmarkdotnet-xue-xi

.Net性能测试工具BenchmarkDotNet学习的更多相关文章

  1. 性能测试工具BenchmarkDotnet

    .NET Core中的性能测试工具BenchmarkDotnet https://www.cnblogs.com/lwqlun/p/9671611.html 背景介绍 之前一篇博客中,我们讲解.NET ...

  2. .NET Core中的性能测试工具BenchmarkDotnet

    背景介绍 之前一篇博客中,我们讲解.NET Core中的CSV解析库,在文章的最后,作者使用了性能基准测试工具BenchmarkDotNet测试了2个不同CSV解析库的性能,本篇我们来详细介绍一下Be ...

  3. .NET平台性能测试工具BenchmarkDotnet 简介[译文]

    项目中需要用到性能测试,发现.net 平台的这个神器. 觉得很不错,接下来准备做个系列.具体参考官方介绍 做基线对比测试不是那么容易,你很容易就翻车掉坑里,BenchmarkDotNet 会帮你避坑( ...

  4. 【学习笔记】Iperf3网络性能测试工具

    [学习笔记]Iperf3网络性能测试工具 网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理.网络存在安全漏洞等原因,都会导致网络带宽利用率不高. ...

  5. 性能测试学习第二天_性能测试工具概述Loadrunner介绍

    性能测试工具概述Loadrunner介绍 http://www.51testing.com/html/42/n-6542.html 其中,T直接影响用户体验时间 性能测试的原理: 记录一个访问过程的通 ...

  6. 性能测试工具 转自https://yq.aliyun.com/articles/35149?spm=5176.100239.blogcont35147.8.rsow6k

    摘要: 继续这个系列的学习,这一节重点介绍目前流行的性能测试工具以及如何选择适合项目的工具.在此之前,我已经对性能测试工具的原理与架构做了分析. http://www.cnblogs.com/fnng ...

  7. 理解 OpenStack + Ceph (8): 基本的 Ceph 性能测试工具和方法

    本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...

  8. 开源多线程性能测试工具-sysbench

    导读 sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试.数据库目前支持MySQL/Oracle/PostgreSQL.本文主要演示Mysql测试 ...

  9. 【转】开源性能测试工具 - Apache ab 介绍

    版权声明:本文可以被转载,但是在未经本人许可前,不得用于任何商业用途或其他以盈利为目的的用途.本人保留对本文的一切权利.如需转载,请在转载是保留此版权声明,并保证本文的完整性.也请转贴者理解创作的辛劳 ...

  10. Web网站的性能测试工具

    随着Web 2.0技术的迅速发展,许多公司都开发了一些基于Web的网站服务,通常在设计开发Web应用系统的时候很难模拟出大量用户同时访问系统的实际情况,因此,当Web网站遇到访问高峰时,容易发生服务器 ...

随机推荐

  1. 基于Nginx以及web服务器搭建在线视频播放

    安装Nginx Nginx官网下载地址 网址打开后如图 下载windows版本的Nginx,这里下载最新的1.18.0版本 Nginx在windows下的安装只需要将其解压缩即可.建议将解压后的目录移 ...

  2. golang sync.Once用法

    sync.Once能确保实例化对象Do方法在多线程环境只运行一次,内部通过互斥锁实现 Do方法 Once类型的Do方法只接收一个参数,参数的类型必须是func(),即无参数无返回的函数.该方法的功能并 ...

  3. raid随笔

    1.raid 0 准备两个磁盘 [root@localhost ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 40G 0 disk ...

  4. python3判断ip类型

    利用socket库附带的校验功能实现校验.

  5. 初次使用Sqoop报错,sqoop命令不能正常使用:hcatalog does not exist!accumulo does not exist!

    1.问题描述: (1)问题示例: [hadoop@master Tmp]$ sqoop  helpWarning: /home/grid/Sqoop/sqoop-1.4.7/../hcatalog d ...

  6. Navicat Premium 12安装包下载及安装

    Navicat Premium 12安装包下载及安装 安装成功了 前提:这个好像是64位的,32位的电脑 我不知道行不行没有试过 1.发邮件17673114272@163.com获取资源后    解压 ...

  7. 服务器中VirtualBox子网访问

    本人常用的虚拟机软件是VirtualBox,由于笔记本性能,磁盘存储大下限制,以及VirtualBox客户机无法在多个设备间直接方便的使用等原因,我把几个虚拟的系统全部移动到便携式服务器中. 移动之后 ...

  8. 在目标服务器Centos7上安装 GitLab Runner

    1.安装提示: 注意:如果你打算通过gitlab-ci,将项目部署到"目标服务器"上,那么这个GitLab Runner就要提前安装到这个"目标服务器"上 (这 ...

  9. 关于proTable设置列固定,始终没有固定的效果的原因

    使用proTable设置操作列固定 const columns: ProColumns<IssueItem>[] = [ { title: '操作', valueType: 'option ...

  10. ASP.NET Core Web API 接口限流

    前言 ASP.NET Core Web API 接口限流.限制接口并发数量,我也不知道自己写的有没有问题,抛砖引玉.欢迎来喷! 需求 写了一个接口,参数可以传多个人员,也可以传单个人员,时间范围限制最 ...