ExpertiDict

JavaScript · Intermediário · Português · Técnico

memoização

/memwizaˈsɐ̃w̃/substantivo

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.

Veja também

Todos os termos de JavaScript