13

動的に割り当てられたオブジェクトよりもオブジェクト プールを優先する必要があるのはいつですか?

毎秒何千ものオブジェクトを作成および破棄する必要があります。オブジェクトプールを支持することを決定するのに十分ですか?

ありがとう。

4

4 に答える 4

10

はい、これでオブジェクト プールを選択するのに十分です。

Boost ドキュメントの引用

プールはいつ使用する必要がありますか?

プールは通常、小さなオブジェクトの割り当てと割り当て解除が頻繁に行われる場合に使用されます。別の一般的な使用法は、多くのオブジェクトがメモリから削除される可能性がある上記の状況です。

Boost プールライブラリを参照してください

于 2009-08-09T09:14:14.277 に答える
8

測る、測る、測る。そうすれば、憶測やガイドラインに頼る必要がなくなります。

また、Dirk Grunwald のCustomMallocがまだ利用可能な場合は、試してみてください。malloc単一のアプリケーションのニーズに合わせて調整された の実装を合成します。

于 2009-08-09T16:10:56.960 に答える
7

オブジェクトの破棄、割り当て解除、割り当て、および構築の予想されるコストは、新しい用途のために再初期化するコストよりも高くなります。

于 2009-08-09T09:03:51.723 に答える
4

通常、1 秒間に何千ものオブジェクトを作成および破棄する場合は、少なくともオブジェクト プールを使用する必要があります。

特定のサイズのオブジェクトを純粋に割り当てるカスタム アロケータを使用できます。new をオーバーライドし、オブジェクト専用のヒープを事前に割り当てます。ビットフィールドと配列を使用するのは比較的簡単です。

基本的に、オブジェクトが小さい場合、カスタム ヒープの方がメモリ効率が高くなります (小さいオブジェクトのサイズに比べてヒープのオーバーヘッドは非常に高くなります)。その高速; ヒープの断片化を防ぎます。そして、デバッグが簡単です。

于 2009-08-09T09:13:35.903 に答える