Hashing Adaptativo en SBCL: Haciendo las Tablas Hash Más Rápidas y Robus
Una charla en el ELS de 2024 se centró en el hashing adaptativo, con el objetivo de hacer las tablas hash de propósito general más rápidas y robustas. La teoría tradicional de las tablas hash se preocupa principalmente por los costos asintóticos del peor caso, descuidando el impacto de los factores constantes en el rendimiento del mundo real. Esta investigación introduce un enfoque adaptativo en línea, ajustando la función hash en función de la distribución real de las claves para reducir las colisiones y mejorar la utilización de la caché. Los experimentos demuestran mejoras significativas en la reducción de comparaciones esperadas y en la aceleración de las operaciones PUT, particularmente con distribuciones de claves específicas. Las tablas hash integradas de SBCL ahora emplean esta técnica, cambiando dinámicamente las funciones hash (incluida la búsqueda lineal, el hash de desplazamiento de bits y MurmurHash) en función de los recuentos de colisiones y el tamaño de la tabla hash. Para claves compuestas como cadenas y listas, se utiliza una estrategia de truncamiento, ajustando dinámicamente la longitud de truncamiento cuando se producen demasiadas colisiones. Esta mejora aumenta la velocidad de la tabla hash de SBCL en casos comunes y la robustez en otros.
Leer más