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

Búsqueda binaria 6 veces más rápida: de código compilado a simpatía mecánica

¿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.

Más de este día

2026-07-17