DEV Community

Victor Santos
Victor Santos

Posted on

1 1 1 1

Memorização em JavaScript

A memorização (ou "memoization") é uma técnica de otimização que armazena os resultados de funções pesadas ou demoradas em cache, para que chamadas futuras com os mesmos argumentos sejam mais rápidas. A memorização é especialmente útil em funções puras, onde o mesmo conjunto de entradas sempre produz o mesmo resultado.

Como Funciona a Memorização?

Quando uma função memorizada é chamada pela primeira vez com determinados argumentos, ela executa o cálculo e armazena o resultado em um cache. Em chamadas subsequentes com os mesmos argumentos, a função retorna o resultado diretamente do cache, evitando o cálculo repetido.

Implementação Básica de Memorização

function memoize(fn) {
  const cache = {};

  return function(...args) {
    const key = JSON.stringify(args); // Cria uma chave única para os argumentos

    if (cache[key]) {
      console.log("Resultado em cache");
      return cache[key]; // Retorna o valor armazenado no cache
    }

    const result = fn(...args); // Calcula o valor
    cache[key] = result; // Armazena o resultado no cache

    return result;
  };
}
Enter fullscreen mode Exit fullscreen mode

Exemplo de uso:

function factorial(n) {
  if (n <= 1) return 1;
  return n * factorial(n - 1);
}

const memoizedFactorial = memoize(factorial);

console.log(memoizedFactorial(5)); // Calcula e armazena em cache
console.log(memoizedFactorial(5)); // Recupera do cache
Enter fullscreen mode Exit fullscreen mode

Benefícios da Memorização

  • Redução de Processamento: Evita cálculos repetidos, o que melhora o desempenho.
  • Ideal para Funções Recursivas: Acelera o processamento de funções que precisam ser chamadas várias vezes com os mesmos valores.
  • Eficiente em Funções Puras: A memorização funciona melhor quando a função retorna o mesmo valor para os mesmos argumentos. Aplicações Comuns da Memorização
  • Cálculos Matemáticos: Como fatorial, Fibonacci, etc.
  • Chamadas de API: Evita chamadas de API duplicadas com os mesmos parâmetros.
  • Operações de Custo Alto: Processamento de dados e manipulações complexas.

Resumo
A memorização em JavaScript é uma técnica poderosa para melhorar a eficiência do código e acelerar o desempenho em operações repetitivas e de alto custo computacional.

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more