memoize.lua icon indicating copy to clipboard operation
memoize.lua copied to clipboard

faster cache_get

Open level99 opened this issue 6 years ago • 1 comments

Here is a faster version of cache_get. It removes a hash lookup which can take a decent toll on performance under a cache hit scenario. The gain is most noticeable if there are a fair number of params (eg. 3+).

local function cache_get(cache, params)
  local node = cache
  for i=1, #params do
    node = node and node.children
    node = node and node[params[i]]
  end
  return node and node.results or nil
end

level99 avatar May 31 '19 18:05 level99

I may be wrong about this, as I only did cursory benchmarks, but fwiw, this made memoize far slower for me with single-arg functions. This may not hold for other cases, or my benchmarking may have been too simplistic, or I might have gotten something else wrong.

ghost avatar Dec 07 '22 21:12 ghost