事由:
这两天mentor给我布置了个任务让我用BenchmarkDotNet工具去测试一下同一个API 用同步和异步方法写性能上有什么差别。
顺带提一下:

啊啊啊啊 等我仔细看文档的时候文档 发现它让我用Release的模式去运行benchmark。 emmm...其实我之前一直在用Debug模式调试。。
所以各位在运行的时候,The best way is build our benchmark in the Release mode and run it from the command line.
过程:
首先 我们需要在Nuget上安装BenchMarkDotNet

(安装当前最新版本,当前我已经安装好了)
但是却安装失败出现两个error。
其中一个是

第二个

ok,第二个错误非常显眼,那我先尝试着按照它的说法解决 我边在Nuget上找到 Microsoft.CodeAnalysis.CSharp 2.8.2 ,Microsoft.CodeAnalysis.Common (= 2.8.2) 我安装的都是2.8.2的版本 但是其实这两个包都有更新的版本。安装完毕后 发现错误消失了,却跳出几个警告。(对后面的测试没有影响就先不搭理)
安装完,上述两个包后 再回去安装 BenchmarkDotNet 终于安装成功了。
Ok此时我们在新建一个Console.App ,命名为BenchMarkDotNetTest

在API层把需要的方法 前加上[Benchmark] 引用BenchmarkDotNet.Attributes;

注意:原来的方法中是有参数的,但是这里不允许有参数,我就把方法的入参和值直接写到方法里面去了。
这2个方法都在UserImpelement 类中所以我们在Main方法中这样写
static void Main(string[] args) { var summary = BenchmarkRunner.Run<UserImpelement>();
//var summary = BenchmarkRunner.Run(typeof(UserImpelement))//当然也可以这么写 Console.WriteLine("-----------------"); Console.WriteLine(summary); Console.ReadKey(); }点击运行,emmm,错误又来了

在百度上搜索了,但是未能找到结果,于是就去Bing上搜索
GitHub上有回复
https://github.com/dotnet/BenchmarkDotNet/issues/579

Ok 根据该大佬的解决方案 我们新创建了AllowNonOptimazed类
运行的summary改成
var summary = BenchmarkRunner.Run<UserImpelement>(new AllowNonOptimized());再次运行,运行开始。 运行需要一点时间
可以看到运行大概花费了1分52秒

总结果如下

我运行了多次每一次的数据都有变化,响应速度上也是有时CheckLogin快 有时AsyncCheckLogin更快些

