【问题标题】:LOH benchmarking using benchmarkdotnet使用 benchmarkdotnet 进行 LOH 基准测试
【发布时间】:2018-09-12 19:16:40
【问题描述】:

所以我正在做一些基准测试来比较使用 BenchMarkDotNet 库从字符串或流中反序列化一个大 JSON 文件。我想具体查看 LOH 的状态,但我找不到如何操作。

目前我有以下情况,使用“MemoryDiagnoser”参数。

有没有办法同时对 LOH 进行基准测试?

【问题讨论】:

  • 点击New Issue button 询问功能。或者,既然是开源的,那就自己实现并提交补丁。

标签: c# large-object-heap benchmarkdotnet


【解决方案1】:

BenchmarkDotNet 不提供有关 LOH 的任何额外信息(根本没有我们可以轻松用于添加任何有意义信息的托管 API)。

This Maoni Stephens 的旧 MSDN 文章解释了如何获取更多信息。

如果您只想获得 LOH 的大小,可以使用 Performance Monitor,它是 Windows 操作系统的一部分。

【讨论】:

  • 我正在尝试使用 Perfmon 但我遇到了一个问题,不确定这是否与 BenchmarkDotNet 有关;当运行应该生成巨大 LOH 的方法时,Perfmon 中的 LOH 根本不会移动。但是,如果我在基准测试之外对该函数进行一些调用,我会注意到 LOH 的增强。是否与基准之间的 GC 调用有关,这会使分配/收集太快而无法检测到? (不知道这是不是一个愚蠢的问题......这里有点迷失)
  • 您很可能正在查看不运行基准测试的父进程(您从控制台运行的内容)。 BenchmarkDotNet 为每个基准测试生成、构建和运行一个新的可执行文件。您可以使用要分析的代码创建一个简单的控制台应用程序,也可以实现自定义 IDiagonoser 并使用 BenchmarkDotNet 来完成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 2022-08-04
  • 2011-04-27
  • 2012-11-11
  • 2014-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多