Plush垃圾回收器:从117ms到7ms的优化
Speeding Up the Plush Garbage Collector

我原本为Plush语言设计了一个独立的垃圾回收器,目标是20毫秒内收集百万对象,但初始实现因使用HashMap导致性能惨不忍睹,耗时高达117毫秒。在Laurent Huberdeau的建议下,我将Rust的HashMap替换为FxHashMap,性能提升两倍,但仍未达标。深入分析后发现,哈希表的缓存不友好和额外内存开销是瓶颈。最终,我回归经典的Cheney算法,采用转发指针替代哈希表,并将GC时间压缩至7毫秒,性能提升近17倍。此外,我还利用mmap技巧实现了消息分配器的动态扩容,彻底解决了16MB的硬编码限制。
我们绕了一大圈,最终得出的结论是:带有转发指针的原始Cheney垃圾回收算法效率更高。