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