TGViewer
Дивовижний світ веброзробки Дивовижний світ веброзробки @babichdev · 2.91K subscribers
Post #122 2.1K
Північ памʼятає! А от твоєму коду — необовʼязково.
Дуже часто, говорячи на співбесідах про оптимізацію швидкодії, перше, що я чую — треба все мемоїзувати. Чи приймаю я це за вірну відповідь? Заледве.

Мемоїзація — це така техніка збереження результату якихось обчислень за умови, що вхідні параметри не змінено.

cache = {}

fn square(x):
if not (x in cache):
cache[x] = x * x
return cache[x]


В цьому дуже спрощеному прикладі з псевдокодом мемоїзується обчислення квадрата числа. І на початку відбувається перевірка, чи ми таке число вже обробляли. Якщо так — повертаємо збережене значення, якщо ні — рахуємо, зберігаємо і вже тоді повертаємо значення з кешу.

Так от. Головне питання — коли ж має сенс користуватися мемоїзацією?

Відповідь проста — коли обчислення дійсно дорогі, і надмірне їх використання може призвести до суттєвих витрат обчислювальних ресурсів.

Часто я бачу в коді "оптимізацію" на кшталт
const doubled = useMemo(
() => value * 2,
[value]
);


І це зовсім не оптимізація. На ділі value * 2 виконується практично миттєво, а головне — без використання надлишкових ресурсів.

У випадку з useMemo, відбудеться наступне: спершу створюється екземпляр анонімної функції, потім — новий масив залежностей; далі виконується useMemo, у якому спочатку порівнюються поточні залежності з попередніми, а за тим — відбувається умовна перевірка; і якщо value змінилося — то запускається ще й саме обчислення.

І усе це — заради однієї операції, яка сама по собі відбудеться настільки блискавично, що ваш M4 навіть її не помітить.

Звичайно, майже не помітить він і виконання усієї катавасії з useMemo, але якщо таких "оптимізацій" назбирається достатньо, то це може стати вже відчутним.

Мемоїзація, безперечно, є надзвичайно потужним інструментом, який дозволяє заощадити час та ресурси. Якщо користуватися ним там, де воно дійсно потрібно.

Якщо ж бездумно "оптимізувати" усе, що бодай трохи нагадує обчислення, швидше за все ви будете виконувати стільки надмірного коду, що швидкодія вашого застосунку погіршиться ще більше.

Тож давайте занотуємо: мемоїзація — це не синонім продуктивности. Це засіб уникнути повторної роботи там, де вона справді затратна. Якщо обчислення швидкі, чи виклики функції одноразові — не чіпайте.

Якщо ж вартість обчислення відчутна, а повторюваність висока — тоді так, мемоїзація стане у пригоді. Але важливо пам’ятати: використання мемоїзації — не ритуал "на гарну швидкодію", а осмислене інженерне рішення, яке має свої наслідки.

***
Пропоную разом із вогником або серденьком до цього допису додати ще й 5 гривень донату на Mavic для 184 навчального центру. Дякую всім і цьом вам у лобіка.
https://send.monobank.ua/jar/AeXQ6YRf2X
5375411202918178

***
@babichdev
  • 🔥 69
  • ❤ 11
  • 👏 3
  • 🤔 1
More from @babichdev
  1. Sep 30, 2026Товариство, запрошую вас цієї суботи, 3 жовтня, на Fwdays Tech Summit — онлайн конференцію…
  2. Sep 28, 2026#збір_на_авто_для_21 Товариство, почнімо тиждень з доброго діла. Я би дуже хотів, аби ми ц…
  3. Sep 27, 2026Знайшов своє старезне резюме. Аж пустив скупу сльозу за тими часами, коли навіть з таким м…
  4. Sep 25, 2026Днями на редіті побачив допис, в якому автор питав, чому його лічильник часу на сторінці з…
  5. Sep 23, 2026Який ШІ найкращий для навчання? Відповідь проста — той, з яким ви чогось навчились. ШІ це…
  6. Sep 18, 2026Оце я, канєшна, провтикав. Конфа завтра, 19 вересня. Ще встигаєте взяти квиточок.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →