【发布时间】:2019-01-16 05:08:41
【问题描述】:
我已经记住了将对象作为参数的 lodash 函数。当这个函数被调用时,我如何知道它访问缓存的频率与使用新参数评估函数的频率?
【问题讨论】:
标签: javascript lodash memoization
我已经记住了将对象作为参数的 lodash 函数。当这个函数被调用时,我如何知道它访问缓存的频率与使用新参数评估函数的频率?
【问题讨论】:
标签: javascript lodash memoization
如果您只是在开发中执行此操作,则可以执行类似计算 cache.get 被调用的次数与函数被调用的次数之类的操作。类似的东西
var calls = 0;
var hits = 0;
function test(b) {
calls += 1;
return b + 1;
}
var mem_test = _.memoize(test);
mem_test.cache.get = function(n) {
var cached = mem_test.cache.get;
calls += 1;
hits += 1;
return function() {
var result = cached.call(this, n);
return result;
}
}
mem_test(1);
mem_test(2);
mem_test(2);
console.log(calls);
console.log(hits);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
这个简单的例子应该输出 3 和 1。
【讨论】: