Module: BoundedSpaceMemoizable

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

Instance Method Summary collapse

Instance Method Details

#memoize(method, max_cache_size = 100000) ⇒ Object



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

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 "    def \#{method}(*a)\n      @__memoized_\#{method}_cache ||= LruRedux::Cache.new(\#{max_cache_size})\n      @__memoized_\#{method}_cache[a] ||= __memoized__\#{method}(*a)\n    end\n  EOF\nend\n"