Otimizando Funções JavaScript com Memoization

Beginner

This tutorial is from open-source community. Access the source code

Introdução

Neste laboratório, exploraremos o conceito de memoização em JavaScript. Memoização é uma técnica utilizada para otimizar o desempenho de funções, armazenando em cache os resultados de chamadas de funções dispendiosas e retornando o resultado em cache quando as mesmas entradas ocorrem novamente. Através deste laboratório, aprenderemos como implementar a memoização em JavaScript usando o objeto Map.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 100%. Recebeu uma taxa de avaliações positivas de 92% dos estudantes.

Função Memoize

Para começar a codificar, abra o Terminal/SSH e digite node. Esta função retorna a função memoizada (em cache). Aqui estão os passos para usar esta função:

  1. Instancie um novo objeto Map para criar um cache vazio.
  2. Retorne uma função que recebe um único argumento que será fornecido à função memoizada. Antes de executar a função, verifique se a saída para esse valor de entrada específico já está em cache. Se estiver, retorne a saída em cache; caso contrário, armazene-a e retorne-a.
  3. Use a palavra-chave function para permitir que o contexto this da função memoizada seja alterado, se necessário.
  4. Defina o cache como uma propriedade na função retornada para permitir o acesso a ele.

Aqui está o código que implementa a função memoize:

const memoize = (fn) => {
  const cache = new Map();
  const cached = function (val) {
    return cache.has(val)
      ? cache.get(val)
      : cache.set(val, fn.call(this, val)) && cache.get(val);
  };
  cached.cache = cache;
  return cached;
};

Para ver como esta função funciona, você pode usá-la com a função anagrams. Aqui está um exemplo:

const anagramsCached = memoize(anagrams);
anagramsCached("javascript"); // takes a long time
anagramsCached("javascript"); // returns virtually instantly since it's cached
console.log(anagramsCached.cache); // The cached anagrams map

Resumo

Parabéns! Você concluiu o laboratório da Função Memoize. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.