shuzo-kino.hateblo.jp
以前書いたこの記事。
速度面での改善を図りたい場合はObject#freezeで定数化してしまう方法が有効です。
一度定数にしてしまえば一々再生成しないのでGCにも速度にも優しくなります。
ためしに%wリテラルで生成した配列を文字列化し、大文字にするメソッドを0xffff回ぶん回す事を考えてみます。
結果は
str = %w(a b c).map(&:freeze).freeze result = Benchmark.realtime do 0xffff.times { str.to_s.upcase} end #=> 0.165511 result = Benchmark.realtime do 0xffff.times { %w(a b c).to_s.upcase} end #=> 0.174324
と、5%程度の優位は出ています。
配列をfreezeする時の話
別記事にしましたshuzo-kino.hateblo.jp
参考もと

- 作者: Peter J.Jones
- 出版社/メーカー: 翔泳社
- 発売日: 2015/01/19
- メディア: Kindle版
- この商品を含むブログ (2件) を見る