Gleam 核心团队成员 Giacomo Cavalieri 分享了一个用 Rust Arena 终结三年悬案的精彩案例。Gleam 的代码格式化器基于递归数据结构 Document,大量 Box::new 堆分配成为性能瓶颈。作者引入 typed_arena 批量管理内存,将文档节点存储在 Arena 上并通过引用共享,一次分配即可反复复用。经过数天细心的 Find-and-Replace 工程,一个 +2963/-1032 行的 PR 让格式化器提速 24%(13ms → 9.8ms),gleam format 整体提速 13%,峰值内存降低 10%。Arena 还带来了额外红利:数百个重复的小文档(关键字、逗号分隔符等)只需分配一次即可处处引用。
Document 枚举中 Nest(Box<Self>) 改为 Nest(&'doc Self),借助 Arena 统一管理所有文档节点的生命周期squirrel 项目从 13ms 降至 9.8ms;gleam format 端到端提速 13%(含解析开销)fn、pub)、逗号分隔符等数百个重复小文档只需分配一次,Arena 全盘复用+2963/-1032 行全凭 Find-and-Replace 完成