Plush GCを16.7倍高速化 ハッシュマップをやめCheneyアルゴリズムへ

Speeding Up the Plush Garbage Collector

Plush GCを16.7倍高速化 ハッシュマップをやめCheneyアルゴリズムへ

著者が自作言語PlushのコピーGCを高速化した。当初はハッシュマップを使った実装で、100万個の生存オブジェクトの回収に117msかかり目標の20msに届かなかった。RustのデフォルトHashMapがHashDoS対策の安全なハッシュ関数を使っていることが判明し、FxHashMapへの交換と冗長なルックアップの削除で43msまで短縮。さらに伝統的なCheneyコピーGCに書き換え、転送ポインタを採用したところ、7msまで高速化(約16.7倍)した。また、mmapの仮想アドレス予約により、メッセージアロケータの動的拡張を可能にし、メッセージサイズの制限(16MB)を撤廃した。

「ハッシュマップは平均O(1)の効率的なデータ構造と教わるが、メモリ使用量とキャッシュ親和性を最適化して最大スループットを目指すなら、そうでもないことが分かる」

この日のほかの記事

2026-08-21