Перейти к основному содержимому

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

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


1. Общесистемные профилировщики (языконезависимые)

Работают на уровне операционной системы, позволяя анализировать любые процессы.

ИнструментОписаниеУстановка / Ссылка
perfСтандартный профилировщик Linux из состава ядраВходит в пакет linux-tools-common; sudo apt install linux-tools-generic
DTraceДинамическая трассировка (Solaris, macOS, FreeBSD)Встроен в macOS (dtrace); в Linux — через DTrace for Linux
eBPF + BCCРасширенная трассировка ядра и пользовательского пространстваsudo apt install bpfcc-tools (Debian/Ubuntu); https://github.com/iovisor/bcc
Intel VTune ProfilerПрофилировщик производительности от Intel (CPU, GPU, память)https://www.intel.com/content/www/us/en/developer/tools/oneapi/vtune-profiler.html
AMD uProfАналог VTune для процессоров AMDhttps://www.amd.com/en/technologies/uprof
Valgrind (Callgrind, Massif)Анализ производительности и утечек памяти (преимущественно Linux)sudo apt install valgrind

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-профилировщик для Windowshttp://www.codersnotes.com/sleepy/
AQTimeКоммерческий профилировщик (Windows)https://www.smartbear.com/product/aqtime/overview/
RemoteryЛёгкий embeddable-профилировщик в реальном времениhttps://github.com/Celtoys/Remotery

3. Профилировщики для Java

ИнструментОписаниеУстановка / Ссылка
VisualVMМониторинг и профилирование JVMhttps://visualvm.github.io; входит в JDK до Java 8, далее — отдельно
JProfilerКоммерческий профилировщик с GUIhttps://www.ej-technologies.com/products/jprofiler/overview.html
YourKitПрофилировщик для Java и .NEThttps://www.yourkit.com/java/profiler/
Java Flight Recorder (JFR)Встроенный профилировщик в HotSpot JVMВключён в Oracle JDK и OpenJDK ≥11; запуск: java -XX:+FlightRecorder ...
Async-ProfilerНизкоуровневый профилировщик с минимальным overheadhttps://github.com/async-profiler/async-profiler
JConsoleПростой мониторинг памяти и потоковВходит в JDK

4. Профилировщики для C# / .NET

ИнструментОписаниеУстановка / Ссылка
dotTraceПрофилировщик от JetBrainshttps://www.jetbrains.com/profiler/
Visual Studio ProfilerВстроенный в Visual StudioДоступен в Professional/Enterprise Edition
PerfViewБесплатный профилировщик от Microsofthttps://github.com/microsoft/perfview
dotNetBenchmark (BenchmarkDotNet)Для микро-бенчмарков и сравнения производительностиNuGet: dotnet add package BenchmarkDotNet
CLR ProfilerАнализ распределения памяти (.NET Framework)https://github.com/microsoftarchive/clrprofiler

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Аналог в FirefoxDevTools → Performance
Node.js built-in profilerОснован на V8 Profilernode --prof script.js, затем node --prof-process isolate-*.log
clinic.jsНабор инструментов для профилирования Node.jsnpm install -g clinic; clinic doctor -- node app.js
0xГенерация flamegraph для Node.jsnpm install -g 0x; 0x app.js
WebPageTestПрофилирование загрузки и рендеринга веб-страницhttps://www.webpagetest.org

7. Профилировщики для Go

ИнструментОписаниеУстановка / Ссылка
pprofВстроенный пакет для профилированияИмпортируется как net/http/pprof или runtime/pprof
GoLand ProfilerGUI в IDE от JetBrainsВходит в GoLand
speedscopeВизуализатор для pprof и других форматовhttps://www.speedscope.app

8. Профилировщики для Rust

ИнструментОписаниеУстановка / Ссылка
perf + flamegraphИспользование perf с Rustcargo install flamegraphcargo flamegraph
dhatАнализ использования памятиcargo install dhat-rs
valgrindПоддержка через valgrind --tool=callgrind

9. Визуализация результатов

ИнструментОписаниеСсылка
FlameGraphВизуализация стеков вызовов в виде "огненных графиков"https://github.com/brendangregg/FlameGraph
speedscopeИнтерактивный визуализатор профилейhttps://www.speedscope.app
HotspotGUI для анализа данных perfhttps://github.com/KDAB/hotspot