一款超级强大且简单易用的性能测试库BenchmarkDotNet(常见的性能测试)

性能测试是一个常见的功能需求,但估计很多 .NET 开发者还在使用 DateTime.Now 测试代码性能。偶尔对小段代码进行测试,这样的方法也不错。但若是测试规模比较大,需要的诊断信息更丰富,那这样简单甚至可以说简陋的方法肯定是行不通了。最好是使用专业的性能测试工具。

基本介绍

Benchmarkdotnet 是由 dotnet 官方提供的一款专门面向 .NET 平台的性能测试库,可以帮助开发者直接将任何方法转换为基准测试,跟踪分析其性能,产生可靠、准确的测试结果,并共享可重复的测量试验。 如果你熟悉单元测试,你会发现使用 BenchmarkDotNet 进行基准测试和写单元测试非常像,非常简单直观易上手。更秒的是,BenchmarkDotNet 遵循了一些性能测试的最佳实践,能够提醒纠正一些常见的错误用法。

简单示例

只需要在需要测试的方法上加上 [Benchmark] 特性,就可以将其转化为一个基准测试。以下是官方给出的简单示例:

using System; using System.Security.Cryptography; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Running; [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); } public class Program { public static void Main(string[] args) { BenchmarkRunner.Run<Md5VsSha256>(); } }

结果分析

运行上述代码后,会输出以下结果。

一款超级强大且简单易用的性能测试库BenchmarkDotNet(常见的性能测试)

可以看出,结果中简单列明了 BenchmarkDotNet 的版本,操作系统版本,CPU 类型和 .NET SDK信息。

在测试及结果表格中,显示了运行册数、消耗时间的均值、标准差和99.9%置信区间的标准误

另外,在项目的 bin/Release/(BenchmarkDotNet 需要运行在Release模式下)还生成了测试结果的 markdown 和 excel 文件。

当然,上述结果只是默认标准结果,你还可以通过配置显示更多项目,比时间消耗的中位数、秩等项目。

同时,也可以在测试类上加上 [RPlotExporter] 特性,可以在 bin 目录下输出 R 语言的绘图代码。

一款超级强大且简单易用的性能测试库BenchmarkDotNet(常见的性能测试)

总之, BenchmarkDotNet 非常简单易用:你无需成为一个专家即可写出高质量的基准测试来。

目前已经有超过 11700 款项目使用 BenchmarkDotNet 。包括微软官方项目 ASP.NET CoreML.NETEntity Framework Core, F#等, 还有大量第三方项目如 Newtonsoft.Json, Elasticsearch.Net, Dapper, Autofac, LiteDB, GraphQL for .NET, .NET Docs,,TensorFlow.NET, Apache Thrift等。

如果有性能测试的需要,强烈推荐使用!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年11月2日 上午9:51
下一篇 2022年11月2日 上午9:53

相关推荐

  • 徐鸣阳:全面夯实党建基础 高效推进征地拆迁(徐鸣局长)

    来源:【嘉兴日报-嘉兴在线】 今天下午,秀洲区委书记徐鸣阳率队赴王江泾镇村社调研基层党建和征地拆迁等工作。他强调,要进一步增强基层党组织政治功能和组织力,夯实基层党建基础,打造坚强…

    科研百科 2023年7月26日
    189
  • 新野县应急管理局:用活党建+ 安全千万家(党建引领应急管理工作)

    新野县应急管理局党委以高质量党建助推安全生产工作向纵深发展,紧紧围绕“应急就是应战”工作标准,把提升应急管理队伍作风素质作为“头等大事”,探索创新“党建 ”工作机制,把业务工作的堵…

    科研百科 2023年11月4日
    168
  • 数字化项目核算管理系统

    数字化项目核算管理系统: 提升项目管理效率 随着数字化技术的不断发展,数字化项目核算管理系统已经成为了现代项目管理中不可或缺的一部分。它可以帮助项目经理和团队成员更高效地管理项目,…

    科研百科 2025年1月27日
    0
  • 科研项目研究内容书写

    科研项目研究内容 随着科技的不断发展,科研项目的研究内容也越来越多样化。在最近的项目中,我们主要研究如何通过人工智能来提高生产效率。 首先,我们通过对生产线上的机器人进行智能化升级…

    科研百科 2025年3月26日
    0
  • 让青少年爱上体育享受运动(让学生爱上体育)

    开展体育干预,重视“体育疗法”,解决青少年肥胖、近视等健康问题 让青少年爱上体育享受运动(金台视线·关注全民健身③) 本报记者 向子丰 日前,十三届全国人大常委会第三十四次会议审议…

    科研百科 2022年6月5日
    230
  • 全过程工程项目管理师时间

    全过程工程项目管理师: 定义、角色与职责 全过程工程项目管理师(全过程工程项目管理师)是指在工程项目的各个阶段,负责项目管理、协调、控制和协调的专业人士。全过程工程项目管理师不仅需…

    科研百科 2024年8月23日
    30
  • 造价工程师必备知识—项目人员配备标准(7)市政小型项目(项目造价人员的要求)

    以下是关于造价工程师必备知识的好文章,自己整理,希望大家多多点赞收藏哦!感谢!!! 我们在做项目进场前规划时,一个项目,究竟需要配备多少人才比较合适。配置人员偏少,导致项目管理人员…

    科研百科 2022年7月14日
    238
  • 蚂蚁分工SaaS项目管理系统

    蚂蚁分工SaaS项目管理系统:一个高效团队协作的利器 近年来,随着互联网的快速发展,越来越多的企业开始意识到团队协作的重要性。在团队协作中,项目管理能力变得尤为重要。蚂蚁分工Saa…

    科研百科 2025年1月12日
    0
  • 如何加强科研项目立项

    如何加强科研项目立项 科研项目立项是科学研究的第一步,也是最为重要的一步。一个合适的科研项目立项能够促进科学研究的发展,提高科学研究的质量。然而,目前科研项目立项仍然存在一些问题,…

    科研百科 2025年3月21日
    0
  • 临床路径管理工作制度(临床路径管理工作制度内容)

    第一章 制度总则 第一条 为提高医疗质量,保证医疗安全,指导我院开展临床路径管理工作,制定本制度。 第二条 各临床科室、相关科室应当参照本指导原则实施临床路径管理工作。 第二章 临…

    科研百科 2024年4月24日
    130