性能实测

100 万条,0.6 秒。

2026-08-26 · 真实压测数据 · 可复现
一句话亮点:100 万条数据,检索仅需 0.6 秒,内存 5.3GB,索引 1.0GB。

检索性能:数据规模 vs 耗时

纵轴为对数刻度。修复前,检索耗时随数据规模线性恶化,100 万条直接超时崩溃;三刀全修后,稳定在亚秒级,不随规模增长。

蜂巢检索性能曲线图

检索优化过程(答辩专用表)

阶段检索耗时(100 万条数据)
未修复(O(n²) 反查)>60s 超时(检索崩溃)
修 Top-K 堆排序后50~94s
三刀全修(热检索)0.59~0.61s
三刀全修(冷启动)28~35s(缓存构建,仅一次)

100 万条满载,资源占用

数值
内存 RSS5.3GB(16G 电脑安全,仅占 1/3)
索引文件1.0GB / 101 万词
仓库文本(json)1.9GB
热检索耗时0.59~0.61s
冷启动耗时28~35s(缓存构建,仅一次)

检索优化三刀

第一刀:反查缓存(O(n²) → O(1))

搜索时对每个命中条目都重读整个仓库 + 线性遍历找 id,形成 O(n²)。加 mtime 失效的内存缓存(id → 条目哈希表),反查从 O(n) 降到 O(1)。3 万条检索从 10.9s 降到 0.84s。

第二刀:Top-K 堆排序(O(n log n) → O(n log k))

搜索对全量命中结果全量排序,只为取前 20 条。改用最大堆只维护 top-20,消除排序开销。

第三刀:索引缓存 + 稀有词优先(50~94s → 0.6s)

高频词(如「记忆」)命中 100 万条,全量遍历评分拖垮性能。改为:索引加 mtime 缓存不再每次读 1GB;查询词按命中数升序,只用稀有词(命中 ≤5000)构建候选集。查询「记忆底座定位」时,「底座」「定位」各只命中 2000 条,遍历量从 100 万骤降到 2000。

可复现

结论:内存不是瓶颈(16G 电脑绰绰有余),检索是唯一瓶颈——三刀全修后达标(<1s),且不随数据规模增长。
← 返回首页