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

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