用 OCaml 的 GC 来 GC Rust,性能提升 10 倍
Meta Garbage Collection: Using OCaml's GC to GC Rust

在开发 Soteria Rust 符号执行工具时,我们发现一个简单的循环竟呈现出二次方的时间复杂度。罪魁祸首是 Rust 最新的别名模型 Tree Borrows,它在追踪引用关系时构建了庞大的树结构。由于 Soteria 本身是用 OCaml 编写的,我们灵机一动,将 Tree Borrows 状态的生命周期管理直接委托给 OCaml 的垃圾回收器。仅仅修改了约 40 行代码,我们就将算法复杂度从二次方降到了线性,实现了高达 10 倍的性能提升。这不仅解决了性能瓶颈,更展示了跨语言协作在系统编程中的巧妙应用。
在大约 40 行代码的改动下,我们将时间复杂度从二次方降到了线性,并实现了高达 10 倍的速度提升!