動的に割り当てられたオブジェクトよりもオブジェクト プールを優先する必要があるのはいつですか?
毎秒何千ものオブジェクトを作成および破棄する必要があります。オブジェクトプールを支持することを決定するのに十分ですか?
ありがとう。
動的に割り当てられたオブジェクトよりもオブジェクト プールを優先する必要があるのはいつですか?
毎秒何千ものオブジェクトを作成および破棄する必要があります。オブジェクトプールを支持することを決定するのに十分ですか?
ありがとう。
はい、これでオブジェクト プールを選択するのに十分です。
Boost ドキュメントの引用
プールはいつ使用する必要がありますか?
プールは通常、小さなオブジェクトの割り当てと割り当て解除が頻繁に行われる場合に使用されます。別の一般的な使用法は、多くのオブジェクトがメモリから削除される可能性がある上記の状況です。
Boost プールライブラリを参照してください
測る、測る、測る。そうすれば、憶測やガイドラインに頼る必要がなくなります。
また、Dirk Grunwald のCustomMallocがまだ利用可能な場合は、試してみてください。malloc
単一のアプリケーションのニーズに合わせて調整された の実装を合成します。
オブジェクトの破棄、割り当て解除、割り当て、および構築の予想されるコストは、新しい用途のために再初期化するコストよりも高くなります。
通常、1 秒間に何千ものオブジェクトを作成および破棄する場合は、少なくともオブジェクト プールを使用する必要があります。
特定のサイズのオブジェクトを純粋に割り当てるカスタム アロケータを使用できます。new をオーバーライドし、オブジェクト専用のヒープを事前に割り当てます。ビットフィールドと配列を使用するのは比較的簡単です。
基本的に、オブジェクトが小さい場合、カスタム ヒープの方がメモリ効率が高くなります (小さいオブジェクトのサイズに比べてヒープのオーバーヘッドは非常に高くなります)。その高速; ヒープの断片化を防ぎます。そして、デバッグが簡単です。