在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