Профилировщики
Профилировщик показывает, куда уходит время 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) одновременно |
См. также
- Тесты · Отладка и профилирование
- Отладка в энциклопедии — стратегия поиска узких мест
- Нагрузочное тестирование — сценарии, SLA, стресс