Messwerte sind die wichtigsten Informationen, die aus Ihren Benchmarks extrahiert werden. Sie werden der Funktion measureRepeated
als List
übergeben, sodass Sie mehrere Messwerte gleichzeitig angeben können. 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 sind RV CreateView
und RV OnBindView
die IDs der zu verfolgenden Blöcke, die in RecyclerView
definiert sind. Die
Quellcode für die createViewHolder()
ist ein Beispiel dafür, wie Sie rückverfolgbare Blöcke innerhalb Ihrer eigenen
Code.
StartupTimingMetric
,
TraceSectionMetric
,
FrameTimingMetric
und PowerMetric
sind abgedeckt.
dieses Dokument genauer an.
Benchmarkergebnisse werden in Android Studio ausgegeben, wie in Abbildung 1 dargestellt. Wenn mehrere Messwerte definiert sind, werden sie in der Ausgabe kombiniert.

TraceSectionMetric
und
FrameTimingMetric
Start-Timing-Messwert
StartupTimingMetric
erfasst Messwerte zum Startzeitpunkt der App mit den folgenden Werten:
timeToInitialDisplayMs
: Die Zeitspanne zwischen dem Empfang einer Startabsicht durch das System und dem Rendern des ersten Frames des ZielsActivity
.timeToFullDisplayMs
: Die Zeitspanne ab dem Zeitpunkt, zu dem das System ein Startabsicht, bis die App vollständig mit demreportFullyDrawn()
. Die Messung endet, sobald der erste Frame nach oder mit demreportFullyDrawn()
-Aufruf gerendert wurde. 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. Wenn Sie die Verbesserung der Startzeit beurteilen möchten, sollten Sie sich auf Medianwerte konzentrieren, da sie die beste Schätzung der typischen Startzeit liefern. Weitere Informationen
Informationen dazu, was sich auf die App-Startzeit auswirkt, finden Sie unter App-Startzeit

StartupTimingMetric
Ergebnisse.FrameTimingMetric
FrameTimingMetric
erfasst Zeitinformationen aus Frames, die von einem Benchmark erstellt wurden, z. B. ein Scrollen oder eine Animation, und gibt die folgenden Werte aus:
frameOverrunMs
: die Zeitspanne, um die die Frist für einen bestimmten Frame überschritten wird. Positive Zahlen geben an, dass ein Frame verloren gegangen ist und es zu Rucklern oder Aussetzern kommt. 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 von 50., 90., 95. und 99. erfasst. Perzentil.
Weitere Informationen zum Identifizieren und Optimieren langsamer Frames findest du unter Langsames Rendern.

FrameTimingMetric
Ergebnisse.TraceSectionMetric
TraceSectionMetric
zeichnet auf, wie oft ein Trace-Abschnitt mit der angegebenen sectionName
vorkommt und wie lange er 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 den Code zwischen Trace.beginSection(sectionName)
und Trace.endSection()
oder deren asynchronen Varianten definiert. Es wird immer die erste Instanz eines Trace-Abschnitts ausgewählt.
die während einer Messung erfasst wurden. Standardmäßig werden nur Trace-Abschnitte aus Ihrem Paket ausgegeben. Wenn Sie Prozesse außerhalb Ihres Pakets einbeziehen möchten, legen Sie targetPackageOnly = false
fest.
Weitere Informationen zum Tracing finden Sie unter System-Tracing – Übersicht und Benutzerdefinierte Ereignisse definieren.

TraceSectionMetric
Ergebnisse.Leistungsmetrik
PowerMetric
erfasst die Änderung der Leistung oder Energie während des Tests für die angegebenen Leistungskategorien.
Jede ausgewählte Kategorie wird in ihre messbaren Unterkomponenten aufgeschlüsselt. Nicht ausgewählte Kategorien werden dem Messwert „Nicht ausgewählt“ hinzugefügt.
Diese Messwerte messen den systemweiten Verbrauch, nicht den Verbrauch pro App. Sie sind auf Google Pixel 6, Google Pixel 6 Pro und neuere Geräte beschränkt:
power<category>Uw
: die Menge an Strom, die während der Dauer deines in dieser Kategorie testen.energy<category>Uws
: Die übertragene Energie pro Zeiteinheit während der Dauer des Tests in dieser Kategorie.
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.

PowerMetric
Ergebnisse.Empfehlungen für dich
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Baseline-Profile erstellen {:#creating-profile-rules}
- Makro-Benchmark schreiben
- Analyse und Optimierung von App-Start-ups {:#app-startup-analysis-Optimization}