一款超级强大且简单易用的性能测试库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

相关推荐

  • 智慧工地项目管理系统

    智慧工地项目管理系统 随着数字化技术的不断发展,工地项目的管理也逐渐转向了数字化时代。智慧工地项目管理系统是一种利用数字化技术来提升工地项目管理水平的软件系统。该系统能够帮助工地项…

    科研百科 2024年12月17日
    0
  • 漳州项目售后管理系统

    漳州项目售后管理系统 漳州项目售后管理系统是一种能够帮助企业进行项目售后管理的软件系统。随着项目的不断推进,售后服务也逐渐成为企业发展的重要一环。漳州项目售后管理系统可以有效地帮助…

    科研百科 2025年6月7日
    0
  • 张勤教授(张勤俭让科研项目在家乡落地生根)

    张勤俭让科研项目在家乡落地生根 张勤俭是一位科学家,他一直致力于探索未知的科学领域。他深知,科学的发展需要不断的实验和探索,而实验和探索的成本是非常高昂的。因此,他一直在思考如何更…

    科研百科 2024年4月4日
    109
  • 邰隽科研项目 邰凯平课题组

    邰隽科研项目 邰凯平课题组 近年来,随着科技的飞速发展,人工智能在各个领域的应用也越来越广泛。在人工智能领域,有一个备受关注的课题组,它就是邰隽科研项目 邰凯平课题组。 邰隽科研项…

    科研百科 2024年3月29日
    117
  • 江苏省农林厅科研项目

    江苏省农林厅科研项目 近年来,江苏省农林厅一直致力于推动农业现代化建设,其中,科研项目是推进农业现代化的重要方式之一。本次科研项目的主题为“高效利用和保护水资源,提高农业可持续发展…

    科研百科 2025年5月2日
    1
  • 业务流程管理包括哪些

    业务流程管理是一种管理方法,用于优化和协调企业的业务流程,以提高效率和创造价值。业务流程管理包括多个方面,包括流程设计、流程执行、流程监控和流程改进。 流程设计是业务流程管理的第一…

    科研百科 2024年8月12日
    39
  • 麻醉科研项目书籍排行榜前十名

    麻醉科研项目书籍排行榜前十名 在开展麻醉科研项目时,选择合适的书籍可以帮助研究者更好地理解和掌握相关技术。以下是十个麻醉科研项目书籍排行榜,排名不分先后。 1.《麻醉学基础》 作者…

    科研百科 2024年4月12日
    185
  • js项目管理系统

    js项目管理系统 随着软件开发的不断变化和发展,项目管理系统的需求也在不断增加。js项目管理系统是一种能够帮助软件开发团队高效地管理项目、协作和沟通的工具。本文将介绍js项目管理系…

    科研百科 2024年12月11日
    0
  • 进度计划编制软件下载

    进度计划编制软件下载 进度计划编制软件是一种常用的工具,用于帮助人们编写,审核和跟踪进度计划。无论是项目团队,还是个人,都需要对项目的进度进行有效的管理,以确保项目按时完成。 下载…

    科研百科 2024年5月31日
    102