top of page

Performance Engineering NEW

Practice writing fast software. Learn to do it right.

400 $/місяць

вт / пт, 18:30 (UTC+3)

старт:

4 серп. 2026 р.

// 31 заняття, 3 місяці

400 $/місяць

вт / пт, 18:30 (UTC+3)

про курс

Більшість проблем перформансу живе не в алгоритмах. Корінь глибше — в тому, як код виконується на реальному CPU та GPU: промахи кешу, невдале розміщення даних у пам'яті, хибні передбачення branch predictor, зайві алокації, перемикання між потоками чи простої в очікуванні ядра ОС. Кожен із цих факторів з'їдає мікросекунди, які складаються у відчутні затримки. Звідси парадокси, що ламають інтуїцію: O(n) програє O(n²), HashMap на мільйони записів поступається sorted array із binary search, а два потоки працюють повільніше за один.

І саме тут починаються по-справжньому цікаві інженерні задачі — особливо зараз, коли частоти процесорів не ростуть, пам'ять відстає від CPU, а залізо більше не пробачає неакуратних рішень. Як прискорити hot loop у 10 разів, не змінюючи алгоритму? Як написати memory allocator, швидший за malloc на вашому workload? Як зрозуміти, що насправді робить ваш код, коли профайлер показує дивне? Цей курс — про розв'язання таких задач: від рівня бітів і байтів до операційних систем, через практику і вимірювання, а не оглядову теорію. Принцип один: не вгадувати — міряти, не «підкручувати» — пояснювати, формувати власну модель того, що відбувається під капотом.

Для middle та senior інженерів, які працюють або хочуть працювати там, де performance — не nice to have, а базова вимога: infrastructure, backend core, databases, machine learning systems, high-frequency trading.

Навчальний план

буде гаряче

ДЛЯ ІНЖЕНЕРІВ

CPU і вартість коду — від аналізу до оптимізацій

Навчимось бачити, де втрачаються наносекунди і як це свідомо виправляти.

• Напишемо власну віртуальну машину: 256 байт памʼяті, 3 регістри, fetch-decode-execute цикл. Після цього JVM, CPython і V8 перестануть бути магією.
• Ієрархія latency операцій і як переписати hot loop з урахуванням цих фактів
• Back-of-envelope estimations: як за 30 секунд на папері сказати, чи встигне алгоритм за секунду. Приклади співбесід у Google та Jane Street
• Техніки, якими інженери Facebook, Twitter і HFT-компаній прискорюють продакшн-код у 100 разів — і як застосувати їх у своєму коді
• Розбір performance-катастроф: regex, що поклав Cloudflare; hash flooding як DoS-вектор проти PHP/Java/Node; Java String у циклі, що робить O(N²)

Cache — чому правильний memory layout важливіший за алгоритм

Два однакові цикли по пам'яті. Перший — у 50 разів швидший. Різниця — в одному рядку.

• Розберемо game engine та прискоримо реальний код у 6–10 разів, не змінюючи алгоритм — тільки через те, як дані лежать у пам'яті
• Cache-friendly алгоритми і структури даних: loop tiling для матриць, B-tree замість red-black tree в базах даних, flat_hash_map замість std::unordered_map
• Інструменти, якими вимірюють cache performance: perf stat на L1-cache-load-misses, cachegrind через valgrind, інтерпретація cg_annotate.
• Кеш операційної системи та вплив на реалізацію File I/O
• Чому ООП з розкиданими полями програє Data-Oriented Design: AoS vs SoA, hot/cold splitting, structure packing

A Bit about Bytes — як дані представлені в памʼяті і чому це має значення

0.1 + 0.2 != 0.3. Це не баг Python — це IEEE 754. Розберемось, чому.

