Как можно уменьшить количество эвакуаций в map

«Как можно уменьшить количество эвакуаций в map» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Используйте map с заранее известным размером через make с указанием capacity:

m := make(map[string]int, expectedSize)

Эвакуации (rehash) происходят при росте map. Предварительное выделение capacity уменьшает их количество, так как map сразу создаётся с нужным размером.

Также избегайте частых вставок/удалений, так как это может провоцировать лишние эвакуации. Если возможно, заполняйте map один раз.

Для высоконагруженных сценариев рассмотрите sync.Map или другие concurrent-структуры, если работаете с конкурентным доступом.