stats

Return cached values and statistics for MemoizedFunction object

Description

example

s = stats(mfcn) returns cached values and statistics on the use of a MemoizedFunction object.

Examples

collapse all

Create a MemoizedFunction object by memozing the plus function.

mf = memoize(@plus)
mf =
MemoizedFunction with properties:

Function: @plus
Enabled: 1
CacheSize: 10

Call the memoized function several times. The first time you call the function with a particular set of inputs, MATLAB caches the results.

a = mf(13,42);  % calls plus; caches results
b = mf(7,33);   % calls plus; caches results
c = mf(13,42);  % does not call plus; returns cached results
d = mf(5,120);  % calls plus; caches results
e = mf(13,42);  % does not call plus; returns cached results
f = mf(7,33);   % does not call plus; returns cached results

Call the stats function.

s = stats(mf)
s = struct with fields:
Cache: [1x1 struct]
MostHitCachedInput: [1x1 struct]
CacheHitRatePercent: 50
CacheOccupancyPercent: 30

Determine which sets of inputs you used the most.

s.MostHitCachedInput
ans = struct with fields:
Hits: 2
Input: {  }

Obtain the cached results.

c = s.Cache
c = struct with fields:
Inputs: {{1x2 cell}  {1x2 cell}  {1x2 cell}}
Nargout: [1 1 1]
Outputs: {{1x1 cell}  {1x1 cell}  {1x1 cell}}
HitCount: [2 1 0]
TotalHits: 3
TotalMisses: 3

Display all sets of cached inputs and outputs alongside how many times MATLAB accessed the cached values.

T = cell2table([c.Inputs' c.Outputs'],'VariableNames',{'Inputs','Outputs'});
T.Times_Cache_Accessed = c.HitCount'
T=3×3 table
Inputs          Outputs    Times_Cache_Accessed
_________________    _______    ____________________

{}    {[ 42]}    {[ 55]}             2
{[ 7]}    {[ 33]}    {[ 40]}             1
{[ 5]}    {}    {}             0

Input Arguments

collapse all

Function with memoization semantics, specified as a MemoizedFunction object.

Output Arguments

collapse all

MemoizedFunction statistics, returned as a structure containing these fields.

Field

Description

Cache

Cached results, returned as a structure. If m is the number of function calls with cached results, then the structure contains the following fields:

• Inputs – Cached input values, returned as a 1-by-m cell array. Each element in the Inputs cell array is a 1-by-n cell array, where n is the number of inputs for a particular function call.

• Outputs – Cached output values, returned as a 1-by-m cell array. Each element in the Outputs cell array is a 1-by-p cell array, where p is the number of outputs for a particular function call.

• HitCount – Number of times each cached set of input values was accessed, returned as 1-by-m double array.

• TotalHits – Total number of times a set of input values was found in the cache, returned as a double.

• TotalMisses – Total number of times a set of input values was not found in the cache, returned as a double.

MostHitCachedInput

Inputs for the most accessed cached values, returned as a structure. The structure contains the following fields:

• Hits – Number of times the cached values were accessed, returned as an integer

• Input – Input values for the most accessed cached values, returned as a cell array of input values

CacheHitRatePercent

Percentage of times an input was found in the cache, returned as a double. This property is computed by (TotalHits/(TotalHits+TotalMisses))*100.

CacheOccupancyPercent

How full the cache is, returned as a double representing a percentage. This property is computed by (Number of cache entries/cache size)*100.