Plush垃圾回收器大提速:从117毫秒到7毫秒,重写算法与技巧应用双管齐下! 📅 2026/8/22 3:13:36 Plush语言与初始GC实现作者热衷于切换副业项目偶尔回顾搁置项目思索推进。去年写了关于Plush的博客文章Plush是类似Lox的玩具语言支持基于Actor的并行性。后来实现基本优化并编写复制式垃圾回收器GC但性能令人失望。作者为Plush GC设定目标编写测试程序实际性能远未达标原因是实现复制式GC时走了捷径。初步优化与问题分析朋友指出Rust默认HashMap影响性能可用FxHashMap替代还发现可避免的冗余查找操作使GC速度提高一倍多但仍未达目标。性能分析表明大部分开销来自哈希表且转发指针哈希表占用空间大还有其他效率问题。重写GC与显著提升作者决定重写Plush GC采用传统Cheney复制算法增加开关使回收时间降至7毫秒远低于目标。还介绍了Cheney算法的历史背景得出带有转发指针的原始Cheney GC算法效率更高的结论。内存分配改进与综合效果作者做了另一项改进消除Plush限制并减少内存使用。学到mmap技巧可预先保留虚拟地址空间使发送者可轻松扩展接收者消息分配器接收者也可缩小分配器。通过重写GC和使用mmap技巧Plush的GC速度更快且内存使用更少。未来计划与GC选择探讨作者有几个提高Plush性能的想法如改进Value类型表示、使用基于寄存器的解释器、让大语言模型编写即时编译器等。还探讨了选择复制式GC的原因并欢迎读者尝试用标记 - 清除GC进行实验。