ДЛЯ НОВИЧКОВНЕ ДЛЯ НОВИЧКОВНЕ ОБЯЗАТЕЛЬНОВ РАЗРАБОТКЕ
Профилировщики (profilers) — инструменты для анализа производительности программного обеспечения. Они позволяют измерять время выполнения функций, потребление памяти, частоту вызовов, блокировки потоков и другие метрики, необходимые для выявления узких мест и оптимизации кода.
В данном разделе приведены инструменты для различных языков и платформ с указанием способов установки и ссылок на официальные источники.
1. Общесистемные профилировщики (языконезависимые)
Работают на уровне операционной системы, позволяя анализировать любые процессы.
2. Профилировщики для C / C++
| Инструмент | Описание | Установка / Ссылка |
|---|
| gprof | Простой профилировщик GNU (GCC) | Входит в состав GCC; компиляция с -pg, запуск с gprof |
| Google Perf Tools (gperftools) | CPU и heap-профилирование | sudo apt install google-perftools libgoogle-perftools-dev |
| Intel VTune | Поддержка C/C++ (см. выше) | — |
| Valgrind + Callgrind | Детальная трассировка вызовов | valgrind --tool=callgrind ./program |
| Very Sleepy | Простой GUI-профилировщик для Windows | http://www.codersnotes.com/sleepy/ |
| AQTime | Коммерческий профилировщик (Windows) | https://www.smartbear.com/product/aqtime/overview/ |
| Remotery | Лёгкий embeddable-профилировщик в реальном времени | https://github.com/Celtoys/Remotery |
3. Профилировщики для Java
4. Профилировщики для C# / .NET
5. Профилировщики для Python
| Инструмент | Описание | Установка / Ссылка |
|---|
| cProfile | Встроенный модуль профилирования | Используется без установки: python -m cProfile script.py |
| py-spy | Профилирование запущенных процессов без изменения кода | pip install py-spy |
| py-spy top / record | Аналог top и генератор flamegraph | — |
| Scalene | Профилировщик с учётом CPU, памяти и копирования | pip install scalene |
| line_profiler | Профилирование по строкам кода | pip install line_profiler |
| memory_profiler | Отслеживание использования памяти по строкам | pip install memory_profiler |
| pyflame | Генерация flamegraph (требует ptrace) | https://github.com/uber/pyflame (не поддерживается, замена — py-spy) |
6. Профилировщики для JavaScript / TypeScript
| Инструмент | Описание | Установка / Ссылка |
|---|
| Chrome DevTools Performance | Встроенный профилировщик в браузере | Открыть DevTools → вкладка Performance |
| Firefox Performance | Аналог в Firefox | DevTools → Performance |
| Node.js built-in profiler | Основан на V8 Profiler | node --prof script.js, затем node --prof-process isolate-*.log |
| clinic.js | Набор инструментов для профилирования Node.js | npm install -g clinic; clinic doctor -- node app.js |
| 0x | Генерация flamegraph для Node.js | npm install -g 0x; 0x app.js |
| WebPageTest | Профилирование загрузки и рендеринга веб-страниц | https://www.webpagetest.org |
7. Профилировщики для Go
| Инструмент | Описание | Установка / Ссылка |
|---|
| pprof | Встроенный пакет для профилирования | Импортируется как net/http/pprof или runtime/pprof |
| GoLand Profiler | GUI в IDE от JetBrains | Входит в GoLand |
| speedscope | Визуализатор для pprof и других форматов | https://www.speedscope.app |
8. Профилировщики для Rust
| Инструмент | Описание | Установка / Ссылка |
|---|
| perf + flamegraph | Использование perf с Rust | cargo install flamegraph → cargo flamegraph |
| dhat | Анализ использования памяти | cargo install dhat-rs |
| valgrind | Поддержка через valgrind --tool=callgrind | — |
9. Визуализация результатов