Lobsters | 📄 原文链接 | 2026-10-12 收录

NumPy 2.5 让 np.searchsorted 最快提速 25 倍

来源:blog.scientific-python.org — 2026-09-29

📋 概述

np.searchsorted 是 NumPy 的二分查找实现,被直方图统计与区间查询广泛使用。NumPy 2.4 的实现在 C 里对每个键独立跑一遍二分,每次比较都形成依赖链,大数组下访问还会跨缓存行,顺序实现常被内存访问拖住。作者的向量化思路是让所有查询同步推进:先维护 lo/hi 区间并只更新仍活跃的查询;再观察到二分不必为每个键独立终止,改成所有区间每次收缩同样步数后即可去掉活跃掩码,又快最多 2 倍;最后用"左边界 + 长度"表示区间,把每查询状态从 O(K) 压到输出之外的 O(1)。改动进入 NumPy 2.5,基准中最快提速 25 倍。

🔑 核心要点

💡 金句

重要的观察是:二分查找其实并不需要为每个键独立终止。
← 返回 Lobsters 首页