我想在
这样的方法中计算垃圾收集的时间//code
testfunction()
//code
//display the time spend by garbage collection when we was in the testfunction
Display(GarbageCollectionTime(testfunction))
我看了看 https://msdn.microsoft.com/en-us/library/x2tyfybc(v=vs.110).aspx https://msdn.microsoft.com/en-us/library/ee851764(v=vs.110).aspx
但我无法理解如何做到这一点。
请有人知道如何做到这一点。
答案 0 :(得分:2)
您可以尝试JetBrains dotTrace或dotMemory。 dotTrace在调用树中的方法下显示特殊节点[Garbage Collection]。 dotMemory可以向您展示您可能想要了解的关于记忆的一切信息。
答案 1 :(得分:2)
从函数测量的时间中减去它以获得没有gc次的函数时间
您想在没有GC影响的情况下进行基准测试。将GC置于低延迟模式。这将推迟最昂贵的GC周期,直到您解除批次延迟模式。
GCSettings.LatencyMode = GCLatencyMode.LowLatency;
还有较新的SustainedLowLatency
。我不知道它做了什么但它可能更具攻击性。阅读文档。
现在这不是一个完全有效的基准,因为如果你的函数分配GC时间类型是该函数的一部分。最好多次测量功能并包括许多GC循环,以便摊销的GC时间是基准测试的一部分。