stats

Return cached values and statistics for `MemoizedFunction` object

Syntax

``s = stats(mfcn)``

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 memoizing 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 a `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```.

Version History

Introduced in R2017a