Skip to content

Latest commit

 

History

History
54 lines (38 loc) · 1.47 KB

benchmark.md

File metadata and controls

54 lines (38 loc) · 1.47 KB

性能评测

对比了 Google 的 zoekt 引擎,这款引擎在其他开源代码搜索引擎中性能相对较好。

数据:

  1. 小数据集:一个约 60 万行的代码仓库
  2. 大数据集:600+仓库,约 2000 万行代码,查询时分页取前 600 个结果

方法:

  1. 昆仑:使用 评测代码 cmd/benchmark/main.go,-runs=100 执行 100 次取平均
  2. zoekt:使用 zoekt-webserver,读取 footer 中的延迟,5 次取平均
  3. 分别测试了单串和正则两个类型的表达式

搜索延迟(值越小越好)

小数据集

搜索 "kafka":
昆仑:0.920 毫秒
zoekt:3.654 毫秒

搜索 "cpu.*cache":
昆仑:0.347 毫秒
zoekt:29.712 毫秒

搜索 "gc.*time":
昆仑:1.265 毫秒
zoekt:365.794 毫秒

大数据集

搜索 "kafka":
昆仑:1.208 毫秒
zoekt:13.595 毫秒

搜索 "cpu.*cache"
昆仑:4.222 毫秒
zoekt:45.980 毫秒

搜索 "gc.*time"
昆仑:41.275 毫秒
zoekt:4628 毫秒

结论

由于采用了多种优化手段,相比竞品,昆仑对正则表达式的搜索速度提升在 10 倍以上,对于极端情况比如 "gc.*time" (gc 和 time 都是常见单词)提升可以在 100 倍。

对于简单字符串匹配,随着数据集的扩张(从 60 万到 2000 万行代码),昆仑的性能下降速度远低于数据集膨胀速度(从 0.920 毫秒 到 1.208 毫秒)。