С++ имеет std::vector, а Java имеет ArrayList, а многие другие языки имеют собственную форму динамически распределенного массива. Когда динамический массив исчерпывает место, он перераспределяется в большую область, а старые значения копируются в новый массив. Вопрос, стоящий в основе производительности такого массива, заключается в быстром увеличении размера массива. Если вы всегда только достаточно крупны, чтобы соответствовать текущему нажатию, вы в конечном итоге перераспределяете каждый раз. Поэтому имеет смысл удвоить размер массива или умножить его на 1,5x.
Существует ли идеальный фактор роста? 2x? 1.5x? По идеалу я имею в виду математически оправданную, лучшую балансирующую производительность и потраченную впустую память. Я понимаю, что теоретически, учитывая, что ваше приложение может иметь любое потенциальное распределение толкателей, это зависит от приложения. Но мне любопытно узнать, есть ли значение, которое "обычно" лучше всего, или считается лучшим в рамках какого-то строгого ограничения.
Я где-то слышал там статью, но я не смог ее найти.