Два способа разрешения коллизий в хеш-таблицах. Chaining — каждый бакет хранит список элементов с одинаковым хешем. Open addressing — при коллизии ищешь следующую свободную ячейку (linear probing, quadratic probing). Go map использует вариант chaining: бакеты по 8 элементов с overflow-указателями. Open addressing лучше по кеш-локальности, chaining проще и стабильнее при высокой загрузке. Swiss table (используется в новых языках) — продвинутый open addressing с SIMD.
Open addressing vs chaining?
Middle
346 просмотровAFK Offer AI
Как работают generics в Go 1.18+?