Dane to główny rodzaj informacji wyodrębnianych z testów porównawczych. Są one przekazywane do funkcji measureRepeated
jako List
, co umożliwia jednoczesne określanie wielu mierzonych danych. Aby można było uruchomić test porównawczy, wymagany jest co najmniej 1 rodzaj danych.
Ten fragment kodu rejestruje dane o czasie trwania klatek i niestandardowej sekcji śledzenia:
Kotlin
benchmarkRule.measureRepeated( packageName = TARGET_PACKAGE, metrics = listOf( FrameTimingMetric(), TraceSectionMetric("RV CreateView"), TraceSectionMetric("RV OnBindView"), ), iterations = 5, // ... )
Java
benchmarkRule.measureRepeated( TARGET_PACKAGE, // packageName Arrays.asList( // metrics new StartupTimingMetric(), new TraceSectionMetric("RV CreateView"), new TraceSectionMetric("RV OnBindView"), ), 5, // Iterations // ... );
W tym przykładzie RV CreateView
i RV OnBindView
to identyfikatory bloków, które można śledzić i które są zdefiniowane w RecyclerView
. Kod źródłowy metody createViewHolder()
jest przykładem tego, jak można zdefiniować bloki, które można śledzić, we własnym kodzie.
StartupTimingMetric
, TraceSectionMetric
, FrameTimingMetric
i PowerMetric
zostaną szczegółowo omówione w dalszej części tego dokumentu.
Pełną listę danych znajdziesz w podklasach Metric
.
Wyniki testów porównawczych są wyświetlane w Androidzie Studio, jak pokazano na rysunku 1. Jeśli zdefiniowano wiele rodzajów danych, wszystkie zostaną połączone w danych wyjściowych.

TraceSectionMetric
i FrameTimingMetric
.StartupTimingMetric
StartupTimingMetric
rejestruje dane o czasie uruchamiania aplikacji z tymi wartościami:
timeToInitialDisplayMs
: Czas od momentu, w którym system otrzyma intencję uruchomienia, do momentu, w którym wyrenderuje pierwszą klatkę miejsca docelowegoActivity
.timeToFullDisplayMs
: czas od momentu, w którym system otrzyma intencję uruchomienia, do momentu, w którym aplikacja zgłosi pełne wyrenderowanie za pomocą metodyreportFullyDrawn()
. Pomiar kończy się po wyrenderowaniu pierwszej klatki po wywołaniu funkcjireportFullyDrawn()
lub w niej. Ten pomiar może być niedostępny na Androidzie 10 (poziom API 29) i starszych.
StartupTimingMetric
podaje wartości minimalną, medianę i maksymalną z iteracji początkowych. Aby ocenić poprawę czasu uruchamiania, skup się na wartościach mediany, ponieważ zapewniają one najlepsze oszacowanie typowego czasu uruchamiania. Więcej informacji o tym, co wpływa na czas uruchomienia aplikacji, znajdziesz w artykule Czas uruchomienia aplikacji.

StartupTimingMetric
wynikiFrameTimingMetric
FrameTimingMetric
rejestruje informacje o czasie z klatek wygenerowanych przez test, np. przewijanie lub animację, i zwraca te wartości:
frameOverrunMs
: o ile dana klatka przekracza termin. Liczby dodatnie oznaczają pominiętą klatkę i widoczne zacięcia lub przeskoki. Liczby ujemne wskazują, o ile klatka jest szybsza niż termin. Uwaga: ta funkcja jest dostępna tylko na Androidzie 12 (poziom API 31) i nowszym.frameDurationCpuMs
: czas potrzebny na wygenerowanie klatki na procesorze w wątku interfejsu i wRenderThread
.
Te pomiary są zbierane w rozkładzie 50, 90, 95 i 99 centyla.
Więcej informacji o tym, jak identyfikować i poprawiać spowolnione klatki, znajdziesz w artykule Spowolnione renderowanie.

FrameTimingMetric
wynikiTraceSectionMetric
TraceSectionMetric
rejestruje liczbę wystąpień sekcji śladu pasującej do podanego sectionName
oraz czas jej trwania. W przypadku czasu podaje minimalny,
medianę i maksymalny czas w milisekundach. Sekcja śledzenia jest definiowana przez wywołanie funkcji trace(sectionName)
lub kod między Trace.beginSection(sectionName)
a Trace.endSection()
albo ich asynchroniczne warianty. Zawsze wybiera pierwszą instancję sekcji śladu zarejestrowaną podczas pomiaru. Domyślnie wyświetla tylko sekcje śledzenia z pakietu. Aby uwzględnić procesy spoza pakietu, ustaw targetPackageOnly = false
.
Więcej informacji o śledzeniu znajdziesz w artykułach Omówienie śledzenia systemu i Definiowanie zdarzeń niestandardowych.

TraceSectionMetric
wynikiPowerMetric
PowerMetric
rejestruje
zmianę mocy lub energii w trakcie testu w przypadku podanych
kategorii mocy.
Każda wybrana kategoria jest dzielona na mierzalne podkategorie, a niewybrane kategorie są dodawane do danych „niewybrane”.
Te dane mierzą zużycie w całym systemie, a nie w poszczególnych aplikacjach. Są one dostępne tylko na urządzeniach Pixel 6, Pixel 6 Pro i nowszych:
power<category>Uw
: ilość energii zużytej podczas testu w tej kategorii.energy<category>Uws
: ilość energii przeniesionej w jednostce czasu w trakcie testu w tej kategorii.
Kategorie obejmują:
CPU
DISPLAY
GPU
GPS
MEMORY
MACHINE_LEARNING
NETWORK
UNCATEGORIZED
W przypadku niektórych kategorii, np. CPU
, może być trudno odróżnić pracę wykonaną przez inne procesy od pracy wykonanej przez Twoją aplikację. Aby zminimalizować zakłócenia, usuń lub ogranicz niepotrzebne aplikacje i konta.

PowerMetric
wynikiPolecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy JavaScript jest wyłączony.
- Tworzenie profili podstawowych {:#creating-profile-rules}
- Tworzenie testu Macrobenchmark
- Analiza i optymalizacja uruchamiania aplikacji {:#app-startup-analysis-optimization}