Вызовите функцию memoized и результаты кэша
A MemoizedFunction
объект поддерживает семантику запоминания указателя на функцию и кэша результатов вызова функции. Он имеет тот же синтаксис вызова, что и указатель на функцию, указанный в Function
свойство. Однако MemoizedFunction
объект не является указателем на функцию.
Первый раз, когда вы вызываете memoized функцию с определенным набором входа значений, MATLAB® выполняет функцию, заданную в Function
свойство и кэширует результаты. В более поздних вызовах запоминаемой функции с тем же набором входов MATLAB возвращает кэшированные результаты вместо повторного выполнения функции.
The MemoizedFunction
объект поддерживает кэш входов и соответствующих выходов. При вызове MATLAB возвращает соответствующие кэшированные выходные значения, если следующие условия верны.
Входные параметры численно равны кэшированным входам. При сравнении входных значений MATLAB обрабатывает NaN
s как равный.
Количество запрошенных выходных аргументов совпадает с количеством кэшированных выходов, сопоставленных с входами.
Внимание
A MemoizedFunction
объекту не известно об обновлениях базовой функции. Если вы измените функцию, связанную с запоминаемой функцией, очистите кэш с clearCache
функция объекта.
Как создать MemoizedFunction
объект, вызовите memoize
функция.
Запоминание функции связано с входной функцией, а не с MemoizedFunction
объект. Поэтому имейте в виду следующее.
Построение нового MemoizedFunction
объект той же функции создает другую ссылку на те же данные. Две переменные, которые запоминают одну и ту же функцию, имеют общие значения кэша и свойств объекта, такие как размер кэша. В следующем примере переменные a
и b
совместно использовать кэш и иметь то же значение для размера кэша.
a = memoize(@svd); b = memoize(@svd);
b
(b.clearCache
) также очищает кэш для a
и любые другие переменные, которые запоминают svd
функция. clearCache
является MemoizedFunction
функция объекта.Назначение MemoizedFunction
объект новой переменной создает другую ссылку на те же данные. В следующем примере переменные c
и d
обмениваться данными.
c = memoize(@svd); d = c;
Очистка переменной не очищает кэш, связанный с функцией входа. Чтобы очистить кэш для MemoizedFunction
объект, который больше не существует в рабочей области, создайте новую MemoizedFunction
объект той же функции и использовать clearCache
функция на новом объекте. Также можно очистить кэши для всех MemoizedFunction
объекты, использующие clearAllMemoizedCaches
функция.
clearCache | Очистить кэш для MemoizedFunction объект |
stats | Возвращает кэшированные значения и статистику для MemoizedFunction объект |