TGViewer
igoroutine.courses igoroutine.courses @igoroutine_courses · 239 subscribers
Post #22 2.65K
🙄🙄 Есть ли смысл в CPU-bound сoncurrency?

Мы все видели таких коллег 😎😎 — только что изучили горутины и сразу решили «распараллелить всё!» Особенно так любят делать новички:

«Оо, я недавно изучил пакет unsafe и concurrency, сейчас распараллелю вычисления в этом запросе и уберу лишние копии».

В лучшем случае код становится менее читаемым.
В худшем — станет медленнее 🫡🫡

Как однажды сказал Дональд Кнут — один из отцов информатики:

«Преждевременная оптимизация — корень всех зол»

Особенно наглядно это работает для CPU-bound задач — например, сложение матриц, хэширование, кодирование. Интуитивно кажется, что «больше горутин = быстрее», но это ловушка.

Закон Амдала отлично иллюстрирует, насколько сложно получить ускорение в этом случае. Например, при 60% параллельного кода разницы между 100 и 1000 ядрами практически нет 💔. В задаче из поста выше ответ по формуле 5.263.

С точки зрения практики, всегда лучше сделать бенчмарк. Как видим, ответ почти сошёлся.


BenchmarkAdd/par/w=1-12 168
BenchmarkAdd/par/w=10-12 776


При этом важно понимать, что с IO-bound задачами всё иначе — там другие принципы и прирост может быть на порядки выше.

Кстати, как раз сегодня на канале вышло видео про устройство атомиков и распараллеливание CPU-bound задач.

Если же хочется разобраться в этих принципах глубже, 25 ноября стартует 2 поток курса The Nature of Concurrency. Это системное погружение в базу многопоточности: от устройства атомиков, мьютексов до модели памяти, устройства race detector'a и lock-free алгоритмов.

Курс закрывает 100% вопросов про Concurrency на собеседованиях, видеоотзывы можно посмотреть на сайте. В честь распродажи 11.11 до конца недели действует скидка на PREMIUM тариф, на нём есть возможность поработать со мной 1 на 1, осталось всего 2 места.
  • ❤ 5
  • 🔥 3
  • 💯 1
More from @igoroutine_courses
  1. Jun 25, 2026Разбор задачи с порядком вызова функций в select Что будет выведено в stdout после запуска…
  2. Jun 24, 2026Post #40
  3. Jun 24, 2026photo post
  4. Mar 24, 2026😎😎 Это изменение сломало set на map[key]struct{}, который мы знали Продолжение предыдуще…
  5. Mar 23, 2026😎😎 Это изменение сломало Set на map[key]struct{}, который мы знали В Go все привыкли пис…
  6. Mar 5, 2026😎😎 От этого data race не спасает даже race detector Продолжение к предыдущему посту. Ита…
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 →