Post Thumbnail

В статье объясняется, как работают подсказки ёмкости (capacity hints) в Go для срезов и карт. Срезы имеют явную капасити - это максимальное количество элементов, которое можно в них хранить до перераспределения памяти.

В отличие от срезов, у мап нет понятия фиксированной ёмкости, а капасити является только приблизительной оценкой количества элементов. Для небольших капасити (до 8 элементов) Go использует ленивое выделение памяти: при создании мапы память под бакеты не выделяется, а первый бакет создаётся только при первой вставке элемента.

Для больших капасити Go сразу рассчитывает оптимальное количество бакетов, необходимое для поддержания коэффициента загрузки (6.5 пар на бакет), и выделяет память с запасом, чтобы избежать преждевременных расширений карты

Похожее

Post Thumbnail

Go и Max

А вы что думали, я не буду про Max постить? Конечно буду Вот чувак написал кл...

Post Thumbnail

Traceway

Наткнулся на отличный инструмент для работы с трейсингом - Traceway. В статье по...

Post Thumbnail

Go fix

В блоге Go вышла статья Алана Донована про то, как круто обновили команду go fix...