NumPy 2.5 incorpora una implementación optimizada de la función searchsorted que logra hasta un 25 por ciento de mejora en el rendimiento, superando a la versión 2.4. Esta actualización aprovecha la vectorización de NumPy para ejecutar múltiples búsquedas binarias en paralelo, eliminando la sobrecarga de Python y permitiendo al procesador de CPU manejar grandes lotes de trabajo de forma eficiente. El nuevo algoritmo redefine el estado de las búsquedas como arrays, utilizando operaciones vectorizadas en C++ para actualizar los intervalos de búsqueda simultáneamente. A diferencia de la implementación original, que ejecutaba una búsqueda por consulta de forma secuencial, la nueva versión permite que las consultas converjan a diferentes ritmos mediante un mecanismo de 'máscara activa' que gestiona qué búsquedas aún están en curso. Además, se implementa una variante donde todas las búsquedas completan el mismo número de iteraciones fijas, lo que simplifica la lógica y elimina la necesidad de rastrear el estado activo en cada paso. Esta optimización beneficia no solo a NumPy, sino también a bibliotecas científicas como SciPy y scikit-learn, que dependen de esta función para cálculos de histogramas y consultas de intervalos. Los benchmarks se realizaron en un MacBook Pro con chip Apple M1 Pro, demostrando que la vectorización de NumPy puede superar a la implementación nativa del propio NumPy en ciertos casos, especialmente cuando se procesan múltiples claves. La mejora es significativa para aplicaciones científicas que requieren alta precisión y velocidad en el manejo de datos numéricos.
