RubyでFreezeを使うメリット
イミュータブルな定数を作れる
Rubyでは、定数はミュータブル。
freezeを使うことで、イミュータブルな定数を定義できる。
FOO = "foo".freeze
オブジェクトの割り当てを減らせる
freezeしておくことで、オブジェクトが都度作られることを防ぎ、Rubyアプリケーションの速度を向上させることができる。
freezeしてある文字列は、Rubyがキャッシュしてくれるため、実行都度オブジェクトが作られるといったオーバーヘッドがなくなる。
Every time you do a method call like log("foobar"), you create a new String object.
下記の例では、50%もパフォーマンスが向上していることを示している。
require 'benchmark/ips'
def noop(arg)
end
Benchmark.ips do |x|
x.report("normal") { noop("foo") }
x.report("frozen") { noop("foo".freeze) }
end
# Results with MRI 2.2.2:
# Calculating -------------------------------------
# normal 152.123k i/100ms
# frozen 167.474k i/100ms
# -------------------------------------------------
# normal 6.158M (± 3.3%) i/s - 30.881M
# frozen 9.312M (± 3.5%) i/s - 46.558M
出典:
When to use freeze and frozen? in Ruby - Honeybadger Developer Blog
参考
When to use freeze and frozen? in Ruby - Honeybadger Developer Blog
Author And Source
この問題について(RubyでFreezeを使うメリット), 我々は、より多くの情報をここで見つけました https://zenn.dev/bluesdd/articles/567c41ea99609b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol