在我们的C#(.NET 4.0)应用程序中,我们以不同大小的块分配和解除分配很多内存。我们希望移动到对象池,以提高性能。
我们已经实现了一个对象池,并且看到了一些性能提升。我们目前正在使用基于堆栈的后备存储。其他可能的替代方案是基于队列的存储,ConcurrentBag<>基于商店,列表<>基于商店等
我认为后备存储的选择实际上取决于应用程序的特性,因此我们现在正在使用所有这些不同的后备存储实现对象池并测试性能。
但是,我真的很想听听您对对象池的不同后备存储的利弊的看法。
由于
答案 0 :(得分:1)
到目前为止,这个问题没有答案,所以我会写下自己的答案:
使用Stack<>结束。感谢:http://geekswithblogs.net/robp/archive/2008/08/07/speedy-c-part-2-optimizing-memory-allocations---pooling-and.aspx
我们刚试验了不同的后备存储和Stack<>在我们的特定情况下,这是最快的。