3 % simple caching of
function call
4 % inputs are cached too!
6 if isfield(varargin{end},
'disable_caching') && varargin{end}.disable_caching
7 [varargout{1:nargout}] = func_ptr(varargin{:});
11 func_str = func2str(func_ptr);
15 if cache(
'exist', func_str)
16 loaded = cache('load', func_str);
17 for i = 1:loaded.ncached
18 if isequal(loaded.inputs{i}, varargin)
24 if ~isempty(cached_index)
25 varargout = loaded.outputs{cached_index};
28 [varargout{1:nargout}] = func_ptr(varargin{:});
30 if ~exist(
'loaded',
'var')
31 loaded = struct('ncached', 0, 'inputs', [], 'outputs', []);
34 loaded.ncached = loaded.ncached + 1;
35 loaded.inputs{loaded.ncached} = varargin;
36 loaded.outputs{loaded.ncached} = varargout;
37 cache(
'save', func_str, loaded);
function varargout = cache_function(func_ptr, varargin)
simple caching of function call inputs are cached too!