Профилировщики

Профилировщик показывает, куда уходит время CPU и память: горячие функции, блокировки потоков, аллокации. Используйте после измерения (метрики, логи), а не вместо здравого смысла — оптимизируйте узкие места, которые дают большой выигрыш.

Workflow

1. Воспроизведите проблему под реалистичной нагрузкой.

2. Снимите профиль 30–60 с (CPU) или снимок heap (память).

3. Откройте flamegraph или timeline — ищите широкие "плато".

4. Измените код → сравните профили до/после.


Системные (любой процесс)

Инструмент Платформа Назначение
perf Linux CPU, cache, call graph
eBPF + BCC Linux Трассировка ядра и userspace
DTrace macOS, FreeBSD Динамическая трассировка
Intel VTune / AMD uProf Win, Linux Глубокий анализ CPU
Valgrind (Callgrind, Massif) Linux CPU и утечки памяти
sudo apt install linux-tools-generic valgrind
perf record -g ./your_app

По языкам

Язык Инструменты
Python cProfile, py-spy, Scalene, line_profiler, memory_profiler
JavaScript Chrome/Firefox Performance, Node --prof, clinic.js, 0x
Go pprof, go test -cpuprofile
Java JFR, VisualVM, Async-Profiler, JProfiler
C# dotTrace, PerfView, Visual Studio Profiler
C/C++ gprof, Valgrind, Google perftools
Rust cargo flamegraph, dhat

Визуализация

Инструмент Формат
FlameGraph (Brendan Gregg) SVG стека вызовов
speedscope Интерактивный просмотр .cpuprofile / pprof
Hotspot GUI для данных perf

Flamegraph: ширина полосы ≈ доля времени в функции. Смотрите "плато" наверху стека — там обычно смысл оптимизации.


Веб и фронтенд

  • Chrome DevTools → Performance: Main thread, Long Tasks, Layout.
  • WebPageTest, Lighthouse — загрузка страницы, LCP, TTI (не замена CPU-профилю сервера).

Когда что использовать

Симптом Куда смотреть
Высокий CPU на сервере perf, py-spy, pprof, JFR
Утечка памяти Massif, heap dump, dotMemory
Медленный UI DevTools Performance
Пики latency под нагрузкой Профиль + нагрузочный тест (k6) одновременно

См. также