Эффективно выделяет множество короткоживущих мелких объектов

у меня есть небольшой класс (16 байт в 32-битной системе), который мне нужно динамически распределять. В большинстве случаев время жизни любого данного экземпляра очень короткое. Некоторые экземпляры также могут передаваться через границы потоков.

Проведя некоторое профилирование, я обнаружил, что моя программа, похоже, тратит больше времени на распределение и освобождение вещей, чем онаНа самом деле я трачу их на использование, поэтому я хочу заменить новое по умолчанию и удалить что-то более эффективное.

Для большого объекта (соединения БД, как это бывает, которые дорого построить, а не выделить),Я уже использую систему пула, однако это включает в себя список для хранения "свободно" объекты, а также мьютекс для безопасности потоков. Между мьютексом и списком он на самом деле работает хуже, чем с базовым new / delete для маленьких объектов.

Я нашел несколько небольших распределителей объектов в Google, однако они, похоже, используют глобальный / статический пул, который не используется потокобезопасным способом, что делает их непригодными для моего использования :(

Какие еще варианты у меня есть для эффективного управления памятью таких маленьких объектов?

Ответы на вопрос(3)

Ваш ответ на вопрос