ヒープ上のオブジェクトを頻繁に (任意のサイズで) 割り当てて削除する必要があるとします。これらのオブジェクトを削除する代わりに、後で再利用するために「プール」に戻した場合、パフォーマンス上の利点はありますか?
「プール」はポインタの動的コレクションを管理する必要があるため、ヒープの割り当て/割り当て解除を減らすことでメリットがありますか?または、メモリアロケータのパフォーマンスと比較して遅くなります。
私の使用例: リンクされたリストに基づいてキュー コンテナーを作成し、そのリストの各ノードがヒープに割り当てられているとします。そのため、push() と pop() を呼び出すたびに、そのノードが割り当てられ、割り当てが解除されます。
`
template <typename T> struct QueueNode {
QueueNode<T>* next;
T object;
}
template <typename T> class Queue {
void push(T object) {
QueueNode<T>* newNode = QueueNodePool<T>::get(); //get recycled node
if(!newNode) {
newNode = new QueueNode<T>(object);
}
// push newNode routine here..
}
T pop() {
//pop routine here...
QueueNodePool<T>::store(unusedNode); //recycle node
return unusedNode->object;
}
}
`