OC
用 Rust 重写 Tree-sitter 快了 30%:代价是功能收缩和更多内存
科技 · 2026-07-27 · 开发者工具 · 阅读 6

用 Rust 重写 Tree-sitter 快了 30%:代价是功能收缩和更多内存

作者:林岚|OC 开发者生态编辑

作者 林岚 林岚

ast-grep 作者宣布用 Rust 重写 Tree-sitter 的 C 运行时核心。其基准显示,原始解析吞吐量提高约 29.7%,树遍历提高约 10%,完整 ast-grep outline 工作负载的用户态 CPU 时间下降约 22.2%。

一句话结论:这不是 Rust 原样替换 C 后自动变快,而是针对 Agent 的整文件分析场景删掉功能、重做内存布局,并在多次失败后得到的窄化实现。

新运行时保持现有生成语法、外部扫描器和 C ABI 兼容,但不再支持原生加载 WebAssembly 语法,也移除了增量旧树复用。这个取舍对编辑器很重要:编辑器需要每次按键后复用旧语法树,而 ast-grep 和代码 Agent 更常处理完整文件快照。

作者让 ChatGPT 完成了大量移植、分析和实验代码。早期版本虽然局部快了 20%,却难以理解并出现段错误,最终被全部回退。后续过程改为一次只优化一个机制,并同时检查解析、树遍历、内存和完整应用。

局部解析基准与端到端工作负载的差异

关键优化包括:普通输入先使用线性栈,遇到真正歧义时再建立图结构;用 arena 降低节点分配成本;缩小索引;避免重复读取子节点。这里没有一个“换语言”魔法开关,真正收益来自缩小目标和改变数据结构。

内存是明确代价。完整 outline 测试中,Rust 版本峰值约 34.43MiB,C 版本约 26.52MiB,多出接近 8MiB。更早的 arena 方案还曾让大型 TypeScript 测试峰值超过 1GiB,修正后才降到 91.2MiB。

因此标题中的 30% 只对应解析器吞吐,不是所有 Tree-sitter 用户都能获得的升级幅度。需要增量解析、原生 Wasm 语法或极低内存的工具,不能直接套用结论。

关键事实

  • 原始解析吞吐:约提升 29.7%
  • ast-grep 完整工作负载:用户态 CPU 时间约下降 22.2%
  • 内存变化:完整测试峰值增加约 8MiB
  • 功能边界:移除增量旧树复用和原生 Wasm 语法加载
  • 开发方式:AI 生成大量代码,人类负责约束、分析和验收

OC 判断

这个项目说明 AI 能让个人尝试过去不敢启动的大型重写,也说明生成速度会放大错误优化。最终成果来自严格缩小使用场景和端到端验证,而不是“Rust + AI”两个标签。

为什么重要

  • 对开发者:性能基准必须覆盖真实生命周期,不能只测最内层循环。
  • 对 Agent 工具:整文件分析和编辑器增量解析可能需要不同运行时。
  • 对维护者:AI 重写仍需要可理解的架构、回退能力和兼容测试。

参考来源

相关阅读

基于标题、摘要和正文内容自动匹配。

更多科技

评论

围绕这篇文章补充信息、提出问题或分享观察。

0
暂无评论。

发表评论

继续看看 OC 用户围绕这个话题说了什么、做了什么。

相关帖子

更多

你们的Codex额度提前耗完了没?戒断反应如何?

<p>我在第三天就消耗了只剩1%,忍了一天,然后今天干脆用这最后的1%,开着5.6 Sol 极高 强推我一个提示词笔记本应用的功能落地。最终用时3小时,居然还是跑完了。但是现在还是出现一些戒断反应,感觉啥也做不了,就无精打采的,困。</p> <p>我做了一个Prompt Notebook,专门用来收藏或者记录自己手搓的生图提示词。带Chrome一键收藏插件。支持AI优化提示词。支持提示词中提取常用字段作为提示词百科词汇。也自带生图功能用来测提示词。但是要搭配Cloudflare R2+Worker的图床。</p> <p>今天主要是做一个AI模特的资产库。将常用的AI模特固定下来,进行身份设定,以及模特的一些角色定妆图。之后生图可以直接调用AI模特自动作为垫图。</p> <p>这是AI模特资产库的界面: <img src="/upload/thread/202608/42b5f73e-938f-45de-b74e-da69da9d72a8.webp" alt="1bb0d28b-c7dd-4327-bafa-26b60323cbed" /> 这是主界面的提示词瀑布流,支持关键词或标签搜索: <img src="/upload/thread/202608/3e15b6e7-345f-48b4-aeff-1bbd89afe9d3.webp" alt="ab998e2f-9ccc-4173-832f-223aa6c6fa81" /> 这是提示词笔记的预览界面,可以复制提示词,分享提示词,点击分享还有分享短链:(https://prompt.jintao.co.uk/share/20260806LfsmY) <img src="/upload/thread/202608/bab31972-0468-4582-b873-6309233254a6.webp" alt="20260806-201213" /> 可惜现在没额度了,我又不想换模型折腾。现在还有些界面细节和小功能需要落地完善,可能还要虫子要抓。弄好了,打算放GitHub开源。</p> <p>有朋友想试试的么?</p>

shynloc 2 4

重返OurCoders

<p>从2014年以来好久没逛过这个谈论了,不知道这个谈论的运营现在怎么样,开发人员是不是原来的人,前端UI做得不太好</p>

梁建溢 4 18

测试OurCoders能否发布照片

<p>今天小区的彩虹🌈<img src="https://share.icloud.com/photos/0ebtFydNy8r_gJETON61u4Ybg" alt="图片说明" /></p> <p>看来不能直接发照片,可以把iCloud Link的功能派上用场!</p>

梁建溢 15 45