我有一个不断重复使用的 STL 容器 (std::list)。我的意思是我
- 将一些元素推入容器
- 在处理过程中删除元素
- 清理容器
- 冲洗并重复很多次
使用 callgrind 进行分析时,我看到大量对new
( malloc
) 和delete
( free
) 的调用,这可能非常昂贵。因此,我正在寻找一些方法来最好地预先分配相当多的元素。我还希望我的分配池继续增加,直到达到高水位线,并且分配池继续挂在内存上,直到容器本身被删除。
不幸的是,标准分配器不断调整内存池的大小,所以我正在寻找一些可以完成上述任务的分配器,而无需我自己编写。
这样的分配器是否存在,我在哪里可以找到这样的分配器?
我在使用 GCC 的 Linux 和使用 STLPort 的 Android 上工作。
编辑:放置new
还可以,我想最小化的是堆走,这很昂贵。我还希望我的所有对象都尽可能靠近,以尽量减少缓存未命中。