LoginSignup
0

More than 5 years have passed since last update.

Railsのソースコードで " ".freeze など文字リテラルにフリーズが多用されている理由

Last updated at Posted at 2018-03-08

Railsのソースコードで 文字リテラルにfreezeが多用されている理由は処理速度が早くなるから

railsのソースコードでこんな一文を見かけました。*1

ruby

value.join(" ".freeze)

ここでvalueは配列です。

これはfreeze本来の意味では意味のないコードです。

joinした結果、freezeされていない新しい文字列が生成してしまいます。

ではなぜ「" ".freeze」と書いているのでしょうか。調べた所によると、freezeを書く理由は、次回以降の「" ".freeze」では文字列オブジェクトを生成しなくなるので処理速度がわずかに改善するからだそうです*2。

私はfreezeの意味を理解するために無駄に時間消費したのですが、
ソースコードを解りにくくしてまでfreezeする価値ってあるんでしょうかね。


*1:問題のコード
https://github.com/rails/rails/blob/3f2046f00ab0046f9252a5a7b52f617028bc4e0c/actionview/lib/action_view/helpers/tag_helper.rb#L268

*2:文字リテラルのfreezeに関して
http://d.hatena.ne.jp/ku-ma-me/20151004/p1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0