Ruby에서 Freeze를 사용하는 이점

3499 단어 RailsRubytech

메타데이터를 만들 수 있어요.


루비에서 상수는 음소거판입니다.
freeze를 사용하면 이세계의 상수를 정의할 수 있습니다.
FOO = "foo".freeze

객체 할당 감소


미리 freeze를 사용하면 매번 대상이 생기는 것을 방지하고 루비 응용의 속도를 높일 수 있다.
Rubby는 freeze된 문자열을 캐시할 수 있기 때문에 실행할 때마다 대상의 비용이 발생하지 않습니다.
Every time you do a method call like log("foobar"), you create a new String object.
다음 예에서는 성능이 50% 향상되었음을 나타냅니다.
4
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
https://www.honeybadger.io/blog/when-to-use-freeze-and-frozen-in-ruby/

참고 자료


When to use freeze and frozen? in Ruby - Honeybadger Developer Blog
https://www.honeybadger.io/blog/when-to-use-freeze-and-frozen-in-ruby/

좋은 웹페이지 즐겨찾기