Вопрос проверяет понимание компромиссов при использовании мемоизации и её потенциального негативного влияния на производительность.
Мемоизация — это техника оптимизации, при которой результаты вызовов функций сохраняются в кэше, чтобы при повторном вызове с теми же аргументами возвращать сохранённое значение, а не выполнять вычисления заново. Однако её повсеместное использование может навредить производительности и читаемости кода.
function memoize(fn) {
const cache = {};
return function(...args) {
const key = JSON.stringify(args);
if (cache[key] !== undefined) {
return cache[key];
}
const result = fn.apply(this, args);
cache[key] = result;
return result;
};
}
// Использование
const expensiveFunction = (n) => {
// Долгие вычисления
return n * 2;
};
const memoizedFn = memoize(expensiveFunction);
console.log(memoizedFn(5)); // Вычисляет
console.log(memoizedFn(5)); // Берёт из кэшаВ этом примере кэш хранится в объекте cache. Если вызывать функцию с разными аргументами, кэш будет расти бесконечно, что может привести к проблемам с памятью.
Мемоизация — мощный инструмент для оптимизации, но её следует применять осознанно, только для чистых функций с повторяющимися вызовами и дорогими вычислениями. Повсеместное использование без анализа может ухудшить производительность и усложнить поддержку кода.
Уровень
Рейтинг:
4
Сложность:
6
Навыки
JavaScript
Node.js
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию