2

C#(.NET 4.0)アプリケーションでは、さまざまなサイズのチャンクで大量のメモリを割り当てたり、割り当てを解除したりします。パフォーマンスを向上させるために、オブジェクトプールに移動したいと思います。

すでにオブジェクトプールを実装しており、パフォーマンスがいくらか向上しています。現在、スタックベースのバッキングストアを使用しています。他の可能な選択肢は、キューベースのストア、ConcurrentBag <>ベースのストア、List<>ベースのストアなどです。

バッキングストアの選択は、実際にはアプリケーションの特性に依存していると思います。そのため、現在、これらすべての異なるバッキングストアを使用してオブジェクトプールを実装し、パフォーマンスをテストしています。

ただし、オブジェクトプーリングのさまざまなバッキングストアの長所と短所についてのご意見をお聞かせください。

ありがとう

4

1 に答える 1

1

これまでのところ、この質問に対する回答はないので、私自身の回答を書きます。

Stack<>を使用することになりました。クレジット: http: //geekswithblogs.net/robp/archive/2008/08/07/speedy-c-part-2-optimizing-memory-allocations---pooling-and.aspx

さまざまなバッキングストアを試してみたところ、特定のケースではStack<>が最速であることがわかりました。

于 2011-02-04T08:13:11.167 に答える