【问题标题】:How to benchmark logging infrastructure with BenchmarkDotNet?如何使用 BenchmarkDotNet 对日志基础设施进行基准测试?
【发布时间】:2016-07-03 19:29:01
【问题描述】:

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

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

作为练习,我编写了一个 xunit 测试来使用 Baseline 功能对控制台的写入进行基准测试,但测试从未完成,我最终终止了该进程,导致我在 SO 上发表这篇文章。

如果我以错误的方式使用 BenchmarkDotNet,是否还有另一种更符合我想要完成的测试套件?

谢谢你, 斯蒂芬

【问题讨论】:

  • 我也做了同样的事情来比较 log4net 和 nlog,请看medium.com/@imanushin/…。所以你可以只 fork 目标存储库并添加你想要的基准。

标签: c# benchmarkdotnet


【解决方案1】:

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

相反,如果可能,我建议您将每个框架集成到您的应用程序中,并在尽可能真实的条件下测量性能......包括“灾难性故障”条件或日志记录可能会受到打击的情况。还可以使用什么都不做(并且尽可能早地什么都不做)的“空记录器”进行测试,这样您就可以确定一种基线。

这只会告诉您这些日志记录框架在您的特定应用程序中的行为方式 - 但我建议您了解这些是最重要的。

【讨论】:

    猜你喜欢
    • 2018-09-12
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 2022-08-04
    • 2023-03-13
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    相关资源
    最近更新 更多