Я провел небольшое исследование, и кажется, что есть «правильный» ответ на этот вопрос.
Прежде всего, я согласен, что это может быть преждевременной оптимизацией, поэтому профилирование перед принятием решения о переключенииessential.
График, приведенный выше, был сгенерирован в Excel с использованием нормального распределения и тестирования пространства, израсходованного различными объемами начального списка, с использованием 10 000 выборок и среднего значения 10 000.Как вы можете видеть, у него есть несколько интересных особенностей.
- При низких стандартных отклонениях выбор плохой начальной емкости может потратить в восемь раз больше места, чем лучший выбор.
- Для высокогостандартные отклонения относительно среднего значения, возможна меньшая экономия.
- Падения, соответствующие наименьшим потерям памяти, происходят в точках, зависящих от стандартного отклонения.
- Лучше выбрать значение изправая половина графика, чтобы избежать перераспределения списков.
- Я не мог найти точную формулу для минимальных потерь, но среднее значение + 1,75 x стандартное отклонение, кажется, лучший выбор на основе этого анализа.
Предупреждение: YMMV с другими дистрибутивами, средствами и т. Д.