Messwerte sind die wichtigsten Informationen, die aus Ihren Benchmarks extrahiert werden. Sie
werden an measureRepeated
übergeben.
Funktion als List
, mit der Sie angeben können,
mehrere Messwerte gleichzeitig erfassen. Für das Ereignis ist mindestens ein Messwerttyp erforderlich.
ausgeführt werden soll.
Im folgenden Code-Snippet werden Frame-Timing und Messwerte für benutzerdefinierte Trace-Abschnitte erfasst:
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 // ... );
In diesem Beispiel: RV CreateView
und RV OnBindView
sind die IDs rückverfolgbarer Blöcke, die in
RecyclerView
Der Quellcode für die Methode createViewHolder()
ist ein Beispiel dafür, wie Sie in Ihrem eigenen Code nachvollziehbare Blöcke definieren können.
StartupTimingMetric
, TraceSectionMetric
, FrameTimingMetric
und PowerMetric
werden später in diesem Dokument ausführlich behandelt.
Die Benchmark-Ergebnisse werden in Android Studio ausgegeben, wie in Abbildung 1 dargestellt. Wenn mehrere Messwerte definiert sind, werden alle in der Ausgabe zusammengefasst.
Start-Timing-Messwert
StartupTimingMetric
erfasst Messwerte für die App-Startzeit mit den folgenden Werten:
timeToInitialDisplayMs
: Die Zeitspanne ab dem Zeitpunkt, zu dem das System Start-Intent, wenn der erste Frame des Ziels gerendert wirdActivity
timeToFullDisplayMs
: Die Zeitspanne ab dem Zeitpunkt, zu dem das System ein Startabsicht, bis die App vollständig mit demreportFullyDrawn()
. Die Messung endet, wenn das Rendern des ersten Frames abgeschlossen ist. nach demreportFullyDrawn()
-Aufruf oder enthalten ihn. Dieses sind unter Android 10 (API-Level 29) und früheren Versionen möglicherweise nicht verfügbar.
StartupTimingMetric
gibt die Minimal-, Median- und Maximalwerte aus den Startiterationen aus. Um die Verbesserung von Start-ups zu beurteilen, sollten Sie sich auf Medianwerte,
da sie die beste Schätzung der typischen Startzeit bieten. Weitere Informationen
Informationen dazu, was sich auf die App-Startzeit auswirkt, finden Sie unter App-Startzeit
Frame-Timing-Messwert
FrameTimingMetric
erfasst Timing-Informationen aus Frames, die von einer Benchmark erstellt wurden, z. B.
oder Animation und gibt die folgenden Werte aus:
frameOverrunMs
: die Zeitspanne, um die ein bestimmter Frame seine Frist verpasst. Positive Zahlen geben einen abgebrochenen Frame und eine sichtbare Verzögerung oder Ruckeln an. Negative Zahlen geben an, wie viel schneller ein Frame als das Zeitlimit ist. Hinweis: Diese Funktion ist nur auf Geräten mit Android 12 (API-Level 31) und höher verfügbar.frameDurationCpuMs
: die Zeit, die der Frame benötigt, bis er produziert wird. die CPU sowohl im UI-Thread als auch imRenderThread
an.
Diese Messungen werden in einer Verteilung des 50., 90., 95. und 99. Perzentils erfasst.
Weitere Informationen zum Erkennen und Verbessern langsamer Frames findest du unter Langsames Rendering:
TraceSectionMetric
TraceSectionMetric
erfasst, wie oft ein Trace-Abschnitt mit dem angegebenen sectionName
übereinstimmt
und wie lange es dauert. Für die Zeit wird das Minimum ausgegeben,
Medianwert und die Höchstdauer in Millisekunden. Der Trace-Abschnitt wird entweder
durch den Funktionsaufruf
trace(sectionName)
oder der Code zwischen
Trace.beginSection(sectionName)
und
Trace.endSection()
oder
um ihre asynchronen Varianten zu optimieren. Es wird immer die erste Instanz eines Trace-Abschnitts ausgewählt.
die während einer Messung erfasst wurden. Es werden nur Trace-Abschnitte aus Ihrem Paket ausgegeben.
ist standardmäßig aktiviert. um Prozesse außerhalb Ihres Pakets einzubeziehen,
targetPackageOnly = false
Weitere Informationen zum Tracing finden Sie unter Systemübersicht Tracing und Benutzerdefiniertes Definieren Ereignisse.
Leistungsmetrik
PowerMetric
Aufnahmen
die Änderung der Leistung oder Energie während der Dauer des Tests für die
Leistungskategorien.
Jede ausgewählte Kategorie wird in ihre messbaren Unterkomponenten unterteilt.
werden nicht ausgewählte Kategorien zu den nicht ausgewählten Messwert.
Diese Messwerte messen Die Nutzung ist systemweit und nicht pro App begrenzt. auf Google Pixel 6, Google Pixel 6 Pro und neueren Modellen:
power<category>Uw
: die Menge an Strom, die während der Dauer deines in dieser Kategorie getestet.energy<category>Uws
: Die Energiemenge, die pro Zeiteinheit während der Dauer des Tests in dieser Kategorie übertragen wird.
Zu den Kategorien gehören:
CPU
DISPLAY
GPU
GPS
MEMORY
MACHINE_LEARNING
NETWORK
UNCATEGORIZED
Bei einigen Kategorien wie CPU
ist es möglicherweise schwierig, die Aufgaben von
anderen Prozessen aus der Arbeit Ihrer eigenen App. Um Störungen zu minimieren,
unnötige Apps und Konten zu entfernen oder einzuschränken.
Empfehlungen für dich
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Baseline-Profile erstellen {:#create-profile-rules}
- Makro-Benchmark schreiben
- Analyse und Optimierung des App-Starts {:#app-startup-analysis-optimization}