Публикации по теме 'memoization'


Чистые функции, или как я полюбил мемоизацию
Пару месяцев назад я работал над небольшим хобби-проектом, который заключался в создании моего собственного WebGL-фреймворка. Не то, что я собирался публиковать, но мне всегда было интересно, как выглядит внутренняя работа 3D-движка. Проведя небольшое исследование и создав MVP, я решил завершить первую версию и создать небольшой движок частиц, который возьмет мою новую игрушку на тест-драйв. Все шло гладко, но это был тест-драйв, и я решил немного оживить его, добавив в смесь цвет...

Почему JS нужна нативная мемоизация
У меня есть предложение по новой функции для JavaScript: встроенная мемоизация . (Это предложение еще не на стадии 0, потому что ни один чемпион TC39 его еще не принял.) const memoFn = Function.memoize(fn, {hash, compare, select}) Чтобы быть ясным, я не защищаю автоматическое запоминание функций, поскольку это не то, что JS-движок может или должен делать. Механизмы JS не должны автоматически запоминать функции, потому что они не могут определить, является ли функция чистой ...

Полезная аннотация кэша машинописного текста
Серия простых утилит При создании веб-приложений я часто сталкиваюсь с необходимостью кэшировать ответы определенных функций из соображений производительности. Для этого существует несколько подходов: использование Cache-Control Header , API веб-хранилища или подход сервис-воркеров, такой как Workbox (о котором я расскажу подробнее в следующем посте). Но иногда мы хотим иметь немного больше контроля в коде над тем, что мы кешируем, обычно это делается в вызове процесса..

Динамическое программирование
Динамическое программирование было введено Ричардом Беллманом в 1953 году. Термин «динамическое программирование» не имеет ничего общего с тем, что оно на самом деле делает. В этом нет ничего динамичного. Как оказалось, Беллман проводил какое-то исследование, и он хотел скрыть это от своего босса, поскольку его босс ненавидел все, что имело отношение к исследованиям. Поэтому он придумал термин, чтобы это звучало круто, что-то, что получило бы одобрение от его босса, чтобы позволить ему..

Модифицированная задача последовательности Фибоначчи
Я недавно попал в Динамическое программирование . Я начал свое путешествие сначала с просмотра нескольких видеороликов на YouTube, затем постепенно перешел к чтению контента и, наконец, к решению проблем. Большинство программистов сталкивались с проблемами последовательности Фибоначчи. Его идея заключается в вычислении следующего значения в последовательности путем добавления двух предыдущих значений в последовательности. t2 = t1 + t0; Вы можете использовать два подхода к решению..

Мемоизация в Javascript
Функции могут использовать объекты для запоминания результатов предыдущих операций, что позволяет избежать ненужной работы. Эта оптимизация называется запоминание . Объекты и массивы JavaScript очень удобны для этого. Давайте разберемся в этом, написав программу для вычисления чисел Фибоначчи. var fibonacci = function (n) { return n < 2 ? n : fibonacci(n − 1) + fibonacci(n − 2); }; for (var i = 0; i <= 10; i += 1) { console.log('// ' + i + ': ' + fibonacci(i)); }..

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