Низконакладной трассировщик Python, который записывает вызовы функций и показывает выполнение кода на интерактивной временной шкале.
flamegraph-rs/flamegraph
Генератор flamegraph на Rust для профилирования проектов Cargo и любых бинарных файлов с помощью perf, xctrace или dtrace/blondie — без Perl.
- Звёзды
- 6,053
- Форки
- 194
- Открытые issues
- 75
- Последний коммит
- 5 дней назад
Что это?
flamegraph строит flamegraph, показывающий, на что программа тратит время. Он работает с проектами Cargo через подкоманду cargo flamegraph, а также позволяет профилировать любой бинарный файл или уже запущенный процесс по PID. Стековые сэмплы собираются с помощью системного инструмента платформы, а затем преобразуются в интерактивный SVG на базе библиотеки Inferno.
Инструмент работает в Linux с perf, в macOS с xctrace, а в Windows — с библиотекой blondie или DTrace, если он установлен. Можно выбрать профиль сборки, бинарный файл, пример, цель для бенчмарка или теста, частоту сэмплирования, цветовую палитру, а также задать собственные команды perf или dtrace.
В README также есть руководство по чтению flamegraph и заметки об измерении производительности, в том числе о методе USE и о том, почему перед оптимизацией стоит провести бенчмаркинг.
Ключевые возможности
- 01Профилирует проекты Cargo, бинарные файлы, примеры, бенчмарки и тесты через cargo flamegraph.
- 02Подключается к запущенным процессам по PID.
- 03Использует perf в Linux, xctrace в macOS, а в Windows — blondie или DTrace.
- 04Создаёт интерактивный SVG, который можно открыть в браузере.
- 05Поддерживает пользовательские параметры команд perf и dtrace и несколько цветовых палитр.
- 06Предоставляет автодополнение для бинарного файла flamegraph в bash, fish, zsh, powershell и elvish.
Сценарии использования
- Поиск горячих функций в приложении на Rust перед его оптимизацией.
- Профилирование бинарного файла на C или C++ без установки Perl и ручной сборки конвейеров.
- Сравнение того, на что уходит время при запуске бенчмарка или тестов.
- Профилирование уже работающего сервиса путём подключения к его процессу по ID.
Быстрый старт
- 1
Установите бинарные файлы flamegraph с помощью Cargo
cargo install flamegraph - 2
Профилируйте проект на Rust
cargo flamegraph - 3
Профилируйте произвольный бинарный файл
flamegraph -- /path/to/binary
Что важно знать
- Для профилирования требуются инструменты платформы: perf в Linux, xctrace в macOS и blondie или dtrace в Windows.
- В Linux с lld (по умолчанию начиная с Rust 1.90.0) или mold необходимо добавить флаг линковщика --no-rosegment, иначе трассировки стека могут быть неточными.
- Для использования perf без привилегий может потребоваться снизить значение perf_event_paranoid, что ослабит безопасность системы.
В подборках
Темы
Частые вопросы
- Что такое flamegraph?
- Генератор flamegraph на Rust для профилирования проектов Cargo и любых бинарных файлов с помощью perf, xctrace или dtrace/blondie — без Perl. flamegraph строит flamegraph, показывающий, на что программа тратит время. Он работает с проектами Cargo через подкоманду cargo flamegraph, а также позволяет профилировать любой бинарный файл или уже запущенный процесс по PID. Стековые сэмплы собираются с помощью системного инструмента платформы, а затем преобразуются в интерактивный SVG на базе библиотеки Inferno.
- flamegraph можно использовать бесплатно? Какая у него лицензия?
- flamegraph распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- flamegraph всё ещё поддерживается?
- Активно поддерживается. Последний коммит в flamegraph — 2 нояб. 2026 г..
- Для чего можно использовать flamegraph?
- Поиск горячих функций в приложении на Rust перед его оптимизацией. Профилирование бинарного файла на C или C++ без установки Perl и ручной сборки конвейеров. Сравнение того, на что уходит время при запуске бенчмарка или тестов. Профилирование уже работающего сервиса путём подключения к его процессу по ID.
- Как установить flamegraph?
- Установите бинарные файлы flamegraph с помощью Cargo: cargo install flamegraph Профилируйте проект на Rust: cargo flamegraph Профилируйте произвольный бинарный файл: flamegraph -- /path/to/binary
- Где скачать flamegraph?
- Исходный код и инструкции по установке — на GitHub: https://github.com/flamegraph-rs/flamegraph
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Низконагрузочный семплер стеков вызовов для CPython на C, не требующий инструментирования и предназначенный для профилирования запущенных Python-процессов.
Бесплатный инструмент для Windows, который помогает выявлять проблемы с производительностью CPU и памяти, особенно в коде, работающем на .NET runtime.
Набор инструментов с открытым исходным кодом для трассировки и профилирования: SDK, системные демоны и браузерный интерфейс для анализа трасс на Android, Linux и в Chromium.
Альтернатива диспетчеру задач для Windows и Linux с подробной информацией о процессах: потоками, памятью, дескрипторами, сокетами и модулями.
Автономный инструмент командной строки, который отслеживает файлы и каталоги и запускает команду при каждом изменении.