相互に通信するために特定のオブジェクトを割り当てるいくつかの異なるオブジェクトがあり、フラグを設定するだけでノードをフリーとしてタグ付けできる、ローカルで管理されるメモリ プールをそれぞれに与えることにしました。
アイデアは次のとおりです。
struct cat {/**couple data fields*/};
struct rat
{
rat() : poolIndex_(0), poolSize_(INITIAL_SIZE), pool_(new cat *[poolSize_])
{
for (size_t i = 0; i < poolSize_; ++i)
pool_[i] = new cat;
}
size_t poolIndex_;
size_t poolSize_;
cat** pool_;
};
と彼の友人が空きノードrat
を使い果たしたときにプールのサイズを変更するための非メンバー関数を提供します (ノードの配布は を介して行われます)。非メンバー関数は次のとおりです。cat
poolIndex_++ % poolSize_;
void quadruplePool(cat*** pool, size_t& poolIndex, size_t& poolSize)
{
poolIndex = poolSize;
cat** tmp = new cat *[poolSize*4];
for (size_t i = 0; i < poolSize; ++i)
tmp[i] = (*pool)[i];
delete[] (*pool);
(*pool) = tmp;
poolSize = poolSize*4;
for (size_t i = poolIndex; i < poolSize; ++i)
(*pool)[i] = new cat;
}
私が今持っているものから私にスピードアップを与えることができるコードに何かがありますか? (速度は私にとって非常に重要です)