• Variable-length int у Protobuf: як економити 75% байтів на типових даних
• IEEE 754 з нуля: sign, exponent, significand. Зрозуміємо, чому float-и не розподілені рівномірно на числовій осі, і чому фінансові розрахунки ніколи не ведуться у float
• Two's complement: чому -128 і +127 живуть у тому самому байті, і як одне правило «інверт + 1» замінює всю логіку віднімання
• UTF-8 зсередини: закодуємо € у три байти руками, зрозуміємо, чому Twitter рахує grapheme clusters, а не code points
• Розрізняти data / code / stack / heap сегменти просто подивившись на адресу вказівника — і розуміти, звідки береться segfault ще до того, як його кинули
• Bitmap-індекси в БД: як PostgreSQL і ClickHouse відповідають на WHERE gender='M' AND country='UA' швидше за B-tree — і напишемо свій
• Bit hacks, що реально застосовуються в продакшні: popcount для Redis-фільтрів, перевірка степеня двійки без циклів, вирівнювання адрес без умовних переходів
• Endianness на практиці: чому той самий файл, записаний на x86 і прочитаний на ARM, ламається — і як з цим живуть мережеві протоколи

Memory — від malloc до garbage collector

Аллокатор, GC, arena — напишемо все руками. Після цього new і malloc стануть кодом, який ви знаєте зсередини.

• Напишемо власний memory allocator через mmap: header, freelist, first-fit стратегія — і зрозуміємо, чому jemalloc у Facebook і tcmalloc у Google переможуть system malloc на їхніх workload'ах
• Напишемо власний mark & sweep garbage collector
• Stack vs Heap: як працюють push/pop/call/ret на рівні assembly, чому функція не може повернути pointer на локальну змінну, і звідки береться stack overflow на глибокій рекурсії
• Alignment і padding: чому struct { char; int; char; } займає 12 байт замість 6, як правильний порядок полів економить 40% пам'яті, і що процесор робить з unaligned access

Low-level оптимізації — компілятор, асемблер і залізо

Компілятор робить за вас багато. Але іноді він не може — і тоді потрібно розуміти, що відбувається рівнем нижче.

• Instruction-Level Parallelism на практиці: чому процесор може виконувати 4 інструкції за такт
• Як loop unrolling піднімає швидкодію коду
• SIMD через AVX/SSE: як одна інструкція обробляє 8 float-ів замість одного
• Branch prediction зсередини: чому невгадана if-гілка коштує 15–20 циклів, і коли варто переписувати if як branch-free arithmetic
• Reverse engineering: 6 фаз зашифрованого бінарника, які треба розкодувати через gdb і дизасемблер, читаючи x86-64 assembly й розуміючи, що компілятор згенерував з вашого коду

Операційна система — абстракції, за які ви платите

ОС дає зручний інтерфейс: файли, процеси, памʼять. Але кожен syscall — це перемикання контексту. Кожна абстракція — це overhead. Їх розуміння — це різниця між "працює" та "працює швидко".

• Virtual Memory і Page Tables зсередини: як адреса з вашого процесу перетворюється на фізичну через TLB і 4-рівневі таблиці, і чому mov [rax] іноді коштує 100+ циклів
• System calls і context switches: чому один getpid() — це 100 наносекунд, і як vDSO дозволяє обходити ядро для частих викликів
• Page faults як джерело latency spike'ів: чому ваш сервіс раптом даватиме p99 у 10× гірше після запуску GC або після fork(), і як це діагностувати через perf

Процеси — ізоляція, координація, комунікація

Напишемо свій shell з нуля. Після цього ls | grep | wc перестане бути магією командного рядка і стане трьома процесами, трьома pipe, одним парентом.

• Реалізуємо власний shell на C: parsing команд, fork + exec, pipe, redirects
• Fork і exec зсередини: чому саме дві системні функції, а не одна spawn(), і як copy-on-write робить fork() дешевим, поки ви не почнете писати в пам'ять
• IPC на практиці: pipe для потокової передачі, Unix socket для структурованих повідомлень, shared memory для максимальної швидкості — коли вибирати що

Multithreading та Concurrency — від потоків до Event Loop

"Додай потоків" — це не стратегія оптимізації. Це початок нового класу проблем: race conditions, deadlocks, priority inversion, starvation. Конкурентність — це окрема дисципліна, де кожне рішення має trade-off між throughput, latency та correctness.

