TGViewer
Bite the Byte Bite the Byte @bitethebyte · 3.38K subscribers
Post #384 5.39K
Premature Optimization

Ця цитата мене дратує вже десятиріччями, бо її використовують як “виняток підтверджує правило” — не розуміючи оригінальної думки. Повна цитата (по лінку — повна стаття) звучить так:

We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.


Small efficiencies, comprendo, amigos? Питання не про перформанс, а про мікро-оптимізації, бо вони дуже пов’язують код, зроблять тобі big hairy mess. Вся ідея в тому, що потурбуйся спочатку про алгоритм, про архітектуру, щоб вона була вдала — а потім будеш займатися оптимізаціями.

Тобто дядько Кнут, до якого посилаються всі люди, яким впадляк очехлитися, як не писати код з N+1, буквально прямо казав — спочатку зроби нормальний алгоритм. О(1) зроби замість О(N), будь ласка, так?

Хороший приклад (кльово шо співробітники не україномовні 🤣): в Метабейзі вирішили зробити зберігання вибраних фільтрів на дешборді для кожного користувача окремо. Технічну доку про це написав фронтендщик, якому очевидно впадляк було щось робити, і він спланував, що зберігання повинно відбуватися під час виконання запиту карточки.

Але на 1 дешборді може бути з 20 карточок, і кожна з них зберігає фільтри. Ще краще, що чувак, який на бекенді це зробив, зробив цикл зі зберігання кожного фільтра. В тебе 10 фільтрів? Вітаю, це 10 запитів в базу.

І ладно б нормально написать було довше, аніж оцю херню зробить, так ні ж, взагалі ні. 1 додатковий новий дуже простий API vs ковиряння у дуже стрьомному місці… Я навіть не знаю, що з цього швидше було б зробити. Так само і N+1, зробити без зайвої сотні запитів при написанні коду — коштує рівно стільки ж часу, але от при пошуку і виправленні в залежності від того які шмарклі піднакопичилися може з’їсти пару днів.

Кайф, що дізнався я (ну й всі інші) про це, бо великі кастомери почали попадати в deadlock’и. Ми, авжеж, зробимо postmortem, і я там теж збираюся виступити з промовою, що адекватна архітектура і увага до перформансу — це взагалі не передчасна оптимізація.

Але і вам шось захотілося розповісти, бо для того щоб шльопати говнокод вже є О1 та Клавдій, а хороший програміст одразу думає про наслідки.
  • ❤ 63
  • 👍 37
  • 🔥 5
  • 💯 2
  • 😁 1
More from @bitethebyte
  1. Aug 31, 2026‍Лагідна українізація дісталася до алібаби 😁
  2. Aug 24, 2026Вітаю всіх з днем відновлення незалежності! З цього приводу в ДОУ вийшов спецвипуск подкас…
  3. Aug 23, 2026А ви йдете на пікнік ДОУ? Я от нарешті йду. 😁 Дуже прикольно, що є івент, який якби конфе…
  4. Aug 13, 2026Щось зранку задумався над IBAN’ами, і випадково усвідомив, що вони — це ж така сама адреса…
  5. Jul 16, 2026Ну й відстойні ж новини. :( Нажаль, внутрішня політика знов перемогла здоровий глузд, але…
  6. Jun 10, 2026photo post
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 →