【Rails Code Reading 2回目】Reduce memory allocations #41335
Reduce memory allocations
今日読んでみたRailsのPRはここです。
タイトルは、メモリーアロケーションを減らすとのこと。
これはどんな実装が見れることやら。
と思って読んでみたらこんな感じでした。
DEC2HEX = (0..255).to_a.map { |i| ENCODE % i }.map { |s| s.force_encoding(US_ASCII) }
を
DEC2HEX = (0..255).map { |i| (ENCODE % i).force_encoding(US_ASCII) }
rangeオブジェクトを、to_aでArrayに変換せずに直接map
で扱うというもの。
benchable
というgemでベンチマークを取得すると、確かに20%弱ほどメモリアロケーションが減ってるとのこと。
大したことない実装ですが、ちゃんと根拠を示しているのはさすが世界的なOSSですね。
コミッターからは、HotPath(よく呼ばれる場所?)ではないが、まあniceでしょうみたいなコメントと共にmergeされていました。
ちなみに、この箇所の実装は、ActionDispatch
のルーティングで入ってきたユーザーからのリクエストパスをURIエンコードするモジュールで、
US_ASCII文字を入手するための配列を初期化してるみたいです。