Hacker News 中文摘要

RSS订阅

Ripgrep 比 grep、ag、git grep、ucg、pt、sift 更快(2016) -- Ripgrep is faster than grep, ag, git grep, ucg, pt, sift (2016)

文章摘要

文章介绍了新的命令行搜索工具ripgrep,它结合了The Silver Searcher的易用性和GNU grep的高性能。ripgrep速度快、跨平台、支持Unicode且不降低性能,在25项基准测试中表现优于grep、ag等工具。作者作为ripgrep和底层正则表达式引擎的开发者,强调其卓越的搜索性能和正确性。

文章总结

ripgrep:比{grep, ag, git grep, ucg, pt, sift}更快的命令行搜索工具

ripgrep(简称rg)是一款结合了The Silver Searcher易用性和GNU grep原始性能的新型命令行搜索工具。它具备以下核心优势:

  1. 性能表现
  • 在25项基准测试中,无论是单文件还是大型目录搜索,ripgrep在速度和准确性上都显著优于其他工具
  • 独特的多模式SIMD算法(Teddy)和高级Aho-Corasick实现使其处理复杂模式时仍保持高速
  • 在Linux内核源码测试中,处理Unicode案例时比git grep快5倍
  1. 技术特点
  • 基于Rust编写,跨平台支持(Linux/Mac/Windows)
  • 智能默认设置:自动忽略.gitignore文件、隐藏文件和二进制文件
  • 完整的Unicode支持,且不影响搜索速度
  • 支持PCRE2正则引擎(通过-P参数启用)
  1. 设计理念
  • 避免使用内存映射文件(mmap),采用更高效的缓冲区策略
  • 并行化搜索任务分发(Chase-Lev工作窃取队列)
  • 内置UTF-8解码的确定性有限状态机
  1. 实测对比
  • 在1GB英文文本搜索中,比GNU grep快近2倍
  • 处理Unicode字符类(如\w)时,比支持Unicode的grep快26倍
  • 在Linux源码树搜索中,比The Silver Searcher快3-5倍
  1. 特殊场景表现
  • 超大文件(9.3GB)搜索仅需1.8秒
  • 支持上下文显示时仍保持高性能
  • 反向匹配(-v)处理速度远超其他工具

安装方式多样: - Homebrew: brew install ripgrep - Archlinux: pacman -S ripgrep - Rust用户: cargo install ripgrep

该工具由Rust正则表达式库作者开发,经过2.5年的优化,特别适合需要高性能代码搜索的开发者。其优势在于将现代算法与工程实践结合,在保持功能完整性的同时提供顶尖的搜索速度。

(注:原文包含大量技术细节和基准测试数据,此为精简后的核心内容摘要,保留了关键性能指标和技术要点。)

评论总结

以下是评论内容的总结,平衡呈现不同观点并保留关键引用:

  1. 命名争议

    • 有用户批评ripgrep使用小写命名rg作为二进制文件名,认为这种不一致性令人困惑,建议使用首字母大写的"Ripgrep"更清晰。
      引用
      > "Programmers are too enarmored with lower-case names. Why not Ripgrep?"
      > "输入stgit不工作,但实际命令是stg,这种命名方式让人困惑。"
  2. 性能与替代工具

    • 部分用户推荐其他工具如gg(更轻量)和ugrep(支持模糊匹配和TUI),认为它们更适合日常使用。
    • 也有用户提到qgrep在索引场景下更快。
      引用
      > "gg: A fast, more lightweight ripgrep alternative for daily use cases."
      > "ugrep的TUI很棒,近似匹配功能非常实用。"
  3. 技术问题与可靠性

    • 有用户分享ripgrep曾出现无法找到已知存在的文本的bug,最终不得不回退到传统grep
    • 也有评论提到大型代码库(100-200GB)可能使ripgrep性能下降至15秒。
      引用
      > "ripgrep有个bug导致我找不到本应存在的文本,最后用普通grep才解决。"
      > "除非匹配全部内容,否则需要极大代码库才会使ripgrep变慢。"
  4. 赞誉与影响力

    • 多数用户高度评价ripgrep的文档和技术实现,称其为"教程与深度分析的完美结合"。
    • 有评论认为rg是LLM成为智能代码代理的关键工具。
      引用
      > "这篇文档同时是教程和专家级深度分析,写作太精彩了。"
      > "谁能想到一个代码搜索工具能推动AGI?rg就是关键。"
  5. 历史与社区贡献

    • 用户提到ripgrep作者活跃于社区,并赞赏工具被Debian默认收录。
    • 有评论回顾了各搜索工具统一采用.ignore文件的历史事件。
      引用
      > "作者常驻HN,感谢他的贡献!现在Debian已默认包含ripgrep。"
      > "最爱的HN时刻是看到各搜索工具统一使用.ignore文件。"
  6. 性能实证

    • 有用户报告ripgrep在老旧硬件(300MHz IRIX)上仍表现优异。
      引用
      > "在300MHz的Octane上运行依然飞快。"

总结:评论整体以肯定为主,但包含命名争议、替代工具推荐和偶发bug报告等不同视角,同时突出其技术价值和社区影响力。