今天,咱们将研究如何使用Benchmark.Net来测试代码性能。借助基准测试,咱们能够建立基准来验证所作的更改是否按预期工做而且不会致使性能降低。app
并不是每一个项目都须要进行基准测试,可是若是您正在开发的是NuGet程序包或通用dll,则颇有意义。咱们将使用它来解决一个古老的问题,字符串拼接,好比下面这样:函数
string myString = "string1" + "string2" + "string3" + "string4" + "string5"; Console.WriteLine(myString);
咱们不少人都知道建议使用StringBuilder做为替代方法,而且速度要快得多,特别是在您有不少字符串的状况下。工具
StringBuilder sb = new StringBuilder(); sb.Append("string1"); sb.Append("string2"); sb.Append("string3"); sb.Append("string4"); sb.Append("string5"); Console.WriteLine(sb.ToString());
首先,咱们须要建立一个控制台项目,BenchmarkTesting.App
性能
接下来,咱们添加NuGet包 BenchmarkDotNet
测试
而后,修改 program.cs文件中,把可访问性改为 publicui
如今咱们能够建立一些测试方法,咱们直接修改program.cs, 每一个测试方法都须要 [Benchmark]
特性,我建立了三个示例,分别使用+运算符,Linq的Concat函数和使用StringBuilder拼接。线程
最后,在控制台应用程序的Main入口点中,添加 BenchmarkRunning Run命令:翻译
而后咱们使用下边的命令运行测试,或者直接使用VS启动项目,须要切换到Release模式下code
dotnet run -p BenchmarkTesting.app.csproj -c Release
运行大约须要几分钟,基准测试工具在后台建立大量线程/做业并屡次运行测试,为了得到一致的结果,建议最小化打开的应用程序,而且在运行时不要执行任何其余操做,输出以下所示,其中包含不少信息。orm
单位"us"是"μs"或微秒的缩写,一微秒等于一毫秒的1/1000。
因而可知,StringBuilder要比+运算符效率更高,Linq Concat函数也相对高效,但仍是没有StringBuilder快。
拼接字符串时使用StringBuilder! 本篇文章只是简单做的作了介绍,Benchmark.NET是测试性能的很是强大的工具,若是须要构建Nuget包,或者开发通用类库时,这将是一种很好的测试方法。
原文连接: https://samlearnsazure.blog/2021/01/12/measuring-code-performance-with-benchmark-net/
欢迎扫码关注咱们的公众号 【全球技术精选】,专一国外优秀博客的翻译和开源项目分享,也能够添加QQ群 897216102