From ed21065540c0c5309fd457ed48ac9e34c204ebd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tarmo=20T=C3=A4nav?= Date: Wed, 23 Aug 2017 04:25:18 +0300 Subject: [PATCH] Don't allocate a string containing the ivar name every time a memoized method is called --- lib/memoist.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/memoist.rb b/lib/memoist.rb index 54b67e6..be527f7 100644 --- a/lib/memoist.rb +++ b/lib/memoist.rb @@ -162,7 +162,7 @@ def memoize(*method_names) module_eval <<-EOS, __FILE__, __LINE__ + 1 def #{method_name}(reload = false) - skip_cache = reload || !instance_variable_defined?("#{memoized_ivar}") + skip_cache = reload || !instance_variable_defined?(#{memoized_ivar.to_sym.inspect}) set_cache = skip_cache && !frozen? if skip_cache @@ -204,9 +204,9 @@ def #{method_name}(reload = false) module_eval <<-EOS, __FILE__, __LINE__ + 1 def #{method_name}(*args) - reload = Memoist.extract_reload!(method(#{unmemoized_method.inspect}), args) + reload = Memoist.extract_reload!(method(#{unmemoized_method.to_sym.inspect}), args) - skip_cache = reload || !(instance_variable_defined?(#{memoized_ivar.inspect}) && #{memoized_ivar} && #{memoized_ivar}.has_key?(args)) + skip_cache = reload || !(instance_variable_defined?(#{memoized_ivar.to_sym.inspect}) && #{memoized_ivar} && #{memoized_ivar}.has_key?(args)) set_cache = skip_cache && !frozen? if skip_cache