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

Подготовка к собеседованию на Frontend Developer

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

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

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

    ### Применение

    Мемоизация широко применяется для ускорения выполнения в разных ситуациях:

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

    - Часто повторяющиеся вычисления — если одна и та же функция вызывается с одинаковыми аргументами.

    - Оптимизация в веб-приложениях — например, в 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));  // Повторный вызов, результат берется из кэша

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

    Роман Ермилов | Источник | 2 дня назад

Ваш ответ на вопрос

Помогите другим участникам подготовиться к собеседованию и пришлите ответ на вопрос, пожалуйста укажите источник вашего ответа

Пожалуйста зарегистрируйтесь для отправки ответа. Это просто :)

Подпишись на наш телеграм канал, это поможет нам в продвижении сервиса @hireguru