Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

160
Visualizações
Javascript Memoization Implementation

I've been debating this topic with my mates at work. I would like to know from you guys, if this is, actually, the right way of implementing the memoization.

function memoize(result) {
  let cache = {};

  return function() {
    if (cache[result]) {
      // returns cached result / no calculation
      return cache[result];
    }
    // calculating...
    cache[result] = result;
    return cache[result];
  };
}

function expensiveCalculation() {
  let counter = 0;
  for (let i = 0; i < 1000000; i++) {
    counter += i;
  }
  return counter;
}

console.time("FirstCalculation");
const memoizedExpensiveCalculation = memoize(expensiveCalculation());
console.timeEnd("FirstCalculation");

console.time("1_Memoized");
memoizedExpensiveCalculation();
console.timeEnd("1_Memoized");

console.time("2_Memoized");
memoizedExpensiveCalculation();
console.timeEnd("2_Memoized");

console.time("3_Memoized");
memoizedExpensiveCalculation();
console.timeEnd("3_Memoized");

The time logs reveals, in fact, the first time takes much more time (which we would expect) and less time afterwards.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

it's not correct


The code you shows

function memoize(result) {
  let cache = {};

  return function() {
    if (cache[result]) {
      // returns cached result / no calculation
      return cache[result];
    }
    // calculating...
    cache[result] = result;
    return cache[result];
  };
}

is basically

function memoize(result) {
  return result
}

in memoization what you cache is input/output pair and skip real function call when input match.

about 4 years ago · Juan Pablo Isaza Relatório

0

something like:

function get(func) {
  let cache = {};

  return function(key) {
    if (key in cache) {
      return cache[key];
    }
    cache[key] = func(key);
    return cache[key];
 };
}

function expensiveCalculation(param) {
  console.log('expensive calculation runs')
  let counter = 0;
  for (let i = 0; i < 10000; i++) {
    counter += i;
  }
  return param*2;
}
const memo = get(expensiveCalculation)
console.log('start')
console.log('first try');
console.log(memo(10));
console.log('second try');
console.log(memo(10));
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda