Метрики — это основной тип информации, извлекаемой из ваших бенчмарков. Они передаются в функцию 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
подробно рассматриваются далее в этом документе.
Результаты теста выводятся в 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}
Метрики — это основной тип информации, извлекаемой из ваших бенчмарков. Они передаются в функцию 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
подробно рассматриваются далее в этом документе.
Результаты теста выводятся в 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}
Метрики — это основной тип информации, извлекаемой из ваших бенчмарков. Они передаются в функцию 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
подробно рассматриваются далее в этом документе.
Результаты теста выводятся в 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}
Метрики — это основной тип информации, извлекаемой из ваших бенчмарков. Они передаются в функцию 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
подробно рассматриваются далее в этом документе.
Результаты теста выводятся в 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}