mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
b0cc7d985e
This is mainly to simplify the code and use less memory, as large hash can use quite a lot: ```ruby >> ObjectSpace.memsize_of(1000.times.map { |i| [i, i]}.to_h) => 28768 >> ObjectSpace.memsize_of(10_000.times.map { |i| [i, i]}.to_h) => 458848 ``` The performance is mostly not impacted, if not slightly better: ```ruby require 'benchmark/ips' require 'active_support/all' @store = ActiveSupport::Cache::MemoryStore.new @store.write("small", "small") Benchmark.ips do |x| x.report("read:miss") { @store.read("miss") } x.report("read:small") { @store.read("small") } x.report("write:small") { @store.write("small", "small") } end ``` 6.0.3.2: ``` Warming up -------------------------------------- read:miss 42.466k i/100ms read:small 25.315k i/100ms write:small 17.826k i/100ms Calculating ------------------------------------- read:miss 426.923k (± 1.9%) i/s - 2.166M in 5.074890s read:small 248.518k (± 2.7%) i/s - 1.266M in 5.097049s write:small 180.388k (± 1.6%) i/s - 909.126k in 5.041238s ``` This branch: ``` Warming up -------------------------------------- read:miss 42.040k i/100ms read:small 28.364k i/100ms write:small 19.361k i/100ms Calculating ------------------------------------- read:miss 417.814k (± 2.1%) i/s - 2.102M in 5.033186s read:small 278.950k (± 2.8%) i/s - 1.418M in 5.088135s write:small 193.384k (± 1.8%) i/s - 968.050k in 5.007446s ``` |
||
---|---|---|
.. | ||
strategy | ||
file_store.rb | ||
mem_cache_store.rb | ||
memory_store.rb | ||
null_store.rb | ||
redis_cache_store.rb |