Optimización de tablas de búsqueda en C++ con hash perfecto

Fuentes: Perfect hashing for high-performance C++ lookup tables

El artículo técnico describe una biblioteca de C++ que permite construir tablas de búsqueda con hash perfecto, eliminando las colisiones y reduciendo el tiempo de consulta a unos cinco ciclos de CPU. A diferencia de las implementaciones estándar como std::unordered_map, que requieren hashing en tiempo de ejecución y manejo de cadenas, esta solución genera funciones de hash específicas en tiempo de compilación para conjuntos de claves conocidos. El método utiliza un algoritmo voraz para asignar valores de asociación a caracteres, permitiendo que la tabla de tamaño potencia de dos se calcule mediante una operación de bitwise AND. En el plano de ejecución, la biblioteca emplea instrucciones de vectorización (NEON) para comparar cadenas de hasta 16 bytes en una sola operación, evitando las ramas de predicción difícil. Los benchmarks realizados en hardware Apple M3 Max y M4 demuestran que esta técnica alcanza más de mil millones de consultas por segundo, superando en hasta 13 veces la velocidad de std::unordered_map y en 17 veces a gperf para conjuntos de claves complejos como las palabras reservadas de JavaScript. La herramienta, desarrollada en colaboración con Francisco Geiman Thiesen, se presenta como una alternativa eficiente para aplicaciones de alto rendimiento donde las claves son estáticas y conocidas al momento de la compilación.