Main Content

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: {[13]  [42]}

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
    _________________    _______    ____________________

    {[13]}    {[ 42]}    {[ 55]}             2          
    {[ 7]}    {[ 33]}    {[ 40]}             1          
    {[ 5]}    {[120]}    {[125]}             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.

See Also

Functions

Objects

Introduced in R2017a