Это базовый компромисс между временем и пространством. Выбирай исходя из того, что для тебя важнее:
Если вы выделите пул заранее, то ваши вставленные элементы времени выполнения будут - в среднем - оптимизированы по скорости, то есть постоянному времени, т.е. O (1). «В среднем» означает, что большинство вставок будет иметь постоянное время, за исключением тех, которые достигли максимума и требуют расширения пула, которые имеют линейное время O (n). Вы также рискуете потратить немного памяти, если в итоге не используете весь пул.
Если вы выполняете распределение в реальном времени каждого нового узла, вы всегда будете вставлять в постоянное время, но в этом случае постоянное время будет немного длиннее , чем постоянное время выше, потому что вы не только должны поместить значение в ячейку памяти, но вы также должны сначала выделить ячейку памяти. Кроме того, этот метод не тратит впустую память, резервируя места памяти заранее.
В большинстве ситуаций я думаю, что распределение в реальном времени является достаточно эффективным с точки зрения времени, поэтому я не понимаю, почему вы используете объединенный подход, , если ваше приложение не требует экстремальной средней скорости или вы делаете огромное количество вставок.