Метрики — это основной тип информации, извлекаемой из бенчмарков. Они передаются в функцию measureRepeated в виде List , что позволяет указать сразу несколько измеряемых метрик. Для запуска бенчмарка требуется хотя бы один тип метрики.
Следующий фрагмент кода фиксирует синхронизацию кадров и метрики пользовательского раздела трассировки:
Котлин
benchmarkRule.measureRepeated( packageName = TARGET_PACKAGE, metrics = listOf( FrameTimingMetric(), TraceSectionMetric("RV CreateView"), TraceSectionMetric("RV OnBindView"), ), iterations = 5, // ... )
Ява
benchmarkRule.measureRepeated( TARGET_PACKAGE, // packageName Arrays.asList( // metrics new StartupTimingMetric(), new TraceSectionMetric("RV CreateView"), new TraceSectionMetric("RV OnBindView"), ), 5, // Iterations // ... );
 В этом примере RV CreateView и RV OnBindView — это идентификаторы отслеживаемых блоков, определённых в RecyclerView . Исходный код метода createViewHolder() — пример того, как можно определить отслеживаемые блоки в собственном коде.
 StartupTimingMetric , TraceSectionMetric , FrameTimingMetric и PowerMetric подробно рассматриваются далее в этом документе. Полный список метрик см. в подклассах Metric .
Результаты теста выводятся в Android Studio, как показано на рисунке 1. Если определено несколько показателей, все они объединяются в выходных данных.

TraceSectionMetric и FrameTimingMetric .StartupTimingMetric
 StartupTimingMetric собирает метрики времени запуска приложения со следующими значениями:
-  
timeToInitialDisplayMs: время с момента получения системой намерения запуска до момента отображения первого кадра целевогоActivity. -  
timeToFullDisplayMs: время с момента получения системой намерения о запуске до момента, когда приложение сообщает о полной отрисовке с помощью методаreportFullyDrawn(). Измерение останавливается по завершении отрисовки первого кадра после вызоваreportFullyDrawn()(или содержащего его). Этот показатель может быть недоступен в Android 10 (API уровня 29) и более ранних версиях. 
 StartupTimingMetric выводит минимальное, медианное и максимальное значения для итераций запуска. Для оценки улучшения времени запуска следует ориентироваться на медианные значения, поскольку они дают наилучшую оценку типичного времени запуска. Подробнее о факторах, влияющих на время запуска приложения, см. в разделе Время запуска приложения . 

StartupTimingMetric .FrameTimingMetric
 FrameTimingMetric собирает информацию о времени из кадров, создаваемых бенчмарком, например, при прокрутке или анимации, и выводит следующие значения:
-  
frameOverrunMs: время, на которое кадр отстаёт от крайнего срока. Положительные числа указывают на пропущенный кадр и видимые подтормаживания или задержки. Отрицательные числа указывают, насколько кадр быстрее крайнего срока. Примечание: эта функция доступна только на Android 12 (уровень API 31) и выше. -  
frameDurationCpuMs: время, необходимое для создания кадра на ЦП как в потоке пользовательского интерфейса, так и в потокеRenderThread. 
Эти измерения собираются в распределении 50-го, 90-го, 95-го и 99-го процентилей.
Дополнительную информацию о том, как определить и улучшить медленные кадры, см. в разделе Медленный рендеринг .

FrameTimingMetric .TraceSectionMetric
 TraceSectionMetric фиксирует количество появлений раздела трассировки, соответствующего указанному sectionName , и время, затраченное на это. Для времени выводятся минимальное, медианное и максимальное время в миллисекундах. Раздел трассировки определяется либо вызовом функции trace(sectionName) , либо кодом между Trace.beginSection(sectionName) и Trace.endSection() или их асинхронными вариантами. Функция всегда выбирает первый экземпляр раздела трассировки, полученного во время измерения. По умолчанию функция выводит только разделы трассировки из вашего пакета; чтобы включить процессы вне вашего пакета, установите targetPackageOnly = false .
Дополнительные сведения о трассировке см. в разделах Обзор трассировки системы и Определение пользовательских событий .

TraceSectionMetric .PowerMetric
 PowerMetric фиксирует изменение мощности или энергии в течение всего теста по указанным категориям мощности . Каждая выбранная категория разбивается на измеряемые подкомпоненты, а невыбранные категории добавляются к «невыбранной» метрике.
Эти показатели измеряют потребление в масштабах всей системы, а не потребление по отдельности для каждого приложения, и ограничены устройствами Pixel 6, Pixel 6 Pro и более поздними моделями:
-  
power<category>Uw: количество энергии, потребленной за время вашего теста в этой категории. -  
energy<category>Uws: количество энергии, переданное за единицу времени в течение вашего теста в этой категории. 
Категории включают в себя следующее:
-  
CPU -  
DISPLAY -  
GPU -  
GPS -  
MEMORY -  
MACHINE_LEARNING -  
NETWORK -  
UNCATEGORIZED 
 В некоторых категориях, таких как CPU , может быть сложно отделить работу других процессов от работы вашего приложения. Чтобы минимизировать помехи, удалите или ограничьте доступ к ненужным приложениям и учётным записям. 

PowerMetric .Рекомендовано для вас
- Примечание: текст ссылки отображается, когда JavaScript отключен.
 - Создать базовые профили {:#creating-profile-rules}
 - Написание макробенчмарка
 - Анализ и оптимизация запуска приложения {:#app-startup-analysis-optimization}