Сбор профилей возможен двумя основными способами: вручную и с помощью API ProfilingManager .
- Ручной сбор профилей предполагает ручной запуск Perfetto на локальном устройстве для записи профилей. Это можно сделать с помощью команд, описанных в разделе «Запись системных трассировок с помощью Perfetto» , или с помощью плитки «Быстрые настройки», как объяснено в разделе «Запись с помощью плитки быстрых настроек» .
-
ProfilingManagerпозволяет приложениям собирать профили в рабочей среде.
Мы рекомендуем использовать ProfilingManager для сбора и анализа данных от большого количества пользователей или для отладки редких проблем. Однако для проблем, которые легче воспроизвести, ручное профилирование может быть лучшим вариантом.
В следующей таблице показано, чем отличаются эти два метода записи профилей:
| Менеджер профилирования | Ручной сбор профилей | |
|---|---|---|
| Управление временем профиля | Более | Меньше |
| Источник профиля | Локальные устройства и публичные пользователи | Только для локального устройства |
| Вывод профиля | Засекречено | Не отредактировано |
| Профилирование на основе событий | Да | Нет |
| Возможность настройки профиля | Меньше | Более |
| Масштабируемость | Высокий | Низкий |
В следующих разделах кратко описаны различия между методами записи профиля.
Управление временем профиля
API ProfilingManager предоставляет больше возможностей для управления запуском и остановкой профилирования приложения по сравнению с ручным профилированием, где инициализация профилирования по времени может быть затруднена. ProfilingManager также упрощает профилирование неожиданного поведения, поскольку позволяет собрать профиль, даже если не удается воспроизвести это поведение локально.
Источник профиля
С помощью ProfilingManager вы можете собирать данные от пользователей из открытых источников, чтобы находить и устранять проблемы с производительностью. В отличие от этого, ручное профилирование позволяет воспроизводить проблемы только на вашем собственном устройстве.
Вывод профиля
ProfilingManager и ручной сбор данных создают различные типы профилированных результатов:
ProfilingManagerсоздает отредактированные трассировки. Отредактированные трассировки отображают информацию о процессе вашего приложения, но скрывают данные от других приложений в системе. ПосколькуProfilingManagerсобирает и редактирует данные перед их возвратом, вы можете собирать трассировки от общедоступных пользователей, защищая их конфиденциальность, не отображая данные от других приложений.Ручной сбор профилей создает неотредактированные трассировки. При ручной записи системной трассировки выходные данные могут включать все процессы, запущенные в системе. Хотя эти неотредактированные трассировки предоставляют более полные данные для отладки, доступ к ним возможен только локально из-за соображений конфиденциальности.
Профилирование на основе событий
ProfilingManager также может собирать профили при возникновении определенных событий, таких как ошибка «Приложение не отвечает» (ANR) или запуск приложения. ProfilingManager будет управлять запуском и остановкой профилей для сбора данных на основе событий.
Возможность настройки профиля
Ручное профилирование обеспечивает наибольшие возможности настройки, в то время как ProfilingManager предлагает меньше вариантов настройки.
Масштабируемость
ProfilingManager — лучший способ масштабирования трассировки, поскольку это единственный вариант, позволяющий разработчикам приложений записывать профили от общедоступных пользователей. С помощью ProfilingManager можно настроить сбор и анализ трассировки в больших масштабах. Ручное профилирование ограничено локальным использованием.