Logo

dev-resources.site

for different kinds of informations.

Memorização em JavaScript

Published at
11/5/2024
Categories
javascript
webdev
memoization
programming
Author
vitinhos67
Author
10 person written this
vitinhos67
open
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.

memoization Article's
30 articles in total
Favicon
The intricacies of implementing memoization in Ruby
Favicon
Memorização em JavaScript
Favicon
When do (and don’t) children re-render in React?
Favicon
Memoization in React: When It Helps and When It Hurts
Favicon
Never call the same function twice (with memoization)
Favicon
Optimizing React Performance with Memoization and React.memo
Favicon
Optimizing React Component Performance with Memoization and React.memo
Favicon
Optimizing React Performance with memoization and React.memo
Favicon
Optimizing React Performance with Memoization and React.memo
Favicon
Optimizing React Component Performance with Memoization
Favicon
Кеширования в React - все ли так однозначно?
Favicon
Understanding and Implementing Memoization in React
Favicon
Caching & Memoization with state variables
Favicon
How to implement Memoization in your React projects
Favicon
Memoization in JavaScript
Favicon
Mastering React: A Deep Dive into Memoization and Component Optimization
Favicon
How to Use Memoization in React for Better Performance
Favicon
Deep Dive into Functional Programming in Javascript
Favicon
Demystifying React Memoization: Understanding React.memo() and the useMemo hook
Favicon
JavaScript Memoization
Favicon
Maximizing Performance: How to Memoize Async Functions in JavaScript
Favicon
Retos JS. Calculando factoriales muy grandes con JS.
Favicon
Memoizing DataFrame Functions: Using Hashable DataFrames and Message Digests to Optimize Repeated Calculations
Favicon
Memoize a React component
Favicon
Memoization in JavaScript and React
Favicon
Memoization in Ruby
Favicon
Advent of code Day 21
Favicon
Understanding Memoization in Javascript
Favicon
Reselect, but in OCaml
Favicon
Memoization in Javascript

Featured ones: