Post Thumbnail

Статья подробно разбирает переход Go 1.24 от классической bucket-архитектуры мап к Swiss Tables - дизайну, позаимствованному из Abseil, который заменяет цепочки оверфлоу-указателей на плоское открытое адресование с компактными контрольными байтами и групповым probing'ом по 8 слотов.

Swiss Tables позволяют совершать меньше промахов кеша за счет отказа от «погони за указателями», увеличивается допустимая плотность заполнения, и фильтрация кандидатов становится более быстрой по h2-отпечатку до полноценного сравнения ключей.

На микробенчмарках доступ к большим мапам ускорился на 30–35%, итерация - до 60% на разреженных картах, однако на уровне приложений выигрыш скромнее, около 1.5% в среднем, а в сценариях с холодным кешем и очень большими разреженными мапами возможны регрессы.

Да-да, уже 100% раз читали про швейцарские таблицы. Но статью в закладки лучше добавить

Похожее