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