Главная

Мемоизация

Мемоизация

Мемоизация в JS

Мемоизация (запоминание, от англ. memoization) — в программировании сохранение результатов выполнения функций для предотвращения повторных вычислений. Это один из способов оптимизации, применяемый для увеличения скорости выполнения компьютерных программ. Перед вызовом функции проверяется, вызывалась ли функция ранее:

  • если не вызывалась, то функция вызывается, и результат её выполнения сохраняется;
  • если вызывалась, то используется сохранённый результат.

const sum = (...args) =>
  args.reduce((init, current) => {
    return init + current;
  }, 0);

function memoize(func) {

  let cache = {};

  return function () {
    const args = [].slice.call(arguments);

    if (args in cache) {
      console.log("Берем результат из кэша:", cache);
      return cache[args];
    } else {
      console.log("Вычисляем результат и записываем в кэш");
      return (cache[args] = func.apply(this, args));
    }

  };
}

let memoizeSum = memoize(sum);

console.log(memoizeSum(2, 4, 6)); //12 вычисляем результат
console.log(memoizeSum(2, 4, 6)); //12 результат берется из кеша
console.log(memoizeSum(2, 6, 4, 12));
console.log(memoizeSum(2, 6, 4, 12));

  };
}