DEV Community

Victor Santos
Victor Santos

Posted on

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)