Мемоизация
Мемоизация в 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));
};
}