TGViewer
Golang Golang @golang_google · 40.5K subscribers
Post #3609 10.9K
🔥 В Go полностью переписали внутренности `sync.Map`

Начиная с Go 1.26, sync.Map официально работает на базе hash trie. Публичный API не изменился, но внутри теперь совсем другая структура.

Как это устроено:

* ключ хешируется в 64 бита
* хеш разбивается на группы по 4 бита
* каждый узел trie имеет до 16 потомков
* lookup проходит по дереву максимум 16 уровней
* структура снижает конкуренцию вокруг одного глобального lock

Но sync.Map всё ещё не универсальная замена обычному map: в тестах статьи он потреблял примерно в 3-5 раз больше памяти.

Использовать его имеет смысл, когда значения в основном один раз записываются и много читаются или goroutine работают преимущественно с разными ключами. В остальных случаях map + Mutex/RWMutex часто проще и лучше.

Очень подробный разбор реализации:

https://victoriametrics.com/blog/go-sync-map-hash-trie/
  • 👍 30
  • ❤ 10
  • 🔥 7
  • 🤔 6
More from @golang_google
  1. Sep 18, 2026🔥 Rune - быстрый IDE и terminal multiplexer с GPU-рендерингом, который теперь открыт на G…
  2. Sep 16, 2026🔥 Большой гайд по миграции с Go на Rust Для разработчиков переход обычно упирается не в с…
  3. Sep 15, 2026🔥 Yoke - управление пакетами Kubernetes без гор YAML Вместо сложных Helm-шаблонов Yoke по…
  4. Sep 13, 2026🔥 Yzma - прямое подключение `llama.cpp` к Go-приложениям для локального inference Проект…
  5. Sep 12, 2026🐳 Как правильно использовать Docker для Go-приложения - пошаговый гайд Хороший разбор от…
  6. Sep 12, 2026AvitoTech всегда славился своими проектами на День разработчика, но в этот раз ребята прев…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →