memoize

Cria uma versão de uma função que guarda seus resultados em cache.

Categoria: Software Development Tools > Performance and Memory

Sintaxe

m = memoize(fun)

Retorna um objeto de função memoizada para o function handle fun.

Descrição

A primeira chamada m(x) executa fun(x) e guarda entradas e saídas. Chamar de novo com entradas iguais devolve a saída guardada sem executar fun. Isso compensa quando o mesmo cálculo caro se repete, por exemplo dentro de um laço ou em uma definição recursiva.

O objeto tem as propriedades Enabled (liga ou desliga o cache) e CacheSize (quantos resultados são mantidos, 10 por padrão), e as funções stats e clearCache o inspecionam e o reiniciam. Não memoize funções cujo resultado depende de números aleatórios, arquivos ou do relógio.

Argumentos de entrada

fun
Function handle a ser envolvido. Deve ser determinístico: mesmas entradas, mesmas saídas, sem efeitos colaterais relevantes.

Argumentos de saída

m
Um objeto matlab.lang.MemoizedFunction, chamado como a função original.

Exemplo

Acertos e falhas

f = memoize(@(x) x^2);
a = f(3)
b = f(3)
s = stats(f);
fprintf('hits %d, misses %d\n', s.Cache.TotalHits, s.Cache.TotalMisses)
Saída
a = 9
b = 9
hits 1, misses 1

Veja também

MemoizedFunction stats clearCache clearAllMemoizedCaches timeit