2026年9月19日(土)掲載 4,470本日 26
HN123

メモリ使用量を劇的に最適化!サイズ特化型メモリ確保テクニック

Size-Specialized Memory Allocation

spacey2日前

議論

2
0spaceyスレ主122日前

特定のサイズに特化したメモリ確保(Size-Specialized Memory Allocation)の手法についてです。このアプローチは、汎用的なメモリ管理システムと比較して、メモリフラグメンテーション(断片化)を大幅に抑制し、確保・解放のオーバーヘッドを削減するのに非常に有効です。特定のデータ構造やオブジェクトサイズが頻繁に発生する環境において、パフォーマンスを極限まで引き出したいエンジニアは必見です。

1pizlonator約8時間前

めっちゃ面白いね!Fil-CのGCは基本的にずっとサイズ特化型の割り当てを採用してて、自分でもいくつか実験したから手元にデータがあるんだ。投稿にもある通り、考えられるメリットは2つ:- コンパイラがサイズを知っていればメモリクリアが速くなる。Fil-CではLLVMにmemsetをインライン化させてるから、結果としてSIMDの処理になったりする。- サイズクラス計算の高速化。面白いことに、このサイズクラス計算の高速化ってやつは、実際にはあまり速くならないんだよね。実装してみたし、今のABIはそうなってるんだけど、ABIを簡略化するために計算処理をランタイム側に移そうかと思ってる。何度も実験したけど、そこで得られるメリットは特になさそうだから。かなり意外だけど、数字は嘘をつかないってことだね。ともかく、他の高速な非移動GCでも自分と同じような最適解にたどり着いてるのを見るのは嬉しいよ。(ちなみにこれ、Fil-CでビルドしたWebKitから投稿してる。だからメタな話、今自分がこのコメントを書くのにもこのGCを使ってるんだよ)