TGViewer
Daniel Science Daniel Science @daniel_science · 134 subscribers
Post #65 749
🚀Повышение эффективности кода. История про оптимизацию.

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

🛠️ Оптимизация часто требует баланса между производительностью и ясностью кода. Разработчики должны понимать требования проекта и знать, какие аспекты системы замедляют её работу.

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

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

И так, примеры:
1. Есть проект, который делает некоторый ежедневный прогноз, 1 раз в день в 00:00. Прогнозами пользуются только аналитики и некоторые стейкхолдеры. Разработчик видит, что можно оптимизировать расчет фичей в python и тратит 4 часа времени на оптимизацию, ускоряя выполнение кода на 5%.

2. Возьмем тот же скрипт, но теперь добавим вводных. Компания использует BigQuery для хранения данных, для прогноза используются 10 различных таблиц, данных очень много и каждый запрос стоит 10$. Сейчас в коде каждая таблица загружается отдельно по некоторым бизнес-правилам, агрегации происходят в python на основе пересечений и получается итоговая таблица. Для этого нужно сделать 10 запросов к базе по 10$, т.е. данные для прогноза стоят 100$ каждый день. Разработчик видит, что запросы в базу не очень оптимальны и их можно оптимизировать, объединить и тд, чтобы в итоге делать 3 запроса к базе, а не 10. Он тратит на это те же 4 часа, но теперь данные для прогноза стоят не 100$, а 30$.

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

В первом случае ускорение циклов стоило нам 8к + 8к рублей, итого 16к. При этом мы не получили никакого профита для бизнеса, т.к. прогнозы делаются 1 раз ночью и используются людьми в рабочее время. Поэтому, даже ускорение кода в 10 раз не принесёт никакого профита для компании, а разработчик потратит своё и не только время.

Во втором случае мы на оптимизацию запросов к базе потратили те же 16к рублей, но при этом получили сокращение ежедневных затрат на 70$, т.е. порядка 2к$ в месяц приносит такая оптимизация, на которую мы потратили условно 200$. Тут профитность очевидная.

🧠 Личный опыт

Оба примера выше из моей практики. В одной системе, разработанной для обработки больших данных, основная задержка происходила из-за множественных запросов к базе данных. И при профилировании мы увидели оба момента из примеров, но сначала оптимизировали запросы, оптимизация заключалась в объединении этих запросов в один, что значительно сократило время и стоимость запросов к базе. Но мы всё еще видели, что код выполнятся недостаточно быстро и на сдачу проверили, что же с ним не так. После 10 минут просмотра критических мест в коде нам удалось добавить оптимизации, причём прирост был колоссальный. Знаете что мы сделали? Убрали блоки sleep в нескольких местах, которые оставили разработчики во время отладки кода👍😂

Правила:

1️⃣: не начинайте улучшение эффективности, пока ваш код не отвечает всем требованиям проекта. Известная фраза гласит: "Преждевременная оптимизация – корень всех проблем". Сначала следует завершить основную разработку, а затем упрощать и ускорять код.

2️⃣: оптимизируйте только конкретный код. Профилирование кода помогает определить, где узкие места. Если профилирование показывает, что большинство времени выполнения занимает запрос к базе данных, оптимизация может включать переформулировку запроса или индексацию данных.
  • 🔥 6
More from @daniel_science
  1. Nov 27, 2025Всем привет! Смотрите двадцать первый выпуск подкаста "Капитанский мостик". В этом выпуске…
  2. Nov 27, 2025Всем привет! Давно не виделись) Я тут поучаствовал в подкасте «Капитанский мостик» — хорош…
  3. Jul 3, 2025Всем привет! Есть обновление, которыми хочу поделиться. В январе меня пригласили стать вед…
  4. Jun 12, 2025Недавно сидел в парке, читал рабочие чаты, и понял, что я всё больше фокусируюсь не на рез…
  5. Apr 4, 2025Почему измерять личную эффективность не стоит Попытки измерять личную эффективность каждог…
  6. Feb 26, 2025О поисках драйверов роста Представьте, что вы новый менеджер продукта / бизнес-юнита / кор…
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 →