Dane to główny typ informacji wyodrębnionych z testów porównawczych. Są one przekazywane do funkcji measureRepeated
jako List
, co umożliwia określenie wielu mierzonych danych jednocześnie. Wymagany jest co najmniej 1 typ danych:
testami porównawczymi.
Ten fragment kodu przechwytuje czas renderowania klatki i sekcję niestandardowego śledzenia dane:
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 możliwych do śledzenia bloków zdefiniowane w
RecyclerView
.
kod źródłowy usługi createViewHolder()
to przykład sposobu definiowania możliwych do śledzenia bloków we własnym zakresie
w kodzie.
StartupTimingMetric
TraceSectionMetric
,
Dostępne opcje: FrameTimingMetric
i PowerMetric
omówię szczegółowo w dalszej części tego dokumentu.
Wyniki testów porównawczych są wysyłane do Android Studio, tak jak na ilustracji 1. Jeśli zdefiniowano wiele danych, w wynikach wyjściowych będą się one wyświetlać wszystkie.
Wskaźnik czasu uruchamiania
StartupTimingMetric
rejestruje dane o czasie uruchamiania aplikacji za pomocą tych wartości:
timeToInitialDisplayMs
: czas od momentu, gdy system otrzyma zamiar uruchomienia, do momentu renderowania pierwszego obrazu docelowegoActivity
.timeToFullDisplayMs
: Czas od momentu, gdy system otrzyma intencję uruchomienia, do momentu, gdy aplikacja zgłosi, że jest w pełni narysowana, za pomocą metodyreportFullyDrawn()
. Pomiar zatrzymuje się po zakończeniu renderowania pierwszej klatki. po wywołaniureportFullyDrawn()
lub po jego zakończeniu. Ten pomiary mogą być niedostępne na Androidzie 10 (poziom interfejsu API 29) i starszych wersjach.
StartupTimingMetric
zwraca wartości minimalną, medianę i maksymalną z iteracji uruchamiania. Aby ocenić poprawę czasu uruchamiania, skup się na wartościach mediany, ponieważ zapewniają one najlepszy szacowany typowy czas uruchamiania. Więcej
informacje na temat tego, co wpływa na czas uruchamiania aplikacji, zapoznaj się z sekcją Uruchamianie aplikacji
.
Metryka czasu renderowania klatki
FrameTimingMetric
przechwytuje informacje o czasowaniu z ramek wygenerowanych przez benchmark, np. przewijania lub animacji, i wyprowadza te wartości:
frameOverrunMs
: czas, przez jaki dane klatka nie mieszczą się w terminie. Dodatnie liczby oznaczają porzucenie klatki i widoczne zakłócenia lub zacinanie się. Wartości ujemne wskazują, o ile szybciej klatka została wyrenderowana niż termin. Uwaga: ta funkcja jest dostępna tylko w Androidzie 12 (poziom API 31) i nowszych.frameDurationCpuMs
: czas potrzebny na utworzenie klatki, z CPU zarówno w wątku UI, jak iRenderThread
.
Te pomiary są zbierane w rozkładzie 50, 90, 95 i 99 centyla.
Więcej informacji o identyfikowaniu i poprawianiu spowolnionych klatek znajdziesz w artykule Wydajne renderowanie.
Wskaźnik sekcji TraceSection
TraceSectionMetric
przechwytuje, ile razy sekcja logu czasu pasuje do podanej wartości sectionName
oraz ile to czasu zajmuje. W tym czasie generuje minimalną,
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()
lub ich wersjami asynchronicznymi. Zawsze wybiera pierwsze wystąpienie sekcji logu czasu
zarejestrowane podczas pomiaru. Generuje tylko sekcje logu czasu z Twojego pakietu
domyślnie; uwzględnij procesy spoza pakietu, ustaw
targetPackageOnly = false
Więcej informacji o śledzeniu znajdziesz w artykułach Omówienie śledzenia systemu i Definiowanie zdarzeń niestandardowych.
PowerMetrics
PowerMetric
rejestruje zmianę mocy lub energii w czasie trwania testu w przypadku podanych kategorii mocy.
Każda wybrana kategoria jest podzielona na wymierne podskładniki.
Odznaczone kategorie są dodawane do „niewybranych” danych.
Te dane dotyczą zużycia w całym systemie, a nie zużycia 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 w czasie testu w danej kategorii.energy<category>Uws
: ilość energii przesłanej w jednostce czasu przez jak długo trwa test w danej kategorii.
Kategorie obejmują:
CPU
DISPLAY
GPU
GPS
MEMORY
MACHINE_LEARNING
NETWORK
UNCATEGORIZED
W przypadku niektórych kategorii, takich jak CPU
, podzielenie pracy według
z innych procesów wykonywanych w Twojej aplikacji. Aby zminimalizować zakłócenia,
usunąć lub ograniczyć niepotrzebne aplikacje i konta.
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy obsługa JavaScript jest wyłączona
- Tworzenie profili podstawowych {:#Creation-profile-rules}
- Tworzenie makrotestu
- Analiza i optymalizacja uruchamiania aplikacji {:#app-startup-analysis-Optimizing}