Búsqueda binaria 6 veces más rápida: de código compilado a simpatía mecánica
Faster binary search: from compiled code to mechanical sympathy

¿Cómo acelerar el código Python computacional? Un enfoque común es elegir un buen algoritmo, usar un lenguaje compilado para una extensión y añadir paralelismo. Pero, ¿y si necesitas más velocidad? En este artículo, Itamar Turner-Trauring, de Quansight, explica cómo optimizó la búsqueda binaria utilizada en scikit-learn, logrando una mejora de 6×. La clave fue entender cómo la CPU ejecuta instrucciones en paralelo y evitar las predicciones erróneas de ramas. El artículo muestra paso a paso la transformación de una implementación clásica a una versión sin ramas, utilizando Rust y técnicas de bajo nivel como select_unpredictable, y finalmente elimina comprobaciones de límites y trabajo redundante. El resultado es un código que aprovecha mejor la arquitectura del hardware, pasando de 45,8 ms a 7,6 ms para un millón de valores.
Al asegurarme de que el código no luchara contra la CPU, logré una versión final que se ejecuta 6 veces más rápido que la original.