Я использую несколько карт и множеств. Недостаток смежной памяти и большое количество (де) распределений являются узким местом производительности. Мне нужна, в основном, карта, совместимая с STL, и заданный класс, который может использовать непрерывный блок памяти для внутренних объектов (или нескольких блоков). Он также должен иметь функцию reserve
, чтобы я мог предварительно распределить ожидаемые размеры.
Прежде чем написать свой собственный, я хотел бы проверить, что доступно в первую очередь. Есть ли что-то в Boost, которое это делает? Кто-нибудь знает о доступных реализациях в другом месте?
Интрузивные типы сбора не могут использоваться здесь, поскольку одни и те же объекты должны существовать в нескольких коллекциях. Насколько я знаю, пулы памяти STL относятся к одному типу, а не к экземпляру (вроде, не к чему, многие оговорки). Эти глобальные пулы неэффективны в отношении местоположения памяти в обработке mutli-cpu/core.
Пулы объектов не работают, поскольку типы будут совместно использоваться экземпляром, но их пул не должен.
Во многих случаях хеш-карта может быть опцией.