Los mapas son una de las estructuras de datos más usadas en cualquier programa Go no trivial: sustentan el enrutamiento de peticiones, las cachés, la deduplicación y las pipelines de agregación. Por eso, cualquier mejora interna en su implementación tiene un efecto multiplicador en sistemas reales.
Go 1.24 introdujo uno de los cambios más importantes en años en el runtime de mapas: el diseño clásico basado en buckets con punteros a overflow se sustituyó por una arquitectura inspirada en las Swiss Tables. La API pública no cambió: el código sigue escribiendo map[K]V y usando make, indexación, delete y range igual que antes. Lo que cambió es el camino interno: metadatos más compactos, sondeos más planos y mucha mejor localidad de caché.
El resultado práctico es claro: menos saltos de punteros, menos fallos de caché, factores de carga más altos y operaciones comunes más rápidas. En microbenchmarks la mejora puede ser notable; en aplicaciones completas las ganancias agregadas son menores pero significativas. La huella de memoria también mejora en escenarios donde antes se acumulaban cadenas de overflow.
El artículo explica el diseño anterior (buckets de 8 slots con encadenamiento a overflow, factor de carga limitado en torno al 81 %) y, después, desglosa las claves de Swiss Tables: el hash partido en h1 (posición) y h2 (huella corta); los grupos de 8 slots con un byte de control contiguo por slot que codifica estado y huella; un sondeo en dos fases que compara primero metadatos y solo después claves completas; y el tratamiento de huecos y lápidas en inserciones y borrados. Cierra con la idoneidad del modelo para CPUs modernas: lectura contigua de metadatos, menos accesos dispersos a memoria y mejor comportamiento de las ramas.
