我正在对一些处理大量数据的.NET代码运行一些性能测试。我想要一些测试,确保垃圾收集器不影响我的结果。如何暂时暂停垃圾收集器?
答案 0 :(得分:11)
通过BCL API无法实现此目的。
关闭特定算法的分析也不是一个好主意,因为它会产生错误的结果。垃圾收集器将在程序执行期间运行。没有GC的分析可能会隐藏算法的实际问题,如果它在现实世界中导致大量垃圾收集。
答案 1 :(得分:3)
我知道我回答这个问题有点迟,但根据MSDN http://msdn.microsoft.com/en-us/library/system.runtime.gcsettings.latencymode.aspx,其中一个名为GCSettings.LatencyMode
的属性可以设置为LowLatency
。除非存在低内存条件或显式调用以启动GC,否则此值将阻止Gen2 GC。
答案 2 :(得分:2)
现实世界将包括垃圾收集。由于这是一个随机到达过程(泊松),因此可能值得以蒙特卡罗方式进行,并进行几次分析运行并对结果求平均值。