Разработка
Разработка
Выберите платформу

Использование Simpleperf для профилирования ГП

Simpleperf — это инструмент для профилирования ЦП на устройствах Android, таких как Meta Quest. Он устанавливается вместе с Android Studio при настройке среды для нативной разработки.
Simpleperf собирает данные приложения с заданной частотой, чтобы определить, где ЦП расходует время, а также где происходят другие события, связанные с производительностью оборудования. Для получения трассировки Simpleperf не требуется вносить изменения в код, что делает его отличным инструментом для быстрого и широкого анализа производительности приложения. Рекомендуется использовать Simpleperf для отладки проблем с производительностью в вашем приложении.

Требования

Приложения, профилируемые с помощью Simpleperf, должны быть сборками для разработки. Simpleperf установлен в каталоге /bin/ на устройствах Meta Quest, но Android NDK предоставляет скрипты для запуска Simpleperf с хост-машины. Для использования этих скриптов необходимо установить Android NDK.

Настройка

В Android Studio при разработке рекомендуется включать оптимизации и символы. Хотя это и не относится к обязательным требованиям, профилирование с включенной оптимизацией позволяет получить более точное представление о том, как будет функционировать ваше приложение после его выпуска для пользователей.

Рабочие процессы

Следующие рабочие процессы показывают, как использовать Simpleperf для захвата и анализа трассировки производительности.

Захват трассировки с помощью Simpleperf

После установки приложения на устройство и его запуска используйте скрипт app_profiler.py для начала записи трассировки следующим образом:
python <ndk path>/simpleperf/app_profiler.py --disable_adb_root --ndk_path <ndk path> --app <package name> -r "-g --duration <seconds> -e cpu-cycles,cache-misses"
--disable_adb_root требуется, чтобы предотвратить попытки app_profiler.py получить root-доступ, а -r позволяет указать аргументы, которые будут переданы Simpleperf на устройстве.
Чтобы получить полный список дополнительных аргументов, которые можно передать через -r, выполните Simpleperf через adb shell следующим образом:
adb shell bin/simpleperf record --help
Выше используются следующие аргументы:
  • -g — указывает Simpleperf записывать графы вызовов, основанные на DWARF, которые обеспечивают лучшую поддержку по сравнению с графами вызовов, основанными на стековых кадрах, на ARM-устройствах.
  • --duration — позволяет задать продолжительность трассировки в секундах. Это необязательно.
  • -e — позволяет указать, какие события ЦП вы хотите записывать. В этом примере записываются cpu-cycles и cache-misses:
    • cpu-cycles — это событие полезно для определения функций, в которых приложение проводит больше всего времени во время трассировки. В отчете показывается, сколько времени процессора тратится в процентах по сравнению с другими функциями в приложении. Если -e не указан, это событие включено по умолчанию.
    • cache-misses — это событие полезно для выявления пропусков кэша данных в приложении. Как и в случае с cpu-cycles, в отчете указывается, какие функции приложения имеют наибольшее количество пропусков кэша в процентах. По умолчанию это событие отключено, но его включение помогает обнаружить неэффективные паттерны доступа к памяти в приложении.
    • Доступны дополнительные события, которые можно записывать с помощью Simpleperf. Выполните команду adb shell bin/simpleperf list, чтобы получить полный список событий, которые можно передать с помощью -e.
После захвата трассировки с помощью app_profiler.py просмотрите данные трассировки с помощью скрипта report_html.py:
python <ndk path>/simpleperf/report_html.py
Отчет откроется как веб-страница в браузере по умолчанию.

Анализ отчета

Скрипт report_html.py создает страницу с 3 вкладками. Каждая вкладка позволяет переключаться между различными событиями ЦП, указанными с помощью аргумента -e.

Статистика в виде диаграммы

Вкладка Chart Statistics (Статистика в виде диаграммы) отображает круговую диаграмму с выборками, записанными из каждого процесса. Нажимайте сегменты диаграммы, чтобы изучить потоки, библиотеки и вызовы функций.
Chart Statistics

Таблица выборки

Вкладка Sample Table (Таблица выборки) показывает сортируемую и фильтруемую таблицу всех функций, которые были зафиксированы в трассировке. Нажатие на строку в таблице отображает график вызовов с выборками для этой функции.
Sample Table

Flame-график

Вкладка Flamegraph (Flame-график) отображает графики вызовов для каждого потока вашего приложения. Нажмите любую секцию функции в графике, чтобы увеличить масштаб для этой функции.
Simpleperf Flamegraph tab showing call graphs for each app thread with zoomable function slices.

См. также

Логотип навигации
Русский
© 2026 Meta