JavaScript · Intermediário · Português · Técnico
memoização
Técnica que guarda o resultado de uma função para cada conjunto de argumentos e o reaproveita em chamadas repetidas, trocando memória por tempo. Só é segura com funções puras.
Onde usar
Aplicada a cálculos caros, como Fibonacci recursivo, e no useMemo do React. Em code review, pergunte onde o cache é limpo, pois caches sem limite viram vazamento de memória.
Em código
function memo(fn) {
const cache = new Map();
return (n) => {
if (!cache.has(n)) cache.set(n, fn(n));
return cache.get(n);
};
}Exemplos
Aplicamos memoização no cálculo e o tempo caiu pela metade.
A memoização só é segura em função pura.
Cuidado
Memoizar funções impuras ou com argumentos objeto sem pensar na chave do cache.
Sinônimos
memoization, cache de funções
Origem
Do inglês memoization, de memo, 'lembrete'; termo cunhado por Donald Michie nos anos 1960.