Acelerando los hashes pequeños de Ruby con búsqueda SWAR
Speeding Up (Small) Ruby Hashes
En Ruby, los hashes con hasta 8 entradas usan una búsqueda lineal O(n) sobre un array de pares, lo que ralentiza el acceso a las últimas claves. El desarrollador de Ruby Jean Boussier propone aplicar la técnica SWAR (SIMD dentro de un registro) para convertir esa búsqueda en O(1), aprovechando que el array de hints cabe en un registro de 64 bits. Sus benchmarks muestran que el acceso al octavo elemento es un 58% más lento que al primero, y que un st_table es un 18% más rápido en ese caso.
Lo que realmente me aterra es publicar algo incorrecto o inexacto, así que tiendo a verificar suposiciones que he mantenido durante mucho tiempo y a profundizar en cómo están implementadas algunas cosas.