Hasty Briefsbeta

双语

How AST-grep Rewrote Tree-sitter in Rust and Made It 30% Faster

5 hours ago
  • ast-grep 使用 AI 将 Tree-sitter 的 C 核心用 Rust 重写,使得解析器速度提升 30%,ast-grep 的端到端性能提升 22%。
  • Rust 重写保留了现有的语法兼容性和二进制接口,同时移除了增量解析和原生 WebAssembly 语言加载。
  • 性能提升来自于优化 GLR 解析(对常见情况使用线性栈)、内存分配(基于竞技场)以及树遍历(缓存子节点查找)。
  • 内存使用量作为权衡有所增加,在大型语料库上峰值达到 91.2 MiB,而项目早期曾超过 1 GiB。
  • 端到端应用程序测试表明,仅解析器的基准测试忽略了树遍历和内存分配的开销,这些问题后来得到了解决。
  • 该项目涉及迭代式 AI 协作,作者指导 ChatGPT 进行性能分析、重构和优化,并通过测试和实际工作负载进行验证。