Вызов мемуизированной функции и результатов кэширования
A MemoizedFunction объект поддерживает семантику мемуации дескриптора функции и кэш результатов вызова функции. Он имеет тот же синтаксис вызова, что и дескриптор функции, указанный в Function собственность. Тем не менее, MemoizedFunction объект не является дескриптором функции.
При первом вызове функции memoized с определенным набором входных значений MATLAB ® выполняет функцию, указанную Function свойство и кэширует результаты. При последующих вызовах функции memoized с тем же набором входов MATLAB возвращает кэшированные результаты вместо повторного выполнения функции.
MemoizedFunction объект поддерживает кэш входов и соответствующих выходов. При вызове MATLAB возвращает соответствующие кэшированные выходные значения, если выполняются следующие условия.
Входные аргументы численно равны кэшированным входам. При сравнении входных значений MATLAB обрабатывает NaNs как равные.
Число запрошенных выходных аргументов соответствует количеству кэшированных выходных данных, связанных с входными данными.
Внимание
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 объект |