"Швейцарская таблица" - это продвинутый движок для хэш-таблиц, который сейчас используется в новых версиях Go. Идея в том, чтобы отойти от примитивного линейного поиска, когда при коллизии мы просто тыкаемся в следующую ячейку, и использовать хитрую последовательность шагов, которая не дает образовываться "пробкам" из занятых слотов.
Но все соль в группровке. Вместо одного ключа в ячейке мы храним сразу по 8 штук, и для каждой группы добавляем специальные контрольные байты (младшие 7 битов хэша). Это позволяет за одну операцию сравнивать с хэшем все восемь элементов через битовые трюки с uint64, а это очень быстро.
На практике хоть обычный подход и шустрее на малых объемах, swiss table раскрывается при высокой заполненности: если забить ее под завязку, она тормозит в разы меньше обычной
05.05.2026
Похожее
15.05.2026
Слайсы, мапы и каналы
Продолжается цикл статей про внутреннее устройство Go. Эта статья разбирает внут...
14.05.2026
JIT для go
В статье про JIT-компилятор для Go версии 1.17+, форк проекта nelhage/gojit. ...
13.05.2026
PGKeeper
PGKeeper - это сервис на Go, который команда Figma разработала для замены устаре...
12.05.2026
CPU нагрузка
В статье рассматриваются проблемы оптимизации кода на Go, который нагружает CPU...