Что такое меморизация ?

Спросят с вероятностью 17%



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



Как это работает



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



Применение:



Меморизация часто применяется для оптимизации производительности в различных областях, включая:



- Рекурсивные вычисления, например, вычисление чисел Фибоначчи.

- Дорогостоящие вычисления, которые часто повторяются с одними и теми же аргументами.

- Оптимизация производительности веб-приложений, например, в React, где меморизация помогает избежать ненужных перерисовок компонентов.

function memoize(fn) {

const cache = {};

return function(...args) {

const key = args.toString();

if (cache[key]) {

return cache[key];

} else {

const result = fn.apply(this, args);

cache[key] = result;

return result;

}

};

}



// Пример использования меморизации для функции вычисления факториала

const factorial = memoize(function(n) {

if (n === 0) {

return 1;

} else {

return n * factorial(n - 1);

}

});



console.log(factorial(5)); // Вычисляется и сохраняется в кэше

console.log(factorial(5)); // Возвращается результат из кэша, вычислений не происходит




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



👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.



🧩 Идущий | 🔐 Собесы | 🔐 Тестовые