Прогнозируется, что использование памяти в моих контейнерах STL будет изменчивым, то есть оно будет часто уменьшаться и увеличиваться. Я думаю учесть это, указав распределитель для объявлений типа контейнера STL. Я понимаю, что распределители пула предназначены для обработки таких ситуаций, но меня беспокоит то, что волатильность будет больше, чем учитывается пулом, и чтобы преодолеть ее, мне пришлось бы провести много тестов, чтобы определить хорошие показатели пула.
Мой идеальный распределитель никогда не освобождал бы память неявно, и на самом деле вполне приемлемо, если бы память освобождалась только при уничтожении распределителя. Функция-член для явного освобождения неиспользуемой памяти была бы хорошей, но не обязательной. Я знаю, что то, о чем я говорю, звучит как распределитель для каждого объекта, и это нарушает стандарт. Я бы предпочел придерживаться стандарта, но откажусь от него, если не смогу решить это в нем.
Меня меньше интересует начальная производительность и больше средняя производительность. Иными словами, не так важно, выделяется ли отдельный элемент или их пул за раз, и важнее, приводит ли указанное выделение к вызову new/malloc. У меня нет проблем с написанием собственного распределителя, но кто-нибудь знает уже существующий, который выполняет это? Если это имеет значение, это будет для смежных контейнеров памяти (например, вектор, дек), хотя обобщенное решение было бы неплохо.
deque
не является непрерывным контейнером памяти. - person Fred Larson   schedule 06.10.2011std::deque
требуется для обеспечения [амортизированного] произвольного доступа с постоянным временем - person Dennis Zickefoose   schedule 11.10.2011