C# 使用基准点网络进行LOH基准测试
因此,我正在使用BenchMarkDotNet库进行一些基准测试,以比较字符串或流中的大型JSON文件的反序列化。我很想具体了解LOH的状况,但我找不到如何做到这一点 目前,我使用“MemoryDiagnoser”参数得出以下结论C# 使用基准点网络进行LOH基准测试,c#,large-object-heap,benchmarkdotnet,C#,Large Object Heap,Benchmarkdotnet,因此,我正在使用BenchMarkDotNet库进行一些基准测试,以比较字符串或流中的大型JSON文件的反序列化。我很想具体了解LOH的状况,但我找不到如何做到这一点 目前,我使用“MemoryDiagnoser”参数得出以下结论 是否有一种方法也可以对LOH进行基准测试?BenchmarkDotNet没有提供任何关于LOH的额外信息(根本没有我们可以轻松使用的托管API来添加任何有意义的信息) Maoni Stephens的旧MSDN文章解释了如何获得更多信息 如果您只想了解LOH的大小,可
是否有一种方法也可以对LOH进行基准测试?BenchmarkDotNet没有提供任何关于LOH的额外信息(根本没有我们可以轻松使用的托管API来添加任何有意义的信息) Maoni Stephens的旧MSDN文章解释了如何获得更多信息
如果您只想了解LOH的大小,可以使用Windows操作系统中的性能监视器。BenchmarkDotNet不提供任何关于LOH的额外信息(根本没有我们可以轻松用来添加任何有意义信息的托管API) Maoni Stephens的旧MSDN文章解释了如何获得更多信息
如果您只想获得LOH的大小,可以使用Windows操作系统中的性能监视器。单击询问功能。或者,由于它是开源的,请自行实现并提交修补程序。单击以询问功能。或者,因为它是开源的,所以自己实现并提交补丁。我试图使用Perfmon,但遇到了一个问题,不确定这是否与BenchmarkDotNet相关;当运行应该生成巨大LOH的方法时,Perfmon中的LOH根本不会移动。如果我在基准之外对这个函数进行一些调用,我会注意到LOH的增加。这可能与基准测试之间的GC调用有关,这会使分配/收集速度过快而无法检测到吗?(不知道这是否是一个愚蠢的问题……这里有点迷糊)您很可能正在查看父进程(您从控制台运行的),它不运行基准。BenchmarkDotNet为每个基准生成、构建和运行新的可执行文件。您可以使用要评测的代码创建一个简单的控制台应用程序,也可以使用BenchmarkDotNet实现自定义的
IDiagonoser
。我正在尝试使用Perfmon,但遇到了一个问题,不确定这是否与BenchmarkDotNet相关;当运行应该生成巨大LOH的方法时,Perfmon中的LOH根本不会移动。如果我在基准之外对这个函数进行一些调用,我会注意到LOH的增加。这可能与基准测试之间的GC调用有关,这会使分配/收集速度过快而无法检测到吗?(不知道这是否是一个愚蠢的问题……这里有点迷糊)您很可能正在查看父进程(您从控制台运行的),它不运行基准。BenchmarkDotNet为每个基准生成、构建和运行新的可执行文件。您可以使用要评测的代码创建一个简单的控制台应用程序,也可以使用BenchmarkDotNet实现自定义IDiagonoser
。