在Python中,我们有作为函数包装。将它添加到你的函数中,并且函数将只针对每个不同的输入参数进行一次评估。Matlab中是否存在函数缓存?
实例(从Python文档):
@lru_cache(maxsize=None)
def fib(n):
if n < 2:
return n
return fib(n-1) + fib(n-2)
>>> [fib(n) for n in range(16)]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610]
>>> fib.cache_info()
CacheInfo(hits=28, misses=16, maxsize=None, currsize=16)
我不知道在Matlab的是否存在类似的事情?目前我使用的缓存文件,就像这样:
function result = fib(n):
% FIB example like the Python example. Don't implement it like that!
cachefile = ['fib_', n, '.mat'];
try
load(cachefile);
catch e
if n < 2
result = n;
else
result = fib(n-1) + fib(n-2);
end
save(cachefile, 'result');
end
end
我有做这种方式的问题是,如果我改变我的功能,我需要删除的求CacheFile。
有没有办法做到这一点与Matlab实现当我改变了功能和缓存已失效?
我会使用存储在持久变量中的container.Map。 – Daniel
如果您可以将内容写入缓存,那么包含文件上次编辑的日期应该不会太难。一旦你注意到这是不同的,清除它。我想这只会适用于相当昂贵的功能,否则考虑在会话期间将输出存储在网格中。 –
@DennisJaheruddin,这看起来不错,但没有认识到功能的变化。 – Unapiedra