Если ожидаемый размер известен, заранее выделите capacity через make([]T, 0, n). Это уменьшает число перераспределений и копирований при append.
Как можно оптимизировать увеличение capacity слайса, чтобы избежать лишних аллокаций и копирований?
Если ожидаемый размер известен, заранее выделите capacity через make([]T, 0, n). Это уменьшает число перераспределений и копирований при append.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Если ожидаемый размер известен, заранее выделите capacity через make([]T, 0, n). Это уменьшает число перераспределений и копирований при append.
Не путайте длину и ёмкость: make([]T, n) уже создаёт n элементов, а последующий append добавит новые после них. Для неизвестного размера используйте разумную оценку или обработку порциями. Не полагайтесь на точную формулу роста capacity как на контракт языка. Слишком большой запас удерживает память, поэтому оптимизацию лучше подтверждать профилем аллокаций.