From 17b82cd1dafefdc6fe2f6affd67055dcc8483e29 Mon Sep 17 00:00:00 2001 From: Cameron Date: Thu, 12 Sep 2024 09:54:45 +0200 Subject: [PATCH] Update array hash keys to integers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Running benchmark.rb prior to change: ``` Warming up -------------------------------------- test_no_args 526.602k i/100ms Calculating ------------------------------------- test_no_args 5.172M (± 1.8%) i/s - 26.330M in 5.092880s Calculating ------------------------------------- test_no_args 4.000k memsize ( 0.000 retained) 100.000 objects ( 0.000 retained) 0.000 strings ( 0.000 retained) Warming up -------------------------------------- test_with_args 221.217k i/100ms Calculating ------------------------------------- test_with_args 2.203M (± 5.6%) i/s - 11.061M in 5.045789s Calculating ------------------------------------- test_with_args 12.000k memsize ( 0.000 retained) 300.000 objects ( 0.000 retained) 0.000 strings ( 0.000 retained) ``` After: ``` Warming up -------------------------------------- test_no_args 529.096k i/100ms Calculating ------------------------------------- test_no_args 5.247M (± 1.3%) i/s - 26.455M in 5.042306s Calculating ------------------------------------- test_no_args 4.000k memsize ( 0.000 retained) 100.000 objects ( 0.000 retained) 0.000 strings ( 0.000 retained) Warming up -------------------------------------- test_with_args 331.604k i/100ms Calculating ------------------------------------- test_with_args 3.471M (± 0.8%) i/s - 17.575M in 5.064376s Calculating ------------------------------------- test_with_args 12.000k memsize ( 0.000 retained) 300.000 objects ( 0.000 retained) 0.000 strings ( 0.000 retained) ``` --- lib/memery.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/memery.rb b/lib/memery.rb index 2c0ad25..c2e4c66 100644 --- a/lib/memery.rb +++ b/lib/memery.rb @@ -80,7 +80,7 @@ def define_memoized_method!(klass, method_name, condition: nil, ttl: nil) end cache_store = (@_memery_memoized_values ||= {}) - cache_key = original_arity.zero? ? method_key : [method_key, *args] + cache_key = original_arity.zero? ? method_key : [method_key, *args].hash cache = cache_store[cache_key] return cache.result if cache&.fresh?(ttl)