Какие средства выделения доступны там для использования с STL при контакте с маленькими объектами. Я уже попытался играть со средствами выделения пула от Повышения, но не получил повышения производительности (на самом деле, в некоторых случаях была значительная неисправность).
Вы не сказали, какой компилятор вы используете, но, вероятно, он поставляется с кучей предварительно встроенных распределителей. Это на Mac с gcc 4.2.1:
~$ find /usr/include/c++/4.2.1/ -name "*allocator*" /usr/include/c++/4.2.1/bits/allocator.h /usr/include/c++/4.2.1/ext/array_allocator.h /usr/include/c++/4.2.1/ext/bitmap_allocator.h /usr/include/c++/4.2.1/ext/debug_allocator.h /usr/include/c++/4.2.1/ext/malloc_allocator.h /usr/include/c++/4.2.1/ext/mt_allocator.h /usr/include/c++/4.2.1/ext/new_allocator.h /usr/include/c++/4.2.1/ext/pool_allocator.h /usr/include/c++/4.2.1/ext/throw_allocator.h
Вот ссылка на страницу проекта BitMagic, где рассказывается о том, как создать свой собственный. Также посмотрите small object allocator в библиотеке Loki (и в книге тоже).
Вам нужен аллокатор, подходящий для ваших конкретных нужд. Общий аллокатор STL является лучшим для огромного разнообразия обстоятельств, и если вам нужен новый аллокатор, вам нужно будет составить профиль и понять ваши конкретные требования. Вам придется уточнить, в какой контейнер вы собираетесь поместить эти объекты.
Реализация стандартной библиотеки Microsoft Visual C ++ предоставляет несколько проприетарных распределителей для узлов на основе контейнеров (по крайней мере, в Visual Studio 2010, который скоро будет выпущен).