Post Thumbnail

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

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

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

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

Похожее

Post Thumbnail

Кодим чат

Автор просто час пишет чат. Никаких слов, никакого хайпа. Просто час кодинга под...

Post Thumbnail

Арены жалко

Go отказался от экспериментальных Memory Arenas - механизма, позволявшего выделя...