• Threads vs Processes vs Coroutines: як кожна модель розв'язує одну й ту саму задачу по-різному, і чому Node.js на одному потоці обганяє Apache на тисячі
• False sharing — баг, через який два потоки повільніші за один, хоча не діляться жодною змінною. Як знайти через perf c2c і виправити через alignas(64)
• MESI зсередини: як чотири ядра процесора синхронізують кеш
• Напишемо Thread pool та виправимо багато конкурентних багів

читає

буде гаряче

ДЛЯ ІНЖЕНЕРІВ

Іван Петрушенко

Engineering Lead y @SQUAD, Founder в @CS Osvita. 

Former: @Dell Software Engineer, @Fiverr Senior Software Engineer, @Ring Machine Learning Engineer.

Реєстрація. Перший крок за вами

реєстрація
перший крок за вами

Я приймаю умови Публічної оферти та надаю згоду на обробку своїх персональних даних відповідно до Політики конфіденційності.

відгуки

що говорять випускники

ДЛЯ ІНЖЕНЕРІВ

відгуки
що говорять випускники

Говорять

випускники

Software Engineer @Meta

Владислав Каплун

Під час проходження курсу отримав неабияке задоволення від структурованого підходу. Куратор вражає вмінням доступно та розгорнуто подавати інформацію. Отримані знання з курсу також мають практичний застосунок у моїй роботі, що підкреслює цінність отриманої освіти.

ML Lead @Facebook

Саша Савсуненко

Буде цікаво та складно, всім хайлі рекомендед! Курс допоміг мені швидше розібратись з складним кодом на новому проекті, зрозуміти структури даних та оптимізації, що використовуються. Ці речі має знати кожен програміст.

Software Engineer @Microsoft

Валентин Бочкарьов

Під час підготовки до інтерв‘ю у FAANG проходив курс Algorithms in Practice, а згодом і Performance Engineering. Зараз я з впевненістю можу сказати, що обидва курси допомогли мені отримати оффер від Oracle та Microsoft.

Head Of Engineering @Artur'In

Віталій Маковський

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

Software Engineer @Meta

Роман Перегончук

Курс просто супер! Це дуже класний спосіб отримати нові знання, познайомитись з цікавими людьми і як бонус підготуватись до технічних інтерв'ю. Одна з моїх найкращих інвестицій, можу рекомендувати всім!

Software Engineer @Meta

Назарій Іванчук

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

Software Engineer @Amazon

Кирило Попирко

Курс дуже добре структурований: починається з високорівневих абстракцій і поступово заглиблюється в деталі. Приклади базуються на реальних проєктах; цікаві та практичні домашні завдання (навіть довелося знешкоджувати бомбу!). Вартує кожної хвилини і кожної вкладеної гривні.

Senior Software Engineer @SingleStore (formerly MemSQL)

В'ячеслав Очеретний

Дуже рекомендую цей курс і платформу загалом!

Software Engineer @Google

Ольга Войчик

Це були цікаві 3 місяці, протягом яких вдалося отримати та покращити свої знання з оптимізації коду, віртуальної пам'яті, та взаємодії процесів із операційною системою. Також хотіла б відзначити продумані домашні завдання — це була чудова нагода попрактикувати вивчене.

Software Engineer @Braiins Systems

Марк Фірман

Серед інших курсів немає аналогів за рівнем глибини та якості матеріалів. Це абсолютно унікальний досвід, який забезпечує глибше та практичне розуміння роботи комп'ютера.

Software Engineer @Amazon

Ярослав Бородаєнко

Must-have для всіх, хто прагне заглибитись у нутрощі сучасного комп’ютера: як працює його CPU, з чого складається пам’ять та як операційна система керує процесами. Ці знання дозволять виділитися як на технічних інтерв’ю, так і під час код-рев’ю, надаючи корисні поради. Курс добре структурований і включає нетривіальні домашні завдання. Окреме задоволення приносить аналіз кейсів оптимізацій у кодових базах Facebook та Twitter.

Software Engineer @Google

Ярослава Сердюк

Курс дав глибоке розуміння теми. Було цікаво й пізнавально. Дуже тішить, що такі ініціативи розвиваються в Україні. Щиро рекомендую!

