파이썬에서는 함수 래퍼로 lru_cache
이 있습니다. 함수에 추가하면 함수는 다른 입력 인수 당 한 번만 평가됩니다.Matlab에 함수 캐시가 있습니까?
예 (에서 파이썬 문서) :
@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이 실현할 수있는 방법이 있으며 캐시가 무효화 되었습니까?
나는 persistent 변수에 저장된 container.Map을 사용할 것이다. – Daniel
캐시에 내용을 쓸 수 있다면 파일을 마지막으로 편집 한 날짜를 포함시키기가 너무 어려워서는 안됩니다. 이것이 다른 것을 알게되면, 그것을 지우십시오. 이것은 꽤 비싼 함수에 대해서만 가치가 있다고 가정합니다. 그렇지 않으면 세션 중에 출력을 그리드에 저장하는 것을 고려하십시오. –
@DennisJaheruddin, 멋지게 보이지만 기능 변경을 인식하지 못합니다. – Unapiedra