如何使用BenchmarkDotNet对日志基础架构进行基准测试?

时间:2016-07-03 19:29:02

标签: c# benchmarkdotnet

我们有一个内部框架来处理我们的日志记录,数据访问,加密......你的名字。我想开始比较性能,比如日志功能与其他主流系统,即nlog,log4net,serilog。显然,我从功能上开始,所有系统都有,比如记录到文件或控制台。

BenchmarkDotNet适用于这种情况吗?我读过的大多数示例和论文都指出了非常紧凑的循环中的使用场景,并且主要使用IO,如内存和CPU,而不是磁盘。

作为练习,我编写了一个xunit测试来使用Baseline功能对控制台进行基准测试,但是测试从未完成,我最终杀死了这个过程,导致我在SO上发布这个帖子。

如果我使用BenchmarkDotNet,那么还有另一种测试方法是否更符合我想要完成的内容?

谢谢你, 斯蒂芬

1 个答案:

答案 0 :(得分:5)

BenchmarkDotNet最适合CPU绑定代码的微基准测试。有很多因素可以影响IO绑定代码,我不认为微基准测试是一种很好的方法。

相反,如果可能的话,我会建议您将每个框架集成到您的应用程序中,并在尽可能真实的条件下测量性能......包括“灾难性故障”情况或日志记录可能会遭受重创的情况。还要使用“空记录器”进行测试,该记录器不执行任何操作(并且尽可能不做任何事情),以便您可以确定某种基线。

这只会告诉您这些日志记录框架对于您的特定应用程序的行为 - 但这是您发现的最重要的事情,我建议。