Как можно уменьшить количество аллокаций при работе со слайсами?

Заранее задавайте capacity, избегайте лишних промежуточных срезов и переиспользуйте буфер там, где это безопасно по владению. Эффект проверяйте профилем и benchmark.

Короткий ответ

Что ответить на собеседовании

Заранее задавайте capacity, избегайте лишних промежуточных срезов и переиспользуйте буфер там, где это безопасно по владению. Эффект проверяйте профилем и benchmark.

Подробный разбор

Ответ с пояснениями

Заранее задавайте capacity, избегайте лишних промежуточных срезов и переиспользуйте буфер там, где это безопасно по владению. Эффект проверяйте профилем и benchmark.

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее