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

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

Я хочу знать столицу Узбекистана (или любой другой страны по вашему выбору, если вы уже знаете ее столицу). Пожалуйста, найдите ответ и запишите время, которое вам потребовалось, чтобы найти ответ. Не читайте дальше, пока не найдете ответ. Я уверен, что вам может потребоваться от нескольких секунд до минуты (если вы были очень медленны или с трудом находили ответ), чтобы найти ответ либо в Интернете, либо с помощью других средств, таких как опрос друзей, сверка с картами, книги и т. д.

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

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

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

  1. Проверьте, что является вводом. (набор входных аргументов)
  2. Проверьте, обрабатывала ли функция уже выходные данные для данного набора входных данных.
  3. Если это так, верните вывод (или ответ), заглянув в его кеш. В противном случае обработайте ввод, сохраните вывод в кэше и затем верните ввод.

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

function findCapitalOfCountry(country){
  // create the cache which serves as function intelligence and   
  // close it for any outside modification.
  const cache = []
  return function(country){
    if(country in cache){
      return cache[country];
    } else {
      const capital = findCapitalFromDatabase(country);
      cache[country] = capital;
      return capital;
    }
  }
}

Разве изучение и написание запоминаемых функций не было простым делом? Я сказал Я.

Если вы хотите более подробно изучить функции Memoized, я рекомендую вам посмотреть пояснительное видео ниже, которое я создал на своем канале YouTube. Этот видеоурок поможет вам понять и написать стандартные мемоизированные функции, которые можно использовать во всех ваших проектах.