【发布时间】:2011-01-17 11:21:39
【问题描述】:
有两个类似的应用程序:一个是托管的,另一个是非托管的。两者都对大型对象使用了重分配模式。 IE。他们在(长期运行的)循环中请求很多这些对象,并且在使用后立即释放这些对象。托管应用程序使用立即调用的 IDisposable()。非托管对象正在使用析构函数。
部分但不是所有的对象可以重复使用。因此,考虑使用池以提高执行速度并最大限度地降低内存碎片的风险。
您希望哪个应用程序从池中获得更多收益?为什么?
@Update:这是关于一个数学库的。因此,那些大对象将是值类型的数组。大多数情况下,对于 LOH 来说足够大。我很肯定,池化会大大提高托管方的性能。存在许多库 - 用于托管/非托管环境。我所知道的他们中没有一个人真正做到了这种汇集。我想知道为什么?
【问题讨论】:
-
我希望是这样。但它只是一个我们无法摆脱的讨论话题......我不想在这里对可能的答案产生偏见,但我当然有一个想法,我希望得到证实或反驳。还应该有助于了解上下文。
-
Afaik 池对于大型托管对象非常重要。
标签: .net performance unmanaged pooling