Что такое мемоизация, и как её можно использовать для оптимизации производительности?
Этот вопрос проверяет знание мемоизации как техники оптимизации, которая позволяет улучшить производительность за счёт кэширования результатов функций.
Короткий ответ
Мемоизация — это техника, которая позволяет сохранять результаты выполнения функций для повторного использования, чтобы не вычислять их снова, если входные данные не изменились. Это особенно полезно для тяжёлых вычислений или функций, которые часто вызываются с одними и теми же параметрами. Мемоизация помогает сократить нагрузку на процессор, улучшая производительность приложения.
Длинный ответ
Мемоизация — это процесс кэширования результатов функции в зависимости от её аргументов. Когда функция вызывается с одними и теми же аргументами повторно, вместо выполнения вычислений снова возвращается сохранённый результат. Это особенно полезно для функций, которые выполняют сложные или долгие вычисления.
Пример простейшей мемоизации:
function memoize(fn) {
const cache = {};
return function (...args) {
const key = JSON.stringify(args);
if (cache[key]) {
return cache[key];
}
const result = fn(...args);
cache[key] = result;
return result;
};
}
const slowFunction = (num) => {
console.log('Computing...');
return num * 2;
};
const memoizedFunction = memoize(slowFunction);
console.log(memoizedFunction(5)); // "Computing..." 10
console.log(memoizedFunction(5)); // 10 (результат взят из кэша)В этом примере функция slowFunction вычисляет значение на основе входного аргумента. С помощью мемоизации мы сохраняем результат первого вызова и возвращаем его при последующих вызовах с тем же аргументом, избегая повторного выполнения вычислений.
Мемоизация часто используется в случаях, когда функция вызывается несколько раз с одними и теми же параметрами, например, при работе с React-компонентами, сложными вычислениями или запросами к API. Это может значительно улучшить производительность, уменьшив количество ненужных операций.