Module: BoundedSpaceMemoizable

Included in:
EngTagger
Defined in:
lib/engtagger.rb

Instance Method Summary collapse

Instance Method Details

#memoize(method, max_cache_size = 100000) ⇒ Object



10
11
12
13
14
15
16
17
18
19
# File 'lib/engtagger.rb', line 10

def memoize(method, max_cache_size=100000)
  # alias_method is faster than define_method + old.bind(self).call
  alias_method "__memoized__#{method}", method
  module_eval <<-EOF
    def #{method}(*a)
      @__memoized_#{method}_cache ||= LruRedux::Cache.new(#{max_cache_size})
      @__memoized_#{method}_cache[a] ||= __memoized__#{method}(*a)
    end
  EOF
end