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

Базовая логика функции для мемоизации может быть реализована следующим образом:

function memoize(func) {
  const cache = {}
  return function (...args) {
    const key = JSON.stringify(args)
    if (key in cache) {
      return cache[key]
    } else {
      const result = func.apply(this, args)
      cache[key] = result
      return result
    }
  }
}
 
function expensiveOperation(n) {
  console.log(`Performing expensive operation for ${n}`)
  return n * 2
}
 
const memoizedOperation = memoize(expensiveOperation)
 
console.log(memoizedOperation(5)) // Performing expensive operation for 5, 10
console.log(memoizedOperation(5)) // 10 (result taken from cache)
console.log(memoizedOperation(6)) // Performing expensive operation for 6, 12
console.log(memoizedOperation(6)) // 12 (result taken from cache)

В этом примере мы определяем функцию memoize, которая принимает другую функцию func в качестве аргумента и возвращает новую функцию, которая сохраняет результаты выполнения функции func в кеше. Функция memoize использует объект cache для хранения результатов выполнения функций, и возвращает результаты из кеша, если они уже были вычислены.

Затем мы определяем функцию expensiveOperation, которая имитирует выполнение дорогостоящей операции, и используем функцию memoize для создания новой функции memoizedOperation, которая будет кэшировать результаты выполнения expensiveOperation. При первом вызове функции memoizedOperation с аргументом 5, результат будет вычислен и сохранен в кеше. При последующих вызовах с аргументом 5, результат будет взят из кеша без необходимости повторного выполнения дорогостоящей операции.

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


Назад