Railsのソースコードで 文字リテラルにfreezeが多用されている理由は処理速度が早くなるから
railsのソースコードでこんな一文を見かけました。*1
ruby
value.join(" ".freeze)
ここでvalueは配列です。
これはfreeze本来の意味では意味のないコードです。
joinした結果、freezeされていない新しい文字列が生成してしまいます。
ではなぜ「" ".freeze」と書いているのでしょうか。調べた所によると、freezeを書く理由は、次回以降の「" ".freeze」では文字列オブジェクトを生成しなくなるので処理速度がわずかに改善するからだそうです*2。
私はfreezeの意味を理解するために無駄に時間消費したのですが、
ソースコードを解りにくくしてまでfreezeする価値ってあるんでしょうかね。
*2:文字リテラルのfreezeに関して
http://d.hatena.ne.jp/ku-ma-me/20151004/p1