Senior Software Engineer @OpenText

Павло Суріков

This course offers an in-depth exploration of the low-level mechanics behind modern operating systems and CPU architectures, covering topics like caching, memory management, instruction-level performance, processes, multithreading, and concurrency.
I highly recommend it to developers who want to move beyond abstractions and learn to write optimized code grounded in a strong understanding of system internals.

Senior Software Engineer @ Lalafo

Святослав Піх

Особливо сподобався підхід до викладання, коли мене спонукали самому знаходити відповідь маленькими кроками. Завдяки цим курсам я відкрив для себе, як можна продовжувати навчання вже на рівні Senior. А живе спілкування на лекціях виявилося значно ефективнішим, ніж перегляд записаних відео на Udemy, Coursera чи YouTube.

Software Engineer @Google

Богдан Тищенко

This program covered advanced techniques in performance analysis and system optimization.

Based on the quality of the content and the expertise of the instructor, Ivan Petrushenko, I highly recommend this course to any professional seeking to master the nuances of performance engineering.

Site reliability engineer, @Susquehanna International Group, LLP

Данііл Клєщов

Лекції з Іваном були для мене найкориснішими. У computer science є багато сфер, про які не замислюєшся, коли просто пишеш код. Іван якраз показує ці аспекти — як вони працюють і чому їх важливо розуміти, якщо хочеш щось оптимізувати.
Я постійно ставив запитання, активно взаємодіяв, і це було дуже цінно. Коли людина вже пройшла цей шлях і пояснює тобі складні речі простіше, це економить багато часу на дослідження і допомагає швидше сформувати інтуїцію. Це, на мою думку, одна з найсильніших сторін курсу.

Senior Java Software Engineer @DXC Technology

Михайло Борисовський

Курс дуже сильний і фундаментальний — охоплює базові принципи Computer Science незалежно від мови програмування. Під час навчання ми розібрали архітектуру комп'ютера, оптимізації на рівні кешу та пам'яті, особливості асемблера, а також те, як операційна система працює з процесами, потоками, адресним простором і ресурсами. Все це дає глибоке розуміння перформансу на low-level рівні.

iOS Developer @Ring Ukraine

Ірина Дідковська

Курс крутий. Дуже рада, що Іван його створив і що мала нагоду потрапити. Окремо ціную записи лекцій — можна переглядати у зручний час. Плюс велика кількість додаткових відео, посилань і нотаток від Івана суттєво розширили мій кругозір і дали чіткий орієнтир що дивитись і що читати далі.

Lead Software Developer @GlobalLogic

Олексій Колеса

Курс добре структурований і цікавий, при цьому достатньо challenging. Багато практики.

комунікація, яка тримає в тонусі

Зустрічаємось у Zoom двічі на тиждень — щовівторка і щоп’ятниці о 18:30. Лекції тривають 1.5 години, кожна записується, тож ви завжди зможете передивитися матеріал у зручний час. Також регулярно проводимо додаткові Q&A-сесії з лектором. Мова викладання — українська. Додаткові матеріали — англійською.

Slack — наш спільний простір. Тут обговорюємо задачі, ділимось підказками, пишемо хитрі тести й обговорюємо реферали в топ-компанії.

формат, який працює

Постійний зворотний зв’язок у Slack, на лекціях і QA-сесіях — ми завжди поруч.

Жодних поверхневих слайдів: тільки глибокий розбір цікавих задач із реального продакшену.

Сертифікат видаємо лише за реальні результати — виконані домашки, участь у дискусіях, відчутний прогрес.

оточення, яке заряджає

Проводимо відбір, щоб ви навчалися в середовищі сильних і вмотивованих.

Домашки — це не просто задачки. Це справжні міні-проєкти, максимально наближені до продакшену. Оптимізація, дедлайни, баги, фідбек, рефакторинг — усе як у реальному житті. Писатимете багато, місцями дуже багато коду: Python, Java, Go, Assembly, C++. Без лірики — тільки хардкор.

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

Що на вас чекає

have fun and deep dive

ДЛЯ ІНЖЕНЕРІВ

bottom of page