Plush GC: From 117ms to 7ms with a Classic Algorithm

Speeding Up the Plush Garbage Collector

Plush GC: From 117ms to 7ms with a Classic Algorithm

The author's toy language Plush had a copying GC that was too slow, taking 117ms to collect a million live objects. After discovering Rust's default HashMap was a performance bottleneck, they switched to FxHashMap, cutting time to 43ms. But the real win came from abandoning the hash map for forwarding pointers, following Cheney's original algorithm, which brought collection down to 7ms—16.7x faster. The post also covers using mmap to allow dynamic growth of message allocators without invalidating pointers.

Another indication that we should respect the wisdom of our elders and their sacred publications.

More from this day

2026-08-17