今天介绍一个非常强大的基于.Net 的基准测试工具BenchmarkDotNet。
「BenchmarkDotNet」 已经被14300多个项目采用,包括非常多的知名开源项目,例如
「BenchmarkDotNet」能够自动在所有运行时运行基准,汇总测试结果,并打印一个汇总表,其中包含众多基准信息:
这些测试数据也可以导出为不同的格式(md, html, csv, xml, json等),包括图片:
最主要的是它可以非常容易的编写基准测试,只需要安装好NuGet包之后,给需要测试的方法标注 Attribute
,就可以执行测试。
这里可以使用控制台或单元测试来进行测试。
官方GitHub上分别提供了基于控制台和基于XUnit单元测试的基准测试:
接下来,以一个基于控制台的基准测试来讲解一下:
class Program
{
static void Main(string[] args)
{
BenchmarkRunner.Run<BenchmarkTest>();
}
}
[SimpleJob(RunStrategy.ColdStart, iterationCount: 100000)]
public class BenchmarkTest
{
[Benchmark()]
public void CreateTuple()
{
var temp = new Tuple<int, string>(1, "");
}
}
上述代码中,创建了一个 BenchmarkTest
类用于做基准测试,然后创建了一个 CreateTuple()
方法,该方法创建一个 Tuple
对象,然后我们给这个方法标记 [Benchmark()]
,标记该方法用于做基准测试,然后在BenchmarkTest
类上标记 [SimpleJob(RunStrategy.ColdStart, iterationCount: 100000)]
,表示是以冷启动的方式,执行该类要测试的基准方法100000次。
接下来,来看一下测试结果,输出:
可以看到控制台输出分为了几个部分。
可以看到控制台输出中黄色部分加下方表格,就是该报告主要内容,能看到当前执行测试时的运行环境,测试条件(IterationCount=100000 RunStrategy=ColdStart),表格中也能看到具体性能,比如,
简单描述了表格中的一些参数。
实际上在 BenchmarkDotNet
中,这样的统计数据列大概有90多条,可以参考这里(https://github.com/dotnet/BenchmarkDotNet/blob/master/src/BenchmarkDotNet/Columns/Column.cs)
下面挑出一些常用统计列,简单解释:
会给出一些警告,或者建议操作,像示例代码中生成100000个 Tuple
对象,他就报警方法执行实现太短,建议使用更多操作将其增加到至少100.0000 ms。
上面其实还有一部分控制台内容是 「Export」 内容 ,如下图所示:
默认给你生成了三种格式的报告,CSV格式,Markdownn格式,和Html格式,生成路径是运行根目录下的BenchmarkDotNet.Artifacts\results\
文件夹下的 BenchmarkDotNet.Console.BenchmarkTest-report
文件。
本篇抛砖引玉,只讲述基于控制台做基准测试,强烈建议各位看官阅读Github上的示例,学会使用更多的参数,借助 BenchmarkDotNet
做出更准确准确、更可靠的性能测试结果。
❝参考 BenchmarkDotNet Github地址:https://github.com/dotnet/BenchmarkDotNet 基于控制台Demo Github地址:https://github.com/dotnet/BenchmarkDotNet/tree/master/samples/BenchmarkDotNet.Samples 基于Xunit单元测试Demo Github地址:https://github.com/dotnet/BenchmarkDotNet/tree/master/tests/BenchmarkDotNet.IntegrationTests 统计数据列参考 Githu地址:https://github.com/dotnet/BenchmarkDotNet/blob/master/src/BenchmarkDotNet/Columns/Column.cs ❞
本文分享自 Niuery Diary 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!