Benchmark
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpha-Release |
---|---|---|---|---|
21. August 2024 | 1.3.0 | - | – | - |
Abhängigkeiten deklarieren
Um eine Abhängigkeit von Benchmark hinzuzufügen, müssen Sie das Maven-Repository von Google zu für Ihr Projekt. Gelesen Maven-Repository von Google für weitere Informationen Informationen.
Makro-Benchmark
So verwenden Sie MacroBenchmark:
Fügen Sie in Ihrem Projekt der Datei build.gradle
die folgenden Abhängigkeiten hinzu:
Ihr
Makro-Benchmark-Modul:
Cool
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.3.0" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.3.0") }
Mikro-Benchmark
MicroBenchmark verwenden
Fügen Sie in Ihrem Projekt der Datei build.gradle
die folgenden Abhängigkeiten hinzu:
Ihr
MicroBenchmark-Modul:
Cool
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.3.0" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.3.0") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Die MicroBenchmark-Bibliothek bietet auch ein Gradle-Plug-in für die Verwendung mit Ihrem MicroBenchmark-Modul.
Dieses Plug-in legt Standardeinstellungen für die Build-Konfiguration für das Modul fest, richtet
Benchmark-Ausgabekopie an den Host,
und stellt die
Aufgabe ./gradlew lockClocks
.
Um das Plug-in zu verwenden, fügen Sie die folgende Zeile in den Block „plugins“ der obersten Ebene ein
build.gradle
-Datei:
Cool
plugins { id 'androidx.benchmark' version '1.3.0' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.3.0" apply false }
Wenden Sie das Plug-in dann auf die Datei build.gradle
Ihres Benchmark-Moduls an.
Cool
plugins { id 'androidx.benchmark' }
Kotlin
plugins { id("androidx.benchmark") }
Feedback
Dein Feedback hilft uns, Jetpack zu verbessern. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder zur Verbesserung dieser Bibliothek. In der bestehende Probleme in dieser Bibliothek, bevor Sie eine neue erstellen. So können Sie für ein vorhandenes Problem abstimmen: indem Sie auf die Sternschaltfläche klicken.
Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung. .
Version 1.3
Version 1.3.0
21. August 2024
androidx.benchmark:benchmark-*:1.3.0
wurde veröffentlicht. Version 1.3.0 enthält diese Commits.
Änderungen an Mikro-Benchmarks seit Version 1.2.0
- Das Methoden-Tracing ist bei der Ausführung auf den meisten Geräten in MicroBenchmarks standardmäßig aktiviert
<ph type="x-smartling-placeholder">
- </ph>
- Das Methoden-Tracing wird nach den Messungen als separate Phase ausgeführt.
- Das Methoden-Tracing auf einigen Plattform- und ART-Versionen wirkt sich auf spätere Messphasen aus. Bei diesen Versionen ist das Methoden-Tracing standardmäßig deaktiviert und in der Studio-Ausgabe wird eine Warnung ausgegeben.
- Benchmarks und ANRs des Hauptthreads
<ph type="x-smartling-placeholder">
- </ph>
- Es wurde
measureRepeatedOnMainThread
für UI-Thread-Benchmarks hinzugefügt, z.B. für diejenigen, die mit UIs zum Schreiben/Aufrufen interagieren, um ANR-Fehler zu vermeiden, wenn sie viele Sekunden lang ausgeführt werden. - Methoden-Traces werden übersprungen, wenn davon auszugehen ist, dass die Frist zur ANR-Vermeidung überschritten wird. Setzen Sie
androidx.benchmark.profiling.skipWhenDurationRisksAnr
auf „false“, um dieses Verhalten zu deaktivieren (nicht für CI-Ausführungen empfohlen).
- Es wurde
- Minimierung
<ph type="x-smartling-placeholder">
- </ph>
- Eingebettete Proguard-Regeln zur Verbesserung von MicroBenchmarking bei aktivierter Reduzierung
- Minification/R8 in einem Bibliotheksmodul erfordert AGP 8.3 und kann über
android.buildTypes.release.androidTest.enableMinification
in deinembuild.gradle
aktiviert werden - Es wurde die experimentelle
BlackHole.consume()
API hinzugefügt, um die Eliminierung von veraltetem Code zu verhindern (If6812, b/286091643)
- Messwerte
<ph type="x-smartling-placeholder">
- </ph>
- Experimenteller CPU-Ereigniszähler (Messwerte aus
perf_event_open
, der auf den meisten Plattformversionen Root erfordert), Zugriff überInstrumentationArgument
androidx.benchmark.cpuEventCounter.enable
(kann auftrue
gesetzt werden) undandroidx.benchmark.cpuEventCounter.events
können z. B. festgelegt werden. bis (Instructions,CpuCycles
). Dies sollte von einigen Emulatoren für die Fehlerbehebung bei Nutzerfehlern unterstützt werden,
- Experimenteller CPU-Ereigniszähler (Messwerte aus
MACROBenchmark-Änderungen seit Version 1.2.0
- Überarbeitung der Methodenverfolgung für Makro-Benchmarks.
- Methoden-Traces sind jetzt auf die Dauer der
measureBlock
beschränkt und können mehrere Sitzungen erfassen, wenn der Prozess mehrmals gestartet wird. - Bisher funktionierte das Methoden-Tracing nur für
StartupMode.COLD
-Benchmarks. FürmeasureBlocks
, die den Zielprozess nicht neu gestartet haben, wird nichts erfasst. - Methoden-Traces wurden in der Makro-Benchmark korrigiert, sodass Methoden-Traces auch auf langsameren Geräten vollständig erfasst und gültig sind. (I6349a, b/329904950)
- Methoden-Traces sind jetzt auf die Dauer der
- Dump von ART-Profilen in einzelnen
warmUp
-Iterationen korrekt, wenn der Prozess beendet wird, damitCompilationMode.Partial(warmup=N)
-Messungen genauer sind. (I17923) - Fehlermeldung bei Drop Shader-Broadcast
<ph type="x-smartling-placeholder">
- </ph>
- Es wurden Debugging-Vorschläge zum Löschen der Shader-Broadcast-Fehlermeldung hinzugefügt
- Fügen Sie zwei Instrumentierungsargumente für das Überschreiben des Shader-Drop-Verhaltens hinzu, um Abstürze beim Benchmarking von Apps ohne
ProfileInstaller
1.3 zu umgehen: <ph type="x-smartling-placeholder">- </ph>
androidx.benchmark.dropShaders.enable=true/false
: kann verwendet werden, um alle Shader Drops zu überspringen (einschließlich der inStartupMode.Cold
-Einführungen durchgeführten Drops), insbesondere beim Benchmarking von Apps, die Profileinstaller 1.3 noch nicht verwenden.androidx.benchmark.dropShaders.throwOnFailure=true/false
: kann verwendet werden, um Fehler beim Löschen von Shadern zu tolerieren, z. B. beim Benchmarking von Apps ohne Profiler 1.3 (I4f573).
- Es wurde die experimentelle Variante
MacrobenchmarkRule#measureRepeated
hinzugefügt, die eine benutzerdefiniertePerfettoConfig
für eine vollständig benutzerdefinierte Perfetto-Trace-Aufzeichnung verwendet. Falsch konfigurierte Konfigurationen können dazu führen, dass integrierte Messwertklassen fehlschlagen. (Idfd3d, b/309841164, b/304038384) - Brechen Sie Dexopt-Jobs im Hintergrund ab, bevor Sie eine MacroBenchmark ausführen, um Störungen zu reduzieren. (I989ed)
- MacroBenchmark wartet jetzt 1 Sekunde, bis die Zielanwendung ein ART-Profil leert (zuvor hat es 500 ms gewartet). (I85a50, b/316082056)
- Überarbeitung von TraceSectionMetric
<ph type="x-smartling-placeholder">
- </ph>
- Hinweis: Die unten aufgeführten
TraceSectionMetric
-Änderungen können sich auf die Ausgaben in der CI-Nutzung auswirken und zu Unterbrechungen führen oder das Parsen unterbrechen - „Summe“ ist jetzt die Standardeinstellung, da dieser Messwert meistens für wiederkehrende Ereignisse verwendet wird und zuerst Daten in diesen Fällen verworfen würden
- Anpassbarer und mehr Modi verfügbar
- Modusnamen sind jetzt in Namen der Messwertausgabe eingebettet (in Studio und JSON).
- Unterstützt jetzt Segmente, die mit
Trace.{begin|end}AsyncSection
erstellt wurden.
- Hinweis: Die unten aufgeführten
- Messwerte
<ph type="x-smartling-placeholder">
- </ph>
- Stromversorgung –
PowerMetric.deviceSupportsHighPrecisionTracking
,PowerMetric.deviceBatteryHasMinimumCharge()
undPowerMetric.deviceSupportsPowerEnergy()
hinzugefügt Metric.getResult
wurde entsprechend dem Rückgabetyp ingetMeasurements
umbenannt- Alle Fehler bei der Starterkennung wurden mit log.w / Exception-Labels versehen. Dies ändert das aktuelle Verhalten nicht, sodass einige Fehler ausgegeben werden und andere den Start unbemerkt nicht erkennen. Sie sind lediglich verständlicher. Im Allgemeinen werden
Log.w()
- und keine Startmesswerte gemeldet, wenn Nicht-Frame-Ereignisse fehlen. Ausnahmen werden ausgelöst, wenn ein Start erkannt wird. Ausgenommen hiervon sind Frame-Timing-Informationen (aus UI-/RT-Slices). (Id240f, b/329145809) frameCount
wurde zuFrameTimingMetric
hinzugefügt, um bei der Erkennung von Szenarien zu helfen, in denen sich Messungen ändern, weil sich die Anzahl der produzierten Frames geändert hat (neue Animationen hinzugefügt, Probleme mit der Entwertung behoben). (I1e5aa)- Es wurde klargestellt, dass
frameOverrunMs
der bevorzugte Messwert für das Tracking ist, sofern er in Dokumenten verfügbar ist, und die Gründe dafür. (I18749, b/329478323) - Es wurde ein Problem behoben, bei dem nicht abgeschlossene Frames am Anfang und Ende des Trace paarweise kombiniert wurden, was fälschlicherweise als einzelner extrem langer Frame gemeldet wurde. (I39353, b/322232828)
- Verbessern Sie den
FrameTimingMetric
-Fehler, wenn keine Frames erzeugt werden, und geben Sie immer einen Link zum Nachverfolgen aus, wenn das Parsen von Messwerten fehlschlägt, um die Problemdiagnose zu erleichtern. (I956b9) - Absturz behoben, bei dem
FrameTimingMetric
die Frame-ID nicht parsen konnte, insbesondere auf bestimmten OEM-Geräten. (Ia24bc, b/303823815, b/306235276) - Die strengen Prüfungen in
FrameMetrics
wurden gelockert und es wurden weitere Details zu Fehlermeldungen hinzugefügt. (Iade)
- Stromversorgung –
Baseline-Profilerfassung / Änderungen am Gradle-Plug-in seit Version 1.2.0
- Die maximale empfohlene AGP-Version wurde auf 9.0.0-alpha01 erhöht.
- Achten Sie darauf, dass die Aufgaben
mergeArtProfile
undmergeStartupProfile
immer auf die Erstellung des Basisprofils warten. (I623d6, b/343086054) - Wenn Sie ein Basisprofil erstellen, wird eine Zusammenfassung der Änderungen ausgegeben (I824c8, b/269484510).
- DSL zum Deaktivieren von Warnungen hinzugefügt (Ic4deb, b/331237001)
- Beheben Sie das Problem, damit für Benchmarks generierte Referenzprofile verwendet werden, wenn „
automaticGenerationDuringBuild
“ deaktiviert ist (Ic144f, b/333024280). - Korrigieren Sie die Überschreibungen der
BaselineProfile
-Gradle-Plug-in-Eigenschaften, um das Generieren von Referenzprofilen und Benchmarking zu aktivieren, wenn Sie einennonMinified
- oder Benchmark-Build-Typ anpassen. (Ib8f05, b/324837887) - Fehlerkorrektur für das Einbeziehen von Referenzprofilen der Bibliothek in AAR vor AGP 8.3.0-alpha15. (I1d2af, b/313992099)
- Die Ausgabe-URL für die Referenz und das Startprofil am Ende der Generierungsaufgabe wurde korrigiert. (I802e5, b/313976958)
Weitere wichtige Änderungen seit Version 1.2.0
- Trace-Erfassung
<ph type="x-smartling-placeholder">
- </ph>
- Der EXITCODE 2-Fehler beim Start von „perfetto“ wurde von einem Fehler auf eine protokollierte Warnung reduziert.
- AIDL-Tracing standardmäßig in Benchmarks aktivieren(erfordert API 28) (Ia0af2, b/341852305)
- Porter-Tag-Tracing standardmäßig in Benchmarks aktivieren. Damit werden beispielsweise Wakelock-Tracepoints erfasst. (Icfe44, b/286551983)
- Erhöhtes Zeitlimit für den Start der Trace-Erfassung, um Abstürze beim Starten des Tracings auf langsameren Geräten zu vermeiden (I98841, b/329145808)
- Öffentliche API
PerfettoTraceProcessor.Session.queryMetrics
APIs mit JSON-, textproto- und proto-binären (nicht decodierten) Varianten wurden hinzugefügt. Damit können Sie inTraceProcessor
integrierte Messwerte abfragen (I54d7f, b/304038382). - Aktivieren Sie die Blockierung des Starts des Perfetto-Trace-Eintrags, um das Risiko fehlender Daten zu Beginn des Trace zu verringern. Wird nur ab API 33 unterstützt. (Ie6e41, b/310760059)
- JSON-Ausgabe
<ph type="x-smartling-placeholder">
- </ph>
- Zusätzliche Informationen im Benchmark-Kontext in der JSON-Ausgabe hinzugefügt:
<ph type="x-smartling-placeholder">
- </ph>
context.artMainlineVersion
– Ganzzahlversion des Art-Mainline-Moduls (falls auf dem Gerät vorhanden, andernfalls-1
)context.build.id
– Ist gleich android.os.Build.IDcontext.build.version.codename
– Ist gleich android.os.Build.VERSION.CODENAMEcontext.build.version.abbreviatedCodename
: entspricht dem ersten Buchstaben des Codenamens vor der Veröffentlichung (einschließlich bei Release-Builds) (Ie5020)
- Die
profilerOutput
-Liste wurde zur JSON-Ausgabe hinzugefügt, um die Tools zur Profilerstellung zu erleichtern (z. B. Perfetto, Methoden-Traces) (I05ddd, b/332604449). - Es wurde eine Warnung hinzugefügt, wenn Android Test Orchestrator in Benchmark-Modulen verwendet wird, da dadurch Ausgabe-JSON-Dateien pro Modul wiederholt überschrieben werden. (Ia1af6, b/286899049)
- Wird ausgelöst, wenn Dateinamen länger als 200 Zeichen sind, um unklare Abstürze beim Schreiben oder Nachverarbeiten von Dateien zu vermeiden. (I4a5ab)
- Zusätzliche Informationen im Benchmark-Kontext in der JSON-Ausgabe hinzugefügt:
<ph type="x-smartling-placeholder">
Version 1.3.0-rc01
7. August 2024
androidx.benchmark:benchmark-*:1.3.0-rc01
wurde veröffentlicht. Version 1.3.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Fehler bei
androidx.benchmark.cpuEventCounter
mit fehlerhaften Werten für Ereignisse beheben, die keine Anweisungen auslösen (I7386a, b/286306579) - Korrigieren Sie
resumeTiming
/runWithTimingDisabled
, um die Prioritätsreihenfolge der Messwerte zu berücksichtigen und die Auswirkungen des Pausierens/Fortsetzens von Messwerten mit niedrigerer Priorität auf die Ergebnisse von Messwerten mit höherer Priorität erheblich zu verringern. Wenn Sie beispielsweise CPU-Leistungszähler über das InstrumentierungsargumentcpuEventCounter.enable
verwenden, wird timeNs beim Pausieren/Fortsetzen nicht mehr signifikant reduziert. (I39c2e, b/286306579, b/307445225) - Die Wahrscheinlichkeit, dass ein Stack-Sampling dazu führt, dass
measureRepeatedOnMainThread
den Hauptthread nicht rechtzeitig erreicht, wurde verringert, indem die Konvertierung der Stack-Stichproben aus dem Hauptthread verschoben wurde. (I487a8, b/342237318) - Die manuelle Beschreibung des Zugriffs auf neue Plattform-APIs wurde entfernt, da dies bei Verwendung von R8 mit AGP 7.3 oder höher (z.B. R8-Version 3.3) und bei allen Builds bei Verwendung von AGP 8.1 oder höher (z.B. D8 Version 8.1) automatisch über die API-Modellierung erfolgt. Kunden, die AGP nicht verwenden, wird empfohlen, auf D8-Version 8.1 oder höher zu aktualisieren. Weitere Details findest du in diesem Artikel. (I9496c, b/345472586)
- Es wurde agp-Versionsprüfung hinzugefügt, um den Paketnamen als instr arg zu senden. Vor AGP 8.4.0 kann der Paketname der Ziel-App nicht über Instrumentierungsargumente an die Instrumentierungs-App gesendet werden. (0c72a3f)
Version 1.3.0-beta02
10. Juli 2024
androidx.benchmark:benchmark-*:1.3.0-beta02
wurde veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Behandeln Sie EXITCODE
2
ordnungsgemäß, wenn Perfetto gestartet wird, um eine Warnung zu protokollieren, aber fahren Sie fort.
Version 1.3.0-beta01
12. Juni 2024
androidx.benchmark:benchmark-*:1.3.0-beta01
wurde veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.
API-Änderungen
MethodTracing.affectsMeasurementOnThisDevice
wurde aus Konsistenzgründen inAFFECTS_MEASUREMENT_ON_THIS_DEVICE
umbenannt. (I1bdfa)- Die experimentelle
BlackHole.consume()
API wurde hinzugefügt, um die Eliminierung von veraltetem Code in MikroBenchmarks zu verhindern. (If6812, b/286091643) - MicroBenchmark wird jetzt korrekt ausgegeben, um zu verhindern, dass die Methodenverfolgung die Messungen beeinträchtigt. Dies tritt auf bestimmten Geräten auf, wenn das Methoden-Tracing über Instrumentierungsargumente oder
MicrobenchmarkConfig
erzwungen wird und wenn nach einem Methoden-Trace eine Messung versucht wird. Die betroffenen Geräte haben API 26-30 oder bestimmte ART-Mainline-Modulversionen, die von dieser Störung betroffen sind. Sie können während der Laufzeit überProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice
erkannt werden. (Iafb92, b/303660864)
Fehlerkorrekturen
- Die empfohlene maximale AP-Version wurde auf 9.0.0-alpha01 erhöht. (I5bbb0)
- Kompilierungsmodus zum Benchmark-Kontext hinzugefügt (If5612, b/325512900)
- AIDL-Tracing standardmäßig aktivieren (erfordert API 28) (Ia0af2, b/341852305)
- Zusätzliche Informationen im Benchmark-Kontext in der JSON-Ausgabe hinzugefügt:
<ph type="x-smartling-placeholder">
- </ph>
context.artMainlineVersion
: ganzzahlige Version des Art-Mainline-Moduls (falls auf dem Gerät vorhanden, andernfalls -1)context.build.id
– Ist gleichandroid.os.Build.ID
context.build.version.codename
– Ist gleichandroid.os.Build.VERSION.CODENAME
context.build.version.abbreviatedCodename
: entspricht dem ersten Buchstaben des Codenamens der Vorabveröffentlichung (auch bei Release-Builds) (Ie5020)
- Der Fehler in
StackSampling
wurde so korrigiert, dassandroidx.benchmark.profiling.sampleDurationSeconds
berücksichtigt wird (Ib1d53). - Ändere die allgemeine Abhängigkeit von Makro-> zu
api()
, um die Verwendung zu vereinfachen, z.B.PerfettoTrace
undPerfettoConfig
. (Icdae3, b/341851833) - Achten Sie darauf, dass die Aufgaben
mergeArtProfile
undmergeStartupProfile
immer auf die Erstellung des Basisprofils warten. (I623d6, b/343086054) - Berücksichtigen Sie bei der Entscheidung, ob eine Variante aktiviert werden soll, den Aktivierungsstatus für Varianten. (I5d19e, b/343249144)
- Das standardmäßige Startzeitlimit des Perfetto-Trace-Prozessors wurde erhöht. (I87e8c, b/329145808)
Version 1.3.0-alpha05
14. Mai 2024
androidx.benchmark:benchmark-*:1.3.0-alpha05
wurde veröffentlicht. Version 1.3.0-alpha05 enthält diese Commits.
Fehlerkorrekturen
- Klarere Ausnahme auslösen, wenn der Makrobench-Messwert für alle Iterationen Nullwerte zurückgibt (Iab58f, b/314931695)
- Den Microbench-Proguard-Regeln wurden zusätzliche Problemumgehungen hinzugefügt, einschließlich der Unterstützung von Listener-Regeln und anderen beobachteten Warnungen / Fehlern. (I14d8f, b/329126308, b/339085669)
- Das Methoden-Tracing wird während eines MacroBenchmark als separate Phase ausgeführt und wirkt sich nicht mehr auf Messungen aus. (If9a50, b/285912360, b/336588271)
- Es wurden zusätzliche Vorschläge zur Fehlerbehebung hinzugefügt, um eine Fehlermeldung für Shader-Broadcasts zu hinterlassen. (I5efa6, b/325502725)
Version 1.3.0-alpha04
1. Mai 2024
androidx.benchmark:benchmark-*:1.3.0-alpha04
wurde veröffentlicht. Version 1.3.0-alpha04 enthält diese Commits.
API-Änderungen
- Es wurde die experimentelle Variante
MacrobenchmarkRule#measureRepeated
hinzugefügt, die eine benutzerdefiniertePerfettoConfig
für eine vollständig benutzerdefinierte Perfetto-Trace-Aufzeichnung verwendet. Falsch konfigurierte Konfigurationen können dazu führen, dass integrierte Messwertklassen fehlschlagen. (Idfd3d, b/309841164, b/304038384) PowerMetric.deviceSupportsPowerEnergy
zur besseren Verständlichkeit inPowerMetric.deviceSupportsHighPrecisionTracking
umbenennen (I5b82f)PowerMetric.deviceBatteryHasMinimumCharge()
undPowerMetric.deviceSupportsPowerEnergy()
wurden hinzugefügt, damit Benchmarks je nach der Fähigkeit zur Messung der Geräteleistung geändert oder übersprungen werden können. (I6a591, b/322121218)
Fehlerkorrekturen
- Vergleich mit vorherigem Basisprofil hinzugefügt (I824c8, b/269484510)
- DSL zum Deaktivieren von Warnungen hinzugefügt (Ic4deb, b/331237001)
- Ausnahme für das Infofenster wurde geändert, wenn Benchmark-Varianten deaktiviert sind (I8a517, b/332772491).
- Vereinfachen Sie die Erfassung von Methoden-Traces für eine MacroBenchmark, die auf die Dauer der tatsächlichen
measureBlock()
beschränkt ist. Bisher wurde es beim Start des Zielprozesses gestartet und nur Kaltstarts unterstützt (Iee85a, b/300651094). - Abstürze vermeiden, wenn Perfetto Trace-Prozessor langsam startet (I98841, b/329145808)
Version 1.3.0-alpha03
17. April 2024
androidx.benchmark:benchmark-*:1.3.0-alpha03
wurde veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.
Neue Funktionen
- Fügt öffentliche API
PerfettoTraceProcessor.Session.queryMetrics
APIs mit JSON-, textproto- und proto-binären (nicht decodierten) Varianten hinzu. Damit können Sie in TraceProcessor integrierte Messwerte (I54d7f, b/304038382) abfragen. profilerOutput
wurde der JSON-Ausgabe hinzugefügt, um die Tools zur Profilerstellung zu vereinfachen (z.B. Perfetto, Methoden-Traces). (I05ddd, b/332604449)- Power-Tag wurde der Perfetto-Konfiguration für Benchmarks hinzugefügt. Damit werden beispielsweise Wakelock-Tracepoints erfasst. (Icfe44, b/286551983)
- Das inst-Argument
androidx.benchmark.profiling.skipWhenDurationRisksAnr
wurde hinzugefügt. Es kann auf „false“ gesetzt werden, um das Überspringen von Methoden-Traces zu vermeiden, wenn die erwartete Dauer zu einem ANR-Fehler führen kann. Dies sollte bei CI-Ausführungen dringend empfohlen werden. - Das experimentelle Argument
androidx.benchmark.profiling.perfCompare.enable
wurde hinzugefügt. Setzen Sie es auf "true", um einen Vergleich zwischen der Mess- und der Profilerstellungsphase auszuführen. Nützlich in den Aufwand der Methodenverfolgung. (I61fb4, b/329146942)
API-Änderungen
TraceSectionMetric.Mode
wurde in eine versiegelte Klasse geändert, um eine künftige Erweiterung zu ermöglichen, ohne dabei alle Operationen zu beeinträchtigen (I71f7b)- Es wurden
TraceSectionMetric.Mode.Average
und.Count
hinzugefügt und Argumente neu angeordnet, sodass das häufigere Argument (Modus) weiter oben in der Argumentliste stand, wodurch die Notwendigkeit der Angabe von Parameternamen reduziert wurde. (Ibf0b0, b/315830077, b/322167531) Metric.getResult
wurde ingetMeasurements
umbenannt, um dem Rückgabetyp zu entsprechen (I42595)
Fehlerkorrekturen
- Beheben Sie das Problem, damit für Benchmarks generierte Referenzprofile verwendet werden, wenn „
automaticGenerationDuringBuild
“ deaktiviert ist (Ic144f, b/333024280). - Korrigieren Sie die Überschreibungen der
BaselineProfile
-Gradle-Plug-in-Eigenschaften, um das Generieren von Referenzprofilen und Benchmarking zu aktivieren, wenn Sie einennonMinified
- oder Benchmark-Build-Typ anpassen. (Ib8f05, b/324837887) - Methoden-Traces wurden in der Makro-Benchmark korrigiert, sodass Methoden-Traces auch auf langsameren Geräten vollständig erfasst und gültig sind. (I6349a, b/329904950)
- Aktivieren Sie die Blockierung des Starts des Perfetto-Trace-Eintrags, um das Risiko fehlender Daten zu Beginn des Trace zu verringern. Wird nur ab API 33 unterstützt. (Ie6e41, b/310760059)
- Es wurde eine Warnung hinzugefügt, wenn Android Test Orchestrator in Benchmark-Modulen verwendet wird, da dadurch Ausgabe-JSON-Dateien pro Modul wiederholt überschrieben werden. (Ia1af6, b/286899049)
- „,“ erzwingen (Komma) Tausendertrennzeichen zur Konsistenz in der Studio-Ausgabe, wobei die Sprache des Geräts ignoriert wird (I3e921, b/313496656)
TraceSectionMetric
unterstützt jetzt Segmente, die mitTrace.{begin|end}AsyncSection
erstellt wurden. (I91b32, b/300434906)- Alle Fehler bei der Starterkennung wurden mit log.w / Exception-Labels versehen. Dies ändert das aktuelle Verhalten nicht, sodass einige Fehler ausgegeben werden und andere den Start unbemerkt nicht erkennen. Sie sind lediglich verständlicher. Im Allgemeinen werden
Log.w()
- und keine Startmesswerte gemeldet, wenn Nicht-Frame-Ereignisse fehlen. Ausnahmen werden ausgelöst, wenn ein Start erkannt wird. Ausgenommen hiervon sind Frame-Timing-Informationen (aus UI-/RT-Slices). (Id240f, b/329145809) - Brechen Sie Dexopt-Jobs im Hintergrund ab, bevor Sie eine MacroBenchmark ausführen, um Störungen zu reduzieren. (I989ed)
frameCount
wurde zuFrameTimingMetric
hinzugefügt, um bei der Erkennung von Szenarien zu helfen, in denen sich Messungen ändern, weil sich die Anzahl der produzierten Frames geändert hat (neue Animationen hinzugefügt, Probleme mit der Entwertung behoben). (I1e5aa)- Es wurde klargestellt, dass
frameOverrunMs
der bevorzugte Messwert für das Tracking ist, sofern er in Dokumenten verfügbar ist, und die Gründe dafür. (I18749, b/329478323)
Version 1.3.0-alpha02
20. März 2024
androidx.benchmark:benchmark-*:1.3.0-alpha02
wurde veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.
Neue Funktionen
Experimentelle R8-Unterstützung in Microbench über eingebettete Proguard-Regeln. Diese Unterstützung ist experimentell und erfordert AGP 8.3 zur Reduzierung von Bibliotheksmodultests. Mit dem folgenden Befehl können Sie die R8-Komprimierung/-Optimierung im
build.gradle
Ihres Benchmark-Moduls aktivieren. Dies sollte je nach Arbeitslast zu einer deutlichen Leistungssteigerung führen. (I738a3, b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
Fehlerkorrekturen
- Es wurde behoben, dass die Warnung für Methoden-Tracing in einer anderen Zeile von der Microbench-Ausgabe angezeigt wird. (I0455c, b/328308833)
Version 1.3.0-alpha01
21. Februar 2024
androidx.benchmark:benchmark-*:1.3.0-alpha01
wurde veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.
API-Änderungen
- Die booleschen Parameter
MicrobenchmarkConfig
wurden umbenannt, um unnötiges Wort "sollte" zu vermeiden. (Ia8f00, b/303387299) BenchmarkRule.measureRepeatedOnMainThread
wurde hinzugefügt, damit Hauptthread-Benchmarks (z.B. solche, die auf die UI für Ansichten oder das Schreiben tippen) verhindern, dass ANR-Fehler ausgelöst werden, insbesondere bei großen Suiten in CI. (I5c86d)FrameTimingGfxInfoMetric
wurde hinzugefügt, eine experimentelle alternative Implementierung vonFrameTimingMetric
, bei der Messungen direkt von der Plattform stammen und nicht aus dem Perfetto-Trace extrahiert werden. (I457cb, b/322232828)- Fügen Sie die Möglichkeit hinzu, ein ART-Profil während einzelner
warmUp
-Iterationen zu erstellen. (I17923) - An der
TraceSectionMetric
API wurden mehrere Änderungen vorgenommen: <ph type="x-smartling-placeholder">- </ph>
Mode.Min
undMode.Max
hinzufügen- Labelargument hinzufügen, um den Abschnittsnamen als Messwertlabel zu überschreiben
- Modusname für die Ausgabe hinzugefügt, um die Bedeutung der Messwerte zu verdeutlichen
- Standardeinstellung in Summe geändert, da dieser Messwert meistens für wiederkehrende Ereignisse verwendet wird Beachten Sie diese Änderungen bei der CI-Nutzung, da dies zu Unterbrechungen führen kann. oder das Parsing unterbrechen. (Ic1e82, b/301892382, b/301955938)
Fehlerkorrekturen
- Verbesserte Fehlermeldung im Gradle-Plug-in für Basisprofil, wenn das angegebene verwaltete Gerät nicht vorhanden ist (Idea2b, b/313803289)
- Fehlerkorrektur für das Einbeziehen von Referenzprofilen der Bibliothek in AGP 8.3.0-alpha15 (I1d2af, b/313992099)
- Die Ausgabe-URL für die Referenz und das Startprofil am Ende der Generierungsaufgabe wurde korrigiert (I802e5, b/313976958).
- Zeitüberschreitungen für Datenquellen wurden angepasst, um
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)]
zu beheben (I8dc7d, b/323601788) - Fügen Sie zwei Instrumentierungsargumente für das Überschreiben des Shader-Drop-Verhaltens hinzu, um Abstürze beim Benchmarking von Apps ohne
ProfileInstaller
1.3 zu umgehen: <ph type="x-smartling-placeholder">- </ph>
androidx.benchmark.dropShaders.enable=true/false
: kann verwendet werden, um alle Shader Drops zu überspringen (einschließlich der inStartupMode.Cold
-Einführungen durchgeführten Drops), insbesondere beim Benchmarking von Apps, die Profileinstaller 1.3 noch nicht verwenden.androidx.benchmark.dropShaders.throwOnFailure=true/false
: kann verwendet werden, um Fehler beim Löschen von Shadern zu tolerieren, z. B. beim Benchmarking von Apps ohne Profiler 1.3 (I4f573).
- Die Methodenverfolgung im UI-Thread wird übersprungen, wenn sie voraussichtlich länger als ein paar Sekunden dauert, und Methodentraces beim Auslösen bereinigt. (I6e768)
- Wird ausgelöst, wenn Dateinamen länger als 200 Zeichen sind, um unklare Abstürze beim Schreiben oder Nachverarbeiten von Dateien zu vermeiden. (I4a5ab)
- Es wurde ein Problem behoben, bei dem nicht abgeschlossene Frames am Anfang und Ende des Trace paarweise kombiniert wurden, was fälschlicherweise als einzelner extrem langer Frame gemeldet wurde. (I39353, b/322232828)
- Verwenden Sie
--skip verification
ab API 30 und höher, wenn Sie ein Paket auf API 30-33 neu installieren, um ART-Profile von Nutzer-Builds zu löschen. So lassen sich Play Protect-Warnungen umgehen, die bei einigen Geräten zu Fehlern führen. (Ic9e36) - Mit
am force-stop
kannst du Apps beenden, wenn es sich nicht um System-Apps wie die System-UI oder den Launcher handelt. (I5e028) - MacroBenchmark wartet jetzt auf
1 second
, bis die Zielanwendung ein ART-Profil geleert hat (zuvor wurde auf500 ms
gewartet). (I85a50, b/316082056) - Verbessern Sie den
FrameTimingMetric
-Fehler, wenn keine Frames erzeugt werden, und geben Sie immer einen Link zum Nachverfolgen aus, wenn das Parsen von Messwerten fehlschlägt, um die Problemdiagnose zu erleichtern. (I956b9) - Absturz behoben, bei dem
FrameTimingMetric
die Frame-ID nicht parsen konnte, insbesondere auf bestimmten OEM-Geräten. (Ia24bc, b/303823815, b/306235276) - Die strengen Prüfungen in
FrameMetrics
wurden gelockert und es wurden weitere Details zu Fehlermeldungen hinzugefügt. (Iade)
Version 1.2
Version 1.2.4
17. April 2024
androidx.benchmark:benchmark-*:1.2.4
wurde veröffentlicht. Version 1.2.4 enthält diese Commits.
Fehlerkorrekturen
- Es wurde behoben, dass das Referenzprofil „srcset“ nicht in Benchmark-Varianten eingerichtet wurde. Behebt außerdem
automaticGenerationDuringBuild
in Bibliotheken, die eine zirkuläre Abhängigkeit verursachen. (I28ab7, b/333024280) - Mit
am force-stop
kannst du Apps beenden, wenn es sich nicht um System-Apps wie die System-UI oder den Launcher handelt. Dadurch wird das Absturz vonStartupMode.COLD
-Benchmarks von „Paket $package darf nicht vor dem Kaltstart ausgeführt werden“ behoben. weil das Beenden des Prozesses nicht vollständig erfolgreich war. (I5e028)
Version 1.2.3
24. Januar 2024
androidx.benchmark:benchmark-*:1.2.3
wurde veröffentlicht. Version 1.2.3 enthält diese Commits.
Fehlerkorrekturen
- Die Ausnahme wurde aus dem Gradle-Plug-in für das Baseline-Profil entfernt, wenn die AGP-Version 8.3.0 oder höher ist.
- Fehlerkorrektur für das Einbeziehen von Referenzprofilen der Bibliothek in AAR vor AGP 8.3.0-alpha15.
Version 1.2.2
1. Dezember 2023
androidx.benchmark:benchmark-*:1.2.2
wurde veröffentlicht. Version 1.2.2 enthält diese Commits.
Baseline-Profile
- In Ausführungsprotokollen wird der Ausgabedateipfad des Basisprofils als lokaler Datei-URI angezeigt (aosp/2843918, aosp/2853665, b/313976958).
Version 1.2.1
15. November 2023
androidx.benchmark:benchmark-*:1.2.1
wurde veröffentlicht. Version 1.2.1 enthält diese Commits.
Neue Funktionen
- Verbesserte Fehlermeldung, wenn der Nutzer Testvarianten deaktiviert (b/307478189)
- Es wurden Properties zur Unterstützung der AS-Testlaufintegration hinzugefügt (b/309805233), (b/309116324).
Version 1.2.0
18. Oktober 2023
androidx.benchmark:benchmark-*:1.2.0
wurde veröffentlicht. Version 1.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.1.0
Baseline-Profile
- Das neue Gradle-Plug-in für Baseline Profile automatisiert die Erfassung und Einbeziehung von Referenzprofilen in Ihren Test- und Build-Workflow.
BaselineProfileRule.collect
ist jetzt stabil, eine optimierte und vereinfachte Version der vorherigen experimentellenBaselineProfileRule.collectBaselineProfile
API <ph type="x-smartling-placeholder">- </ph>
- Geben Sie einfach
packageName
an und starten Sie Ihre App.
- Geben Sie einfach
- Für Bibliotheken, die Referenzprofile generieren, können Sie jetzt die generierten Regeln entweder im Code (Argument
BaselineProfileRule.collect
) oder sogar noch einfacher im Gradle-Plug-in filtern. - Fehlerbehebungen
<ph type="x-smartling-placeholder">
- </ph>
- Feste Basisprofilerfassung unter Android U+ (Id1392, b/277645214)
Makro-Benchmark
- Kompilierung
<ph type="x-smartling-placeholder">
- </ph>
- MacroBenchmark setzt jetzt den Kompilierungsstatus für jede Kompilierung vollständig zurück. Dazu muss das APK vor Android 14 neu installiert werden. Daher wird das Benchmarking für Android 14 und höher dringend empfohlen, wenn Sie den Status (z. B. Nutzeranmeldung) in dem gemessenen Wert beibehalten möchten (z. B. Nutzeranmeldung).
- Sie können dies auch umgehen, indem Sie die App-Kompilierung separat steuern und sie mit
CompilationMode.Ignore()
oder einem Instrumentierungsargument überspringen.
Instrumentierungsargumente
- Unterstützung für das
androidx.benchmark.dryRunMode.enable
-Instrumentierungsargument (bereits in MicroBenchmark verfügbar) für schnellere Validierungsausführungen (z.B. beim Erstellen der Benchmark oder beim Vorabsenden) - Unterstützung für
androidx.benchmark.profiling.mode=StackSampling
undMethodTracing
. androidx.benchmark.enabledRules
wurde hinzugefügt, um Tests von Basisprofilen im Vergleich zu MakroBenchmark-Regeln bei der Laufzeitfilterung zu ermöglichen- Das Argument
androidx.benchmark.perfettoSdkTracing.enable
wurde hinzugefügt, um das Tracing mit Tracing-Perfetto zu aktivieren, z.B. Neuzusammensetzungs-Tracing erstellen. Bei Verwendung mitStartupMode.COLD
wirkt sich das Timing erheblich aus, da die Tracing-Bibliothek beim Start der App geladen und aktiviert wird.
- Unterstützung für das
Voraussetzungen
- MacroBenchmark erfordert jetzt
ProfileInstaller
1.3.0 oder höher in der Ziel-App, um das Erfassen / Zurücksetzen des Profils und das Leeren des Shader-Cache zu ermöglichen.
- MacroBenchmark erfordert jetzt
Neue experimentelle Messwert-APIs
- Es wurde eine experimentelle Funktion
TraceSectionMetric
hinzugefügt, mit der ein einfaches Timing austrace("") {}
-Blöcken in Ihrer App extrahiert werden kann. Mit TraceMetric können Sie die volle Abfragefunktion von PerfettoTraceProcessor
nutzen. - Es wurde eine experimentelle Funktion
PowerMetric
hinzugefügt, um Informationen zum Stromverbrauch zu erfassen - Experimentelle Funktion
MemoryCountersMetric
zum Zählen von Seitenfehlern hinzugefügt - Die experimentelle
PerfettoTraceProcessor
API wurde hinzugefügt, die intern zum Extrahieren von Messwerten aus System-Traces (auch als Perfetto-Traces bezeichnet) verwendet wird.
- Es wurde eine experimentelle Funktion
Fehlerkorrekturen
- Abstürze beim Installieren oder Extrahieren von Profilen aus einer App, die aus mehreren APKs installiert wurde (z.B. aus einem App Bundle), behoben wurden.
- Fehler bei
FrameTimingMetric
behoben, bei dem Frames mit inkonsistenten Frame-IDs ignoriert wurden (im Allgemeinen Frames während der Ripples ab API 31) (I747d2, b/279088460) - Parsing-Fehler bei Traces behoben > 64MB (Ief831, b/269949822)
- Die Fehler, die angezeigt wurden, wenn das Betriebssystem-Image des Geräts (insbesondere Emulator) für das Tracing oder Kompilierung nicht richtig konfiguriert wurde, wurde behoben.
- Akkuladestandsprüfung bei Geräten ohne Akku überspringen (Mikro und Makro)
- Verbesserte Dateiausgabe mit deutlicheren Fehlern für ungültige Ausgabeverzeichnisse und sichereren Standardeinstellungen
- Die Stabilität von
StartupMode.COLD
wurde verbessert, indem der Shader-Cache regelmäßig gelöscht wird (auch überMacrobenchmarkScope.dropShaderCache
verfügbar). - Leanback-Fallback für
startActivityAndWait
wurde korrigiert.
Mikro-Benchmark
- Funktionen
<ph type="x-smartling-placeholder">
- </ph>
- Die Profilerstellung wurde nach anderen Messwerten in eine separate Phase verschoben, sodass in einem Testlauf sowohl das genaue Timing als auch die Profilerstellungsergebnisse angezeigt werden können.
- Experimentelle APIs
<ph type="x-smartling-placeholder">
- </ph>
- Es wurde die experimentelle
MicrobenchmarkConfig
API zum Definieren benutzerdefinierter Messwerte und zum Konfigurieren von Tracing und Profilerstellung hinzugefügt. Kann verwendet werden, um Methoden-Traces oder Tracepunkte zu erfassen (berücksichtigen Sie jedoch den Tracing-Overhead). - Es wurden experimentelle APIs zur Steuerung von
BenchmarkState
ohne JUnit hinzugefügt, die unabhängig vonBenchmarkRule
gesteuert werden können. - Ein experimenteller
PerfettoTrace
-Eintrag wurde hinzugefügt, um die Erfassung von Perfetto-Traces mit benutzerdefinierter Konfiguration zu ermöglichen, die von Benchmark-APIs getrennt sind.
- Es wurde die experimentelle
- Fehlerbehebungen
<ph type="x-smartling-placeholder">
- </ph>
- Problemumgehung ohne führende Leerzeichen in der Android Studio-Benchmark-Ausgabe.
- Ein Problem wurde behoben, bei dem Warnungen in der Android Studio-Benchmark-Ausgabe möglicherweise nicht ausgegeben wurden.
- Der Absturz von
SampledProfiling
unter Android 13 (API 33) und höher wurde behoben. - Deutlich verbesserte Leistung von
dryRunMode
durch Überspringen vonIsolationActivity
und Perfetto-Tracing (bis zu 10-mal schnellerer Probelaufmodus bei älteren Betriebssystemversionen).
Version 1.2.0-rc02
6. Oktober 2023
androidx.benchmark:benchmark-*:1.2.0-rc02
wurde veröffentlicht. Version 1.2.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Korrigieren Sie die Benchmark-Dateiausgabe so, dass das Kopieren von
BaselineProfile
-Plug-in-Dateien nicht mehr unterbrochen wird. Die Dateien wurden zwar generiert und vom Gerät kopiert, aber so umbenannt, dass sie vom Gradle-Plug-in nicht erkannt wurden. (I8dbcc, b/303034735, b/296453339) tracing-perfetto
Fehler beim Laden von Fehlermeldungen bei der Injektion aus dem Makro-Benchmark-Modul in die Zielanwendung wurde klarer formuliert.
Version 1.2.0-rc01
20. September 2023
androidx.benchmark:benchmark-*:1.2.0-rc01
wurde veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Eine Ausnahme (mit Anweisungen zur Fehlerbehebung) wird jetzt ausgelöst, wenn das Perfetto SDK-Tracing in einer Benchmark nicht initialisiert werden kann. (I6c878, b/286228781)
- OOM-Absturz beim Konvertieren des ART-Methoden-Trace behoben -> Perfetto-Format. (I106bd, b/296905344)
- (MacroBenchmark) Das Label für das Methoden-Tracing in der Studio-Testausgabe wurde klarer formuliert. Außerdem wurde das Problem, dass Dateinamen für das Methoden-Tracing auf dem Gerät/Host eindeutig sein müssen, sodass sie nicht überschrieben werden, wenn mehrere Benchmarks ausgeführt werden. (I08e65, b/285912360)
- Das Gerät muss aktiv sein, wenn ein Basisprofil erfasst wird. (I503fc)
Version 1.2.0-beta05
30. August 2023
androidx.benchmark:benchmark-*:1.2.0-beta05
wurde veröffentlicht. Version 1.2.0-beta05 enthält diese Commits.
Neue Funktionen
- Das Gradle-Plug-in für das Baseline-Profil unterstützt jetzt das Android-Gradle-Plug-in 8.3. (aosp/2715214)
Version 1.2.0-beta04
23. August 2023
androidx.benchmark:benchmark-*:1.2.0-beta04
wurde veröffentlicht. Version 1.2.0-beta04 enthält diese Commits.
Neue Funktionen
- Das Gradle-Plug-in für Baseline-Profile unterstützt jetzt das Android-Gradle-Plug-in 8.3. (aosp/2715214)
Fehlerkorrekturen
- Beheben Sie Fehler beim Schreiben / Verschieben und Abrufen von Dateien (insbesondere bei parametrisierten Tests), indem Sie Ausgabedateinamen weiter bereinigen und '=' vermeiden. und ':' in Ausgabedateinamen. (I759d8)
Version 1.2.0-beta03
9. August 2023
androidx.benchmark:benchmark-*:1.2.0-beta03
wurde veröffentlicht. Version 1.2.0-beta03 enthält diese Commits.
API-Änderungen
- Argument zum Filtern von
TraceSectionMetric
wurde nur dem Zielpaket hinzugefügt, standardmäßig aktiviert (Ia219b, b/292208786).
Fehlerkorrekturen
- Das Instrumentierungsargument
fullTracing.enable
wurde zur Konsistenz mit dem Artefaktnamen und anderen Referenzen inperfettoSdkTracing.enable
umbenannt.fullTracing.enable
funktioniert weiterhin als Fallback. (I7cc00) - Interne Tracepoints der Benchmark-Bibliothek (einschließlich MicroBenchmark-Schleifen-/Phasen-Tracing) werden jetzt im System-Trace-Viewer von Studio angezeigt und unter dem richtigen Prozess in Perfetto verschachtelt. (I6b2e7, b/293510459)
- Der MakroBenchmark-Fehler NOT-PROFILEABLE für API 31 und höher wurde entfernt und die profilierbare Prüfung auf gerooteten Root-Geräten (eng/userdebug) wird übersprungen. (I2abac, b/291722507)
- Bei Verwendung von Dex Layout-Optimierungen werden Regeln für Startprofile jetzt auch als Basisprofilregeln betrachtet. (aosp/2684246, b/293889189)
Version 1.2.0-beta02
26. Juli 2023
androidx.benchmark:benchmark-*:1.2.0-beta02
wurde veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.
API-Änderungen
- Es wurden experimentelle APIs für benutzerdefinierte Microbench-Messwerte und -Konfigurationen hinzugefügt (z.B. Profiler und Tracing). (I86101, b/291820856)
Fehlerkorrekturen
- Fehler in Makrobench melden, wenn das Betriebssystem für das Tracing falsch konfiguriert ist. Dies wurde kürzlich in den ARM64-Emulatoren der API 26/28 behoben. (I0a328, b/282191686)
- Der Fehler beim Zurücksetzen der Kompilierung wurde mit weiteren Details ergänzt, die eine Aktualisierung des Emulators vorschlagen, da dieses Problem von einigen Emulatoren kürzlich behoben wurde. (I8c815, b/282191686)
- Machen Sie
androidx.test.uiautomator:uiautomator:2.2.0
alsapi
-Abhängigkeit anstelle einerimplementation
-Abhängigkeit. (I1981e)
Version 1.2.0-beta01
18. Juli 2023
androidx.benchmark:benchmark-*:1.2.0-beta01
wurde veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Probleme wurden behoben, die in der Benchmarkausgabe in Studio manchmal unterdrückt wurden und dass führende Leerzeichen in der Benchmarkausgabe nicht in Studio angezeigt wurden (Ia61d0, b/227205461, b/286306579, b/285912360).
- Der Kommentar für
FrameTimingMetric
wurde korrigiert. Der untergeordnete Messwert heißtframeDurationCpuMs
. (Ib097f, b/288830934).
Version 1.2.0-alpha16
21. Juni 2023
androidx.benchmark:benchmark-*:1.2.0-alpha16
wurde veröffentlicht. Version 1.2.0-alpha16 enthält diese Commits.
API-Änderungen
- Die
BaselineProfileRule.collectBaselineProfile()
API wurde inBaselineProfileRule.collect()
umbenannt. (I4b665)
Fehlerkorrekturen
- MacroBenchmark-Unterstützung für
androidx.benchmark.profiling.mode = MethodTracing
. (I7ad37, b/285912360) - Die Erstellung von MicroBenchmark-Profilen wurde in eine separate Phase verschoben. Sie wird also nach der Messung nacheinander ausgeführt, anstatt sie zu ersetzen. Falls vorhanden, sind jetzt auch
MethodTracing
-Trace-Abschnitte im erfassten Perfetto-Trace enthalten. (I9f657, b/285014599) - Fügen Sie die Messung der Anzahl mit
Mode.Sum
zuTraceSectionMetric
hinzu. (IC121a, b/264398606)
Version 1.2.0-alpha15
7. Juni 2023
androidx.benchmark:benchmark-*:1.2.0-alpha15
wurde veröffentlicht. Version 1.2.0-alpha15 enthält diese Commits.
Neue Funktionen
- Experimentelle
MemoryUsageMetric
zum Verfolgen der Arbeitsspeichernutzung einer Zielanwendung hinzugefügt. (I56453, b/133147125, b/281749311) - Unterstützung für vollständig benutzerdefinierte Perfetto-Konfigurationen mit
PerfettoTrace.record
hinzufügen (If9d75, b/280460183) - Es wurde eine Property hinzugefügt, mit der die Erstellung des Basisprofils übersprungen werden kann. Nutzung:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration
. (I37fda, b/283447020)
API-Änderungen
- Die
collectBaselineProfile
API generiert immer stabile Basisprofile. DiecollectStableBaselineProfile
API wurde entfernt. Verwenden Sie stattdessencollectBaselineProfile
. (I17262, b/281078707) - Das Argument
filterPredicate
vonBaselineProfileRule
wurde in einen Nicht-Null-Wert mit einem entsprechenden Standardwert geändert, damit das Standardfilterverhalten in Dokumenten klarer erkennbar ist. (I3816e)
Fehlerkorrekturen
- Deaktivieren Sie
IsolationActivity
und Perfetto-Tracing indryRunMode
, um die Leistung erheblich zu verbessern, da diese den Großteil der Laufzeit ausmachen. (Ie4f7d) - Unterstützung für das Sampling von Aufrufstacks in Makro-Benchmarks mit den Instrumentierungstestargumenten
androidx.benchmark.profiling.mode=StackSampling
undandroidx.benchmark.profiling.sampleFrequency
. (I1d13b, b/282188489) - Absturzfehler beim Verwerfen von Shadern unter Android U (API 34) sowie in Emulatoren wurden behoben. (I031ca, b/274314544)
Version 1.2.0-alpha14
3. Mai 2023
androidx.benchmark:benchmark-*:1.2.0-alpha14
wurde veröffentlicht. Version 1.2.0-alpha14 enthält diese Commits.
Fehlerkorrekturen
- Fehler bei
FrameTimingMetric
beheben, ohne Frames mit inkonsistenten Frame-IDs zu ignorieren. Dies würde dazu führen, dass einige Animationen in neueren Plattformversionen (API 31 und höher) viele Frames ignorieren, währendRenderThread
animiert wurde (z.B. während einer Welle). (I747d2, b/279088460) - Das Parsen des Trace-Prozessors für Traces, die größer als 64 MB sind, wurde behoben. (Ief831, b/269949822)
- Das Erstellen des Basisprofils unter Android U schlug aufgrund der unterschiedlichen Ausgabe des Befehls
pm dump-profiles
fehl. (Id1392, b/277645214) - Fehler im GPU-Sperrskript für die Uhr zum korrekten Vergleich von Strings (I53e54, b/213935715)
Version 1.2.0-alpha13
5. April 2023
androidx.benchmark:benchmark-*:1.2.0-alpha13
wurde veröffentlicht. Version 1.2.0-alpha13 enthält diese Commits.
API-Änderungen
- Beim Generieren von Referenzprofilen wurde ein Profiltypparameter hinzugefügt, um die künftige Funktion für Startprofile zu unterstützen (Ie20d7, b/275093123).
- Es wurde eine neue experimentelle
TraceMetric
API zum Definieren von vollständig benutzerdefinierten Messwerten basierend auf dem Inhalt eines Perfetto-Trace hinzugefügt. (I4ce31, b/219851406) - Fügen Sie einen experimentellen Messwert hinzu, um die Anzahl der Seitenfehler während einer Benchmark zu bestimmen. (I48db0)
Version 1.2.0-alpha12
22. März 2023
androidx.benchmark:benchmark-*:1.2.0-alpha12
wurde veröffentlicht. Version 1.2.0-alpha12 enthält diese Commits.
Neue Funktionen
- Das neue Gradle-Plug-in für das Basisprofil wird in der Alphaversion veröffentlicht, um das Erstellen eines Basisprofils zu vereinfachen und den Entwickler-Workflow zu vereinfachen.
API-Änderungen
- Die Unterstützung für Perfetto-Tracing in API 21 und 22, die sowohl MicroBenchmarks als auch die experimentellen
PerfettoTrace
APIs umfasst, wurde entfernt. Vor dieser Version warenUiAutomation
-Verbindungen auf einigen Geräten unzuverlässig. (I78e8c) - Öffentliche experimentelle API für
PerfettoTraceProcessor
hinzugefügt, um das Parsen von Trace-Inhalten zu ermöglichen. Dies ist ein Schritt hin zu vollständig benutzerdefinierten Messwerten, die auf Perfetto-Trace-Daten basieren. (I2659e, b/219851406)
Version 1.2.0-alpha11
8. März 2023
androidx.benchmark:benchmark-*:1.2.0-alpha11
wurde veröffentlicht. Version 1.2.0-alpha11 enthält diese Commits.
Fehlerkorrekturen
- Die Abstürze in
MacrobenchmarkRule
undBaselineProfileRule
bei der Neuinstallation oder Extraktion von Profilen aus einem App Bundle mit mehreren APKs wurden behoben. (I0d8c8, b/270587281)
Version 1.2.0-alpha10
22. Februar 2023
androidx.benchmark:benchmark-*:1.2.0-alpha10
wurde veröffentlicht. Version 1.2.0-alpha10 enthält diese Commits.
Neue Funktionen
- Unter Android 14 und höher installiert MacroBenchmark dank einer neuen Plattformfunktion keine Zielanwendungen mehr neu, um den Kompilierungsstatus zurückzusetzen. Bisher war es notwendig, ein gerootetes Gerät zu haben oder den gesamten Anwendungsstatus (z.B. die Nutzeranmeldung) zu entfernen, bevor eine Benchmark ausgeführt werden konnte. (I9b08c, b/249143766)
Fehlerkorrekturen
DryRunMode
wurde so behoben, dass bei einem leeren Profil nicht mehr abstürzt, weil die Kompilierung übersprungen wird. Stattdessen wird eine einzelne Iteration ausgeführt und das Profil extrahiert, um sicherzustellen, dass etwas erfasst wird. (I2f05d, b/266403227)- Der
PowerMetric
-Absturz bei der Überprüfung auf das Vorhandensein von PowerStats auf alten API-Ebenen wurde behoben. (5faaf9, b/268253898)
Version 1.2.0-alpha09
11. Januar 2023
androidx.benchmark:benchmark-*:1.2.0-alpha09
wurde veröffentlicht. Version 1.2.0-alpha09 enthält diese Commits.
Fehlerkorrekturen
- Die Übergabe von
None
an das Instrumentierungsargumentandroidx.benchmark.enabledRules
wurde aktiviert, um alle Benchmarks / das Generieren von Referenzprofilen zu deaktivieren. (I3d7fd, b/258671856) PerfettoTrace
-Aufnahme in App-Modulen (d.h. nicht selbst instrumentierenden Test-APKs) korrigieren (I12cfc)- Feste Reihenfolge der ADB-Pull-Argumente des Basisprofils in der Studio-Ausgabe (I958d1, b/261781624)
- ARM Emulator API 33 wird jetzt korrekt als solche erkannt, wenn versucht wird, eine Makro-Benchmark auszuführen, und gibt die Warnung korrekt aus. (69133b,b/262209591)
- Überprüfung des Akkustands bei Geräten ohne Akku in MacroBenchmark überspringen (fe4114, b/232448937)
Version 1.2.0-alpha08
7. Dezember 2022
androidx.benchmark:benchmark-*:1.2.0-alpha08
wurde veröffentlicht. Version 1.2.0-alpha08 enthält diese Commits.
API-Änderungen
- Es wurden experimentelle neue APIs
PerfettoTrace.record {}
undPerfettoTraceRule
hinzugefügt, um Perfetto-Traces (auch als System-Traces bezeichnet) im Rahmen eines Tests zu erfassen und so das Testverhalten und die Leistung zu prüfen. (I3ba16) BaselineProfileRule
akzeptiert jetzt ein Filterprädikat anstelle einer Liste von Paketpräfixen. Dadurch erhält der Test die volle Kontrolle über die Filterung. (I93240)- Fügen Sie eine experimentelle API
BaselineProfileRule.collectStableBaselineProfile
hinzu, die wartet, bis ein Basisprofil für n Iterationen stabil ist. (I923f3) - Sie können jetzt ein Präfix für den Ausgabedateinamen angeben, wenn Sie Basisprofile mit
BaselineProfileRule
generieren. (I7b59f, b/260318655)
Fehlerkorrekturen
- Verbessern Sie die Sicherheit beim Schreiben von Dateiausgaben. Damit sollte verhindert werden, dass Ausgabedateien im Hintergrund nicht geschrieben / angehängt werden, insbesondere in API 21/22. (If8c44, b/227510293)
- Korrigieren Sie die Trace-Ausgabe von
simpleperf
, damit die Datei korrekt erstellt und platziert werden kann. Dadurch sollten auch allgemein Probleme behoben werden, bei denen eine Datei erfolglos von Gradle abgerufen wurde. (I12a1c, b/259424099) - Fehlermeldung zum Verbessern der Profileinstaller-Fehlermeldung, die ausgegeben wird, wenn profileinstaller zu alt ist. Damit werden Sie jetzt angewiesen, die Profileinstaller-Version (1.2.1) zum Messen von Basisprofilen unter API 31 bis 33 zu aktualisieren, anstatt anzugeben, dass sie nicht unterstützt wird. (Ia517f, b/253519888)
- Mehrere Fehler bei Shell-Befehlsfehlern bei Fehlermeldung Erforderliche API <=23 drucken, u. a. fehlgeschlagene Binäreinrichtung der Perfetto-Erfassung und Fehler bei der Trace-Erfassung (Ib6b87, b/258863685)
- Erstellte Profilregeln automatisch sortieren, um die Anzahl der Änderungen zu minimieren, die sich im Laufe der Zeit ändern (beim Einchecken von Profilregeln in die Versionsverwaltung). (IE2509)
- Der Absturz bei nicht gerooteten Builds unter Android 13 (API 33) mit der Meldung
Expected no stderr from echo 3 > /proc/sys/vm/drop_caches
(I6c245, b/259508183) wurde behoben.
Bekannte Probleme
– MacrobenchmarkScope.dropShaderCache()
kann aufgrund einer noch nicht veröffentlichten Broadcast-Registry im profileinstaller-Manifest abstürzen. (I5c728, b/258619948) Um das Problem in profileinstaller:1.3.0-alpha02
zu umgehen, fügen Sie der Datei „AndroidManifest.xml“ Ihrer App (nicht der Ihrer Benchmark) Folgendes hinzu:
<!-- workaround bug in profileinstaller 1.3.0-alpha02, remove when updating to alpha03+ -->
<receiver
android:name="androidx.profileinstaller.ProfileInstallReceiver"
android:permission="android.permission.DUMP"
android:exported="true">
<intent-filter>
<action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
</intent-filter>
</receiver>
Version 1.2.0-alpha07
9. November 2022
androidx.benchmark:benchmark-*:1.2.0-alpha07
wurde veröffentlicht. Version 1.2.0-alpha07 enthält diese Commits.
API-Änderungen
- Fügt die
PowerMetric
API für die Messung von Energie und Leistung in Makro-Benchmarks hinzu. (Ife601, b/220183779) - Fehler bei
MacrobenchmarkScope.dropShaderCache()
behoben, durch den der Shader-Cache tatsächlich gelöscht wird. Dadurch werden etwa 20 ms an Rauschen aus denStartupMode.COLD
-Benchmarks entfernt, da Shader jetzt konsistent bei jeder Iteration gelöscht werden. Bisher wurden bei derPartial
-Kompilierung mit Aufwärmiterationen falsch schnelle Zahlen gemeldet, da Shader-Caching während des Aufwärmvorgangs wahrscheinlicher war. Für diese Korrektur ist entweder ein gerootetes Gerät oder die Verwendung vonprofileinstaller:1.3.0-alpha02
in der Ziel-App erforderlich. Informationen zu API-Änderungen derProfileInstaller
-Bibliothek findest du auf der Seite ProfileInstaller 1.30-alpha02. (Ia5171, b/231455742) TraceSectionMode("label", Mode.Sum)
wurde hinzugefügt, mit dem die Gesamtzeit gemessen werden kann, die für mehrere Trace-Abschnitte mit demselben Label aufgewendet wurde. Beispielsweise gibt „TraceSectionMetric("inflate", Mode.Sum)
“ den Messwert „inflateMs
“ für die Gesamtzeit in einer Makro-Benchmark aus, die für die Inflation aufgewendet wurde. Die Anforderung von API 29 wurde ebenfalls entfernt, daTraceSectionMetric
mitandroidx.tracing.Trace
zusammenarbeitet, um zu niedrigeren API-Levels bei Verwendung vonforceEnableAppTracing
in der Ziel-App zu gelangen. (Id7b68, b/231455742)
Fehlerkorrekturen
- Verbesserte Sicherheit aller internen Shell-Befehle durch Überprüfung aller Ausgaben/Fehler. (I5984d, b/255402908, b/253094958)
- Geben Sie das Gerät im Befehl
adb pull
für das Basisprofil an, damit der Pull-Befehl einfach kopiert werden kann, wenn mehrere Geräte verbunden sind (bis zu einem Emulator) (I6ac6c, b/223359380). - Fügen Sie einen Fehler hinzu, wenn die Makro-Benchmark-Test-APK nicht zur Selbstinstrumentierung eingerichtet ist. Dieser Fehler verhindert Makro-Benchmarking innerhalb des Prozesses der Ziel-App. In diesem Fall wäre es nicht in der Lage, die App zu kompilieren, zu beenden oder einen Kaltstart zu starten. Außerdem wäre es nicht in der Lage, die eigenen Berechtigungen zu steuern (I4279b).
- Es wurde ein Problem in
measureRepeated()
behoben, bei demStartupMode.COLD
den Zielprozess nachsetupBlock
nicht beendet hat. WennsetupBlock
jetzt mit der App interagiert, wird der App-Prozess weiter ausgeführt und eine Kaltstartmessung ist ungültig. (I8ebb7)
Version 1.2.0-alpha06
24. Oktober 2022
androidx.benchmark:benchmark-*:1.2.0-alpha06
wurde veröffentlicht. Version 1.2.0-alpha06 enthält diese Commits.
API-Änderungen
BaselineProfileRule
erfordert unter Android 13 (API 33) kein Root mehr und ist nicht mehr experimentell. (Ie0a7d, b/250083467, b/253094958)- Mit dieser Änderung wird auch behoben, wie Profile einer App auf nicht gerooteten Geräten auf das Laufwerk geleert werden. Es muss jedoch die „profileinstaller“-Abhängigkeit der Ziel-App aktualisiert werden.
- Wenn Sie
BaselineProfileRule
oderCompilationMode.Partial(warmupIterations)
auf einem nicht gerooteten Gerät verwenden möchten, müssen Sie auch Ihre Ziel-App aktualisieren, umandroidx.profileinstaller.profileinstaller:1.3.0-alpha01
zu verwenden. Dadurch wird das Profil korrekt auf das Laufwerk geleert, sodass es kompiliert/extrahiert werden kann.
Fehlerkorrekturen
- Der
SampledProfiling
-Absturz bei API 33+ wurde behoben. (I40743, b/236109374)
Version 1.2.0-alpha05
5. Oktober 2022
androidx.benchmark:benchmark-*:1.2.0-alpha05
wurde veröffentlicht. Version 1.2.0-alpha05 enthält diese Commits.
Fehlerkorrekturen
- Frame-Aufschlüsselung im System Trace Viewer in Studio für vom Benchmark erfasste Traces korrigieren (I3f3ae, b/239677443)
- Korrigieren Sie
FrameTimingMetric
, damit fürFrameOverrun
API 31 statt 29 erforderlich ist (I716dd, b/220702554). - Legen Sie die Iteration in
BaselineProfileRule
fest und geben Sie klar aus, wenn das Zielpaket nicht installiert ist (wurde bereits für MacroBenchmarkRule durchgeführt). (Ic09a3, b/227991471)
Version 1.2.0-alpha04
21. September 2022
androidx.benchmark:benchmark-*:1.2.0-alpha04
wurde veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.
Neue Funktionen
Zusätzliche Unterstützung für das
dryRunMode.enable
-Instrumentierungsargument zur MakroBenchmark (bereits in Mikro verfügbar), um die lokale Entwicklung zu beschleunigen und die App-Automatisierung zu validieren (z.B. in „Vorabsenden“). Dadurch werden die Iterationen 1 überschrieben, die Kompilierung übersprungen, alle Konfigurationsfehler werden unterdrückt und die Ausgabe der .json-Datei für Messungen deaktiviert. (Ib51b4, b/175149857)In der Gradle-Befehlszeile:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=true
In build.gradle:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true' } }
Fehlerkorrekturen
- Der Fehler „
StartupTimingMetric
“ wurde so behoben, dass gemessene Aktivitäten nicht mehr überMacrobenchmarkScope.startActivityAndWait()
gestartet werden müssen. Das bedeutet, dass mit dem Messwert Starts erfasst werden können, z.B. Benachrichtigungen,Context.startActivity()
, aktivitätsbasierte Navigation in der App oder Shell-Befehlen. (Ia2de6, b/245414235) - Es wurde ein Fehler behoben, bei dem
startActivityAndWait
durch eine Reduzierung der strengen Frame-Erkennung eine Zeitüberschreitung beim Warten auf den Abschluss des Starts für Emulatoren verursachte. (Ibe2c6, b/244594339, b/228946895)
Version 1.2.0-alpha03
7. September 2022
androidx.benchmark:benchmark-*:1.2.0-alpha03
wurde veröffentlicht. Version 1.2.0-alpha03 enthält diese Commits.
Neue Funktionen
- Es wurden experimentelle APIs für die unabhängige Verwendung von
BenchmarkState
, getrennt vonBenchmarkRule
/JUnit4
, hinzugefügt. (Id478f, b/228489614)
Fehlerkorrekturen
- Leanback-Fallback für
startActivityAndWait
wurde hinzugefügt. (01ed77, b/242899915)
Version 1.2.0-alpha02
24. August 2022
androidx.benchmark:benchmark-*:1.2.0-alpha02
wurde veröffentlicht. Version 1.2.0-alpha02 enthält diese Commits.
API-Änderungen
- Die Standardeinstellung ist
am force stop
fürMacrobenchmarkScope.killProcess()
, auch wenn das Gerät gerootet ist, außer während der Erstellung des Baseline-Profils. Dies kann mit einem optionalen booleschen Argument überschrieben werden. (02cce9, b/241214097)
Fehlerkorrekturen
- Unterstützung der grundlegenden Profilerstellung für System-Apps. (I900b8, b/241214097)
- Die Prüfung auf ODPM-Power-Messwerte auf nicht gerooteten Geräten wird unterstützt. (a38c78, b/229623230)
Version 1.2.0-alpha01
27. Juli 2022
androidx.benchmark:benchmark-*:1.2.0-alpha01
wurde veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.
Neue Funktionen
- Neue Tracing-Perfetto-Komponente, die Tools zum Aktivieren von Tracing über das Perfetto SDK in einer App ermöglicht, in der die Tracing-Funktion sichtbar ist (I2cc7f)
Es wurde ein
androidx.benchmark.enabledRules
-Instrumentierungsargument hinzugefügt, um das Filtern von Makro-Benchmark-Ausführungen nur nach Benchmarks oder nur nach der Generierung von Referenzprofilen zu ermöglichen. Übergeben Sie „MacroBenchmark“ oder „BaselineProfile“ nur eine Art von Test durchzuführen, z.B. wenn nurBaselineProfiles
in einem Emulator generiert wird. Eine durch Kommas getrennte Liste wird ebenfalls unterstützt. (I756b7, b/230371561)Beispiel: in der Datei "build.gradle" Ihres Makros:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
Oder über die Gradle-Befehlszeile:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
API-Änderungen
- Neue
PowerMetric
für das Messen von Energie und Energie in Benchmarks hinzugefügt. (I9f39b, b/220183779) - Der neue Kompilierungsmodus
CompilationMode.Ignore
wurde hinzugefügt, um das Zurücksetzen und Kompilieren des Profils zu überspringen. (Ibbcf8, b/230453509) BaselineProfileRule#collectBaselineProfile
wurde ein neuer Parameter hinzugefügt, um die Ausgabedatei nach Paketnamen zu filtern (If7338, b/220146561)- Ermöglicht dem Entwickler, das Gerät zu entladen, um den Energieverbrauch zu messen. (I6a6cb)
- Die Funktion zum Leeren des Shader-Caches in
MacrobenchmarkScope
wurde hinzugefügt. (I32122) - Entwickler können die Anzeige des Messwerttyps konfigurieren und die gewünschten Subsystemkategorien angeben. (I810c9)
- Bisher wurde bei Ausführung auf einem nicht unterstützten Gerät ein
UnsupportedOperationException
in die Benchmark aufgenommen. Jetzt wird UOE nur angezeigt, wenn der Messwert auf dem nicht unterstützten Gerät verwendet wird (d. h.PowerMetric.configure
). (I5cf20, b/227229375) TotalPowerMetric
undTotalEnergyMetric
für die Messung von Gesamtleistung und -energie in jeder Systemkategorie in Makro-Benchmarks wurden hinzugefügt. (I3b26b, b/224557371)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem kompilierte Methoden zwischen den einzelnen Makro-Benchmarks in nicht gerooteten Builds nicht korrekt zurückgesetzt wurden. Dafür muss die APK-Datei leider bei jeder Iteration neu installiert werden, wodurch die Anwendungsdaten für jede Makro-Benchmark gelöscht werden. (I31c74, b/230665435)
- Absturz der Trace-Aufzeichnung in API 21/22 beheben (If7fd6, b/227509388, b/227510293, b/227512788)
- Überprüfung des Abschlusses des Starts der Aktivität wurde überarbeitet, um das Problem „Messwerte können nicht gelesen werden“ zu beheben eine Ausnahme in Start-Makro-Benchmarks. (Ia517c)
Version 1.1.1
Version 1.1.1
9. November 2022
androidx.benchmark:benchmark-*:1.1.1
wurde veröffentlicht. Version 1.1.1 enthält diese Commits.
Fehlerkorrekturen
- Das Problem
android.system.ErrnoException: open failed: EACCES
wurde auf einigen Geräten mit Android11 (API 30) oder höher behoben. Das hier ist eine Top-Empfehlung von1.2.0-alpha01
. (aosp/2072249)
Version 1.1.0
Version 1.1.0
15. Juni 2022
androidx.benchmark:benchmark-*:1.1.0
wurde veröffentlicht. Version 1.1.0 enthält diese Commits.
- Diese Version ist mit
androidx.benchmark:benchmark-*:1.1.0-rc03
identisch.
Wichtige Änderungen seit Version 1.0.0
Die Unterstützung von Jetpack-Makro-Benchmarks, mit denen Sie App-Interaktionen wie Starten und Scrollen messen können, bietet die Möglichkeit, Traces zu erfassen und Trace-Abschnitte messen.
Unterstützung von Baseline-Profilen
CompilationMode.Partial
, um die Effektivität von Baseline-Profilen zu messen.@BaselineProfileRule
zum automatischen Generieren von Referenzprofilen für einen bestimmten kritischen Nutzerpfad.
Unterstützung für Zuordnungsmesswerte und Profilerstellung während der MicroBenchmark-Ausführungen.
Version 1.1.0-rc03
1. Juni 2022
androidx.benchmark:benchmark-*:1.1.0-rc03
wurde veröffentlicht. Version 1.1.0-rc03 enthält diese Commits.
Fehlerkorrekturen
Vermeiden Sie es, das Zielpaket bei jeder Benchmark-Iteration neu zu installieren. ( aosp/2093027, b/231976084)
Entferne die
300ms
-Verzögerung vonpressHome()
. (aosp/2086030, b/231322975)Verbessern Sie die Geschwindigkeit der MacroBenchmark-Iteration, indem Sie die im Hintergrund verwendeten Shell-Befehle optimieren. (aosp/2086023, b/231323582)
Unterstützung für verwaltete Gradle-Geräte beim Generieren von Baseline-Profilen mit MacroBenchmarks. (aosp/2062228, b/228926421)
Version 1.1.0-rc02
11. Mai 2022
androidx.benchmark:benchmark-*:1.1.0-rc02
wurde veröffentlicht. Version 1.1.0-rc02 enthält diese Commits.
- Hinweis: Diese Version enthält eine Verhaltensänderung, da Apps jetzt zwischen den einzelnen Benchmarks vollständig neu installiert werden, um genaue Messungen zu gewährleisten.
Fehlerkorrekturen/Verhaltensänderungen
Es wurde ein Problem behoben, bei dem die App-Kompilierung zwischen Makro-Benchmarks und bei nicht gerooteten Builds nicht korrekt zurückgesetzt wurde. Dadurch wird häufig behoben, dass das Ausführen mehrerer Tests dazu führt, dass
CompilationMode
wenig oder gar keine Auswirkungen auf die Messungen hat. Um dieses Problem zu umgehen, wird nun jede Testmethode von der Ziel-App vollständig neu installiert. Dadurch werden die Anwendungsdaten zwischen den einzelnen Makro-Benchmarks gelöscht. (I31c74, b/230665435)Da dies verhindert, dass Apps den Status vor Tests einrichten, kann jetzt die Kompilierung / Neuinstallation übersprungen werden, um dieses Problem zu umgehen. Sie können das Ziel beispielsweise mit dem Shell-Befehl
cmd package compile -f -m speed <package>
vollständig kompilieren und dann den Kompilierungsschritt der Makro-Benchmark überspringen.Beispiel: in der Datei "build.gradle" Ihres Makros:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }
Oder über die Gradle-Befehlszeile:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
Durch Hinzufügen eines
androidx.benchmark.enabledRules
-Instrumentierungsarguments ist es möglich, ein Modul zwischen Makro-Benchmarks und Tests zum Generieren von Referenzprofilen zu teilen. Übergeben Sie „MacroBenchmark“ oder „BaselineProfile“ nur eine Art von Test durchzuführen, z.B. wennBaselineProfiles
in einem Emulator generiert wird. (I756b7, b/230371561)Beispiel: in der Datei "build.gradle" Ihres Makros:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
Oder über die Gradle-Befehlszeile:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
Version 1.1.0-rc01
20. April 2022
androidx.benchmark:benchmark-*:1.1.0-rc01
wurde veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Links für die Ausgabe des Referenzprofils in Android Studio verwenden jetzt einen eindeutigen Dateinamen. So werden in der Ausgabe immer die neuesten Ergebnisse bei Verwendung eines
BaselineProfileRule
ausgegeben. ( aosp/2057008, b/228203086 )
Version 1.1.0-beta06
6. April 2022
androidx.benchmark:benchmark-*:1.1.0-beta06
wurde veröffentlicht. Version 1.1.0-beta06 enthält diese Commits.
Fehlerkorrekturen
- Absturz der Trace-Aufzeichnung in API 21/22 beheben (If7fd6, b/227509388)
- Überprüfung des Abschlusses des Starts der Aktivität wurde überarbeitet, um das Problem „Messwerte können nicht gelesen werden“ zu beheben eine Ausnahme in Start-Makro-Benchmarks. (Ia517c)
- Startmesswerte für Makro-Benchmarks bei Verwendung von
CompilationMode.None()
wurden korrigiert. Vor dieser Änderung schien „CompilationMode.Partial()
“ langsamer alsCompilation.None()
zu sein. (611ac9)
Version 1.1.0-beta05
23. März 2022
androidx.benchmark:benchmark-*:1.1.0-beta05
wurde veröffentlicht. Version 1.1.0-beta05 enthält diese Commits.
Fehlerkorrekturen
- Beenden Sie das Paket, nachdem Sie die Profilinstallation übersprungen haben, wenn Sie
CompilationMode.None
verwenden. (aosp/1991373). - Ein Problem wurde behoben, bei dem MacroBenchmarks bei Verwendung von
StartupMode.COLD
keine Startmesswerte erfassen konnten. (aosp/2012227 b/218668335)
Version 1.1.0-beta04
23. Februar 2022
androidx.benchmark:benchmark-*:1.1.0-beta04
wurde veröffentlicht. Version 1.1.0-beta04 enthält diese Commits.
Fehlerkorrekturen
Fehlende Messwerte unter Android 10 korrigieren und
NoSuchElementException
verursacht, weil Prozessnamen nicht erfasst wurden in den Traces korrekt. (Ib4c17, b/218668335)PowerManager
für die Erkennung der thermischen Drosselung unter Q (API) verwenden 29) und höher. Dadurch wird die Häufigkeit von „false“ erheblich reduziert. Positive Werte bei der Erkennung der thermischen Drosselung (Benchmark-Wiederholung nach 90 Tagen) zweiten Abkühlphase) und beschleunigen die Benchmarks baut. Er bietet auch Drosselungserkennung, selbst wenn die Uhren (wenn die Sperre zu hoch für das physische Umgebung). (I9c027, b/217497678, b/131755853)Filtern der simpleperf-Stichprobenprofilerstellung nur nach
measureRepeated
-Thread, um die Prüfung zu vereinfachen (Ic3e12, b/217501939)Unterstützung von Messwerten aus benannten UI-Unterprozessen in Multi-Prozess-Anwendungen (Ice6c0, b/215988434)
Filtern Sie Regeln für Basisprofile nach Android 9 (SDK 28). aosp/1980331 b/216508418
Überspringen Sie die Profilinstallation bei Verwendung von
Compilation.None()
. Außerdem kannst du Warnungen senden, wenn in der App eine ältere Version vonandroidx.profileinstaller
und das Android-Gradle-Plug-in verwendet wird. aosp/1977029
Version 1.1.0-beta03
9. Februar 2022
androidx.benchmark:benchmark-*:1.1.0-beta03
wurde veröffentlicht. Version 1.1.0-beta03 enthält diese Commits.
API-Änderungen
AudioUnderrunMetric
wurde der MakroBenchmark-Bibliothek unter dem Flag „experimental“ hinzugefügt, um die Erkennung von Audio-Unterläufen zu ermöglichen (Ib5972).BaselineProfileRule
akzeptiert keinensetup
-Block mehr, da dies genauso funktioniert wieprofileBlock
. (Ic7dfe, b/215536447)Beispiel:
@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, setupBlock = { startActivityAndWait() }, profileBlock = { // ... } ) }
@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, profileBlock = { startActivityAndWait() // ... } ) }
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Microbench-Profiler-Traces in nachfolgenden Ausführungen nicht aktualisiert wurden, wenn sie in der Studio-Ausgabe verknüpft wurden (I5ae4d, b/214917025).
- Kompilierungs-Shell-Befehle auf API 23 (Ice380) verhindern
- Umbenannt
FrameCpuTime
->FrameDurationCpu
,FrameUiTime
->FrameDurationUi
, um zu verdeutlichen, dass dies die Dauer, nicht die Zeitstempel und der Abgleich von Präfixen sind. (I0eba3, b/216337830)
Version 1.1.0-beta02
26. Januar 2022
androidx.benchmark:benchmark-*:1.1.0-beta02
wurde veröffentlicht. Version 1.1.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- MicroBenchmark-Stack-Stichproben / Profil für Methoden-Tracing Ergebnisse werden jetzt in der Studio-Ausgabe, ähnlich wie bei anderen Profilerstellungsausgaben, verknüpft und unterdrücken nicht die Zuordnungsmesswerts. (Idcb65, b/214440748, b/214253245)
- BaselineProfileRule gibt jetzt den Befehl
adb pull
in der Logcat- und Studio-Ausgabe aus, um die generierte BaselineProfile-Textdatei abzurufen. (f08811)
Version 1.1.0-beta01
12. Januar 2022
androidx.benchmark:benchmark-*:1.1.0-beta01
wurde veröffentlicht. Version 1.1.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Es wurde behoben, dass die Profiler-Argumentaktivierung ignoriert wird. (I37373, b/210619998)
- Veraltete
CompliationModes
(I98186, b/213467659) entfernt - Argument des Basisprofils von
CompilationMode.Partial
wurde geändert zu Aufzählung zur Verdeutlichung. (Id67ea)
Version 1.1.0-alpha13
15. Dezember 2021
androidx.benchmark:benchmark-*:1.1.0-alpha13
wurde veröffentlicht. Version 1.1.0-alpha13 enthält diese Commits.
API-Änderungen
- Fügen Sie der Microbench-Ausgabe unter Android Q (API 29 und höher) System Tracing mit geringem Aufwand hinzu. Beachten Sie, dass damit derzeit kein benutzerdefiniertes Tracing (über die
android.os.Trace
oderandroidx.tracing
Jetpack API) erfasst wird, um Auswirkungen auf die Ergebnisse zu vermeiden. Diese Nachverfolgung sollte bei der Diagnose instabil sein, insbesondere von Quellen außerhalb der Benchmark. (I298be, b/205636583, b/145598917) CompilationModes
wurde in drei Klassen eingeteilt: „Full“, „None“ und „Partial“. Früher wurden sie uneinheitlich nach Kompilierungsargumenten (die wir jetzt als Implementierungsdetails behandeln) und Funktionen benannt. Dadurch werden die Vor- und Nachteile sowie mögliche Kombinationen und das Verhalten der verschiedenen Plattformversionen deutlicher. (I3d7bf, b/207132597)- Einrichtung und Messung sind jetzt immer paarweise angeordnet. Sie können jetzt den Paketnamen und die Iteration abfragen. In bestimmten Aufwärmszenarien kann die Iteration
null
sein. (Id3b68, b/208357448, b/208369635)
Fehlerkorrekturen
- Fehler behoben, bei dem
CompilationMode.Speed
fälschlicherweise alsNone
behandelt wurde (I01137)
Version 1.1.0-alpha12
17. November 2021
androidx.benchmark:benchmark-*:1.1.0-alpha12
wurde veröffentlicht. Version 1.1.0-alpha12 enthält diese Commits.
Neue Funktionen
- Experimentelles TraceSectionMetric für benutzerdefiniertes Trace-basiertes Zeitmessungen zu verwenden. (I99db1, b/204572664)
Fehlerkorrekturen
- Beenden Sie bei jedem Durchlauf den Ruhemodus des Geräts, damit die Benutzeroberfläche getestet werden kann: erfordert, dass der Sperrbildschirm deaktiviert ist. (Ibfa28, b/180963442)
- Behebung mehrerer Abstürze im StackSampling-Profilerstellungsmodus bei Emulatoren und nicht gerootete Geräte (Icdbda, b/202719335)
- Entfernung von 0,5 Sekunden Ruhezustand am Ende jeder Iteration – wenn Sollten aufgrund dieser Änderung Messwerte fehlen, melden Sie den Fehler. (Iff6aa)
- Reduzieren Sie die Wahrscheinlichkeit, dass Daten verloren gehen, und verringern Sie den Arbeitsspeicher-Overhead durch Tracing (Id2544, b/199324831, b/204448861).
- Reduzieren Sie die Trace-Größe um ca. 40 %, indem Sie zum kompakten geplanten Speicherformat wechseln. (Id5fb6, b/199324831)
- Aktualisierte Implementierungen von Startmesswerten, die immer am Ende enden Ende des Renderingthreads. Das wird auf allen Plattformen einheitlicher sein. und den In-App-Messungen besser zuordnen. (IC6b55)
Version 1.1.0-alpha11
3. November 2021
androidx.benchmark:benchmark-*:1.1.0-alpha11
wurde veröffentlicht. Version 1.1.0-alpha11 enthält diese Commits.
API-Änderungen
- Der Macro-Benchmark hat jetzt einen
minSdkVersion
von23
. (If2655) - Es wird eine neue experimentelle
BaselineProfileRule
hinzugefügt, mit der Referenzprofile für die kritische Nutzerreise der App erstellt werden können. Detaillierte Dokumentation folgen. (Ibbefa, b/203692160) - Die hinzugefügte Oberflächenvariante „measureRepeated“ wird entfernt für Java-Caller, da dies zu Unklarheiten bei der Durchführung/Lösung des . Java-Aufrufer müssen wieder Unit.Instance von "measureRepeated" verwendet. Wenn Ihnen dies Unannehmlichkeiten bereitet, melden Sie uns bitte den Fehler. Wir können wir das in einer zukünftigen Version noch einmal durchgehen. (Ifb23e, b/204331495)
Version 1.1.0-alpha10
27. Oktober 2021
androidx.benchmark:benchmark-*:1.1.0-alpha10
wurde veröffentlicht. Version 1.1.0-alpha10 enthält diese Commits.
API-Änderungen
- Backport von StartupTimingMetric, um auf API 23 zurückzuportieren. Dieses Bei der neuen Implementierung wird auch reportFullyDrawn() besser verarbeitet, bis die entsprechenden Inhalte gerendert wurden. (If3ac9, b/183129298)
- JvmOverloads wurde mehreren MacroBenchmarkScope-Methoden für Java-Aufrufer hinzugefügt. (I644fe, b/184546459)
- Geben Sie eine alternative Funktion „MacroBenchmarkRule.measureRepeated“ an, die eine
Consumer<MacrobenchmarkScope>
für die idiomatische Verwendung in der Sprache Java verwendet. (If74ab, b/184546459)
Fehlerkorrekturen
- Das Problem wurde behoben, wenn Traces nicht früh genug gestartet wurden und Messwerte fehlen. Dadurch wird wahrscheinlich die Meldung „Messwerte können nicht gelesen werden“ während der Benchmark“ Ausnahmen, die von der Bibliothek selbst verursacht wurden. (I6dfcb, b/193827052, b/200302931)
- FrameNegativeSlack wurde in FrameOverrun umbenannt, um seine Bedeutung zu verdeutlichen, d. h. wie weit der Frame sein Zeitbudget überschritten hat. (I6c2aa, b/203008701)
Version 1.1.0-alpha09
13. Oktober 2021
androidx.benchmark:benchmark-*:1.1.0-alpha09
wurde veröffentlicht. Version 1.1.0-alpha09 enthält diese Commits.
Fehlerkorrekturen
- Unterstützung beim Löschen eines Kernel-Seiten-Cache ohne Root auf API 31/S+, wodurch die Genauigkeit von StartupMode.COLD-Starts erhöht wird. (Iecfdb, b/200160030)
Version 1.1.0-alpha08
29. September 2021
androidx.benchmark:benchmark-*:1.1.0-alpha08
wurde veröffentlicht. Version 1.1.0-alpha08 enthält diese Commits.
API-Änderungen
- Scroll-Makro-Benchmarks aktivieren, um zu API 23 zurückzukehren (If39c2, b/183129298)
- Hinzufügen eines neuen Messwerts als Stichproben zur UI- und JSON-Ausgabe mit Schwerpunkt auf Perzentile mehrerer Stichproben pro Iteration. (I56247, b/199940612)
- Während der Benchmark zu Gleitkommamesswerten wechseln Bibliotheken (auf der Studio-Benutzeroberfläche abgeschnitten). (I69249, b/197008210)
Version 1.1.0-alpha07
1. September 2021
androidx.benchmark:benchmark-*:1.1.0-alpha07
wurde veröffentlicht. Version 1.1.0-alpha07 enthält diese Commits.
API-Änderungen
- Mindest-API-Level wurde auf 21 erhöht, um die niedrigste API-Ebene widerzuspiegeln, die in Zukunft unterstützt werden soll. Die aktuell unterstützte Mindest-API-Ebene wird weiterhin über requiredApi() übertragen und ist derzeit 29 (I440d6, b/183129298).
Fehlerkorrekturen
ProfileInstaller
wurde korrigiert, damit Apps, die Referenzprofile verwenden, MacroBenchmarks mitCompilationMode.BaselineProfile
leichter ausführen können. (I42657, b/196074999) HINWEIS: erfordert auch eine Aktualisierung aufandroidx.profileinstaller:profileinstaller:1.1.0-alpha04
oder höher.- Die Benchmarks für
StartupMode.COLD
undCompilationMode.None
sind jetzt stabiler. (I770cd, b/196074999)
Version 1.1.0-alpha06
18. August 2021
androidx.benchmark:benchmark-*:1.1.0-alpha06
wurde veröffentlicht. Version 1.1.0-alpha06 enthält diese Commits.
API-Änderungen
- Das
androidx.benchmark.iterations
-Instrumentierungsargument wurde hinzugefügt, um das manuelle Überschreiben der Iterationsanzahl bei lokalen Tests/Profilen zu ermöglichen. (6188be, b/194137879)
Fehlerkorrekturen
- Ab API 29 wurde zu Simpleperf als Standard-Profiler für die Stichprobenerhebung gewechselt. (Ic4b34, b/158303822)
Bekannte Probleme
CompilationMode.BaselineProfile
ist noch in der Entwicklung. Verwenden Sie sie nicht, um herauszufinden, wie gut ein Profil im Moment ist.
Version 1.1.0-alpha05
4. August 2021
androidx.benchmark:benchmark-*:1.1.0-alpha05
wurde veröffentlicht. Version 1.1.0-alpha05 enthält diese Commits.
1.1.0-alpha04
wurde vor der Veröffentlichung aufgrund eines unregelmäßigen Absturzes abgebrochen. b/193827052
API-Änderungen
- startActivityAndwait wurde geändert, um den Start über
am start
aufzurufen, wodurch Messdurchlauf um ca. 5 Sekunden verstreichen lassen, was zulasten einer fehlenden Unterstützung Intent-Parcelables. (I5a6f5, b/192009149
Fehlerkorrekturen
- Die Aggressivität der Erkennung von Temperaturdrosselung reduzieren und die Referenz neu zu berechnen, wenn häufig Drosselungen erkannt werden. (I7327b)
- FrameTimingMetric wurde korrigiert, sodass es unter Android S Beta (Ib60cc, b/193260119) funktioniert.
- Verwende ein
EmptyActivity
, um die Ziel-App aus einem Status mit erzwungener Beendigung zu versetzen und soCompilationMode.BaselineProfile
besser zu unterstützen. (Id7cac, b/192084204) - Die Erweiterung der Trace-Datei wurde in
.perfetto-trace
geändert, damit sie dem Plattformstandard entspricht. (I4c236, b/174663039) - StartupTimingMetric gibt jetzt "completeDrawnMs" aus. Messwert um die Zeit zu messen, die noch dauert, bis Ihre Anwendung das Rendering abgeschlossen hat. Bis Wenn Sie diesen Messwert für Ihre App definieren, rufen Sie Activity.reportFullyDrawn auf, wenn Ihre ersten Inhalte fertig sind, z. B. wenn Ihre ersten Listenelemente aus der Datenbank oder dem Netzwerk geladen. (Die Methode „reportFullyDrawn“ ist verfügbar. ohne Build-Versionsüberprüfung für ComponentActivity). Der Test muss lange genug laufen, um den Messwert zu erfassen (startActivityAndWarten wartet nicht auf reportFullyDrawn). (If1141, b/179176560)
- Kosten für das Anhängen von Ui-Metadaten an Traces um mehr als 50 ms reduzieren (Ic8390, b/193923003)
- Deutlich erhöhte Abfragehäufigkeit beim Beenden Durch die Nachverfolgung lassen sich z.B. Start-up-Benchmark-Laufzeit um 30+% (Idfbc1, b/193723768)
Version 1.1.0-alpha03
16. Juni 2021
androidx.benchmark:benchmark-*:1.1.0-alpha03
wurde veröffentlicht. Version 1.1.0-alpha03 enthält diese Commits.
Neue Funktionen
- Ein neuer
CompilationMode.BaselineProfile
wurde zur Unterstützung von Profilen hinzugefügt, die mithilfe der Jetpack ProfileInstaller-Bibliothek installiert wurden. (aosp/1720930)
Fehlerkorrekturen
Der Gradle-Beispielcode zum Unterdrücken von Benchmark-Fehlern wurde aktualisiert. Er verwendet nun eine nicht verworfene API mit einer Syntax, die auch .gradle.kts-Nutzer unterstützt.
Z. B.
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
Version 1.1.0-alpha02
18. Mai 2021
Die Benchmark-Version 1.1.0-alpha02 stellt eine wichtige Komponente beim Benchmarking dar: MacroBenchmark. Neben dem Benchmarking, mit dem Sie CPU-Schleifen messen können, können Sie mit MacroBenchmark auch die gesamte App-Interaktion wie Starten und Scrollen messen und Traces erfassen. Weitere Informationen finden Sie in der Dokumentation zur Bibliothek.
androidx.benchmark:benchmark-*:1.1.0-alpha02
wurde veröffentlicht. Version 1.1.0-alpha02 enthält diese Commits.
Neue Funktionen
MacroBenchmark-Artefakte hinzugefügt (androidx.benchmark:benchmark-macro-junit4
und androidx.benchmark:benchmark-macro
)
- Erfassen Sie Start-, Scroll- und Animationsmesswerte aus Ihrer App, lokal oder in CI.
- Traces in Android Studio erfassen und prüfen
Fehlerkorrekturen
- Shell-Berechtigungsprobleme mit Ausgabeverzeichnis unter Android 12 umgehen. Hinweis: Damit auf betroffenen Geräten weiterhin Ausgabedateien erfasst werden können, ist möglicherweise eine Aktualisierung des Android-Gradle-Plug-ins auf Canary-Version 7.0.0 und von Android Studio auf Arctic Fox (2020.3.1) erforderlich. (Icb039)
- Konfigurations-Caching in BenchmarkPlugin (6be1c1, b/159804788) wird unterstützt.
- Vereinfachte Dateiausgabe – standardmäßig aktiviert, in einem Verzeichnis, das
requestLegacyExternalStorage=true
nicht erfordert (8b5a4d, b/172376362) - Problem mit Logcat-Warnung zum Drucken von Bibliotheken behoben, die nicht gefunden werden JIT-Thread auf Plattformversionen, in denen er nicht vorhanden ist. (I9cc63, b/161847393)
- Fehler bei der maximalen Frequenz des Lesegeräts behoben. (I55c7a)
Version 1.1.0-alpha01
10. Juni 2020
androidx.benchmark:benchmark-common:1.1.0-alpha01
, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01
und androidx.benchmark:benchmark-junit4:1.1.0-alpha01
wurden veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.
Neue Funktionen von Version 1.1
- Zuordnungsmesswert: Benchmarks durchlaufen jetzt nach Aufwärmphase und Zeitplan eine zusätzliche Phase, in der die Anzahl der Zuweisungen erfasst wird. Zuweisungen können bei älteren Versionen der Plattform zu Leistungsproblemen führen (140 ns in O wird zu 8ns in M – gemessen auf Nexus5X mit gesperrten Uhren). Dieser Messwert wird in der Android Studio-Konsolenausgabe und in der
- Unterstützung der Profilerstellung: Sie können jetzt Profildaten für eine Benchmarkausführung erfassen, um zu prüfen, warum Ihr Code möglicherweise langsam ausgeführt wird. Benchmark unterstützt die Erfassung entweder der Methodenaufzeichnung oder der Stichprobenerhebung aus ART. Diese Dateien können mit dem Profiler in Android Studio überprüft werden. Klicken Sie dazu auf File > Öffnen.
- Das Benchmark-Gradle-Plug-in bietet jetzt Standardeinstellungen, um die Einrichtung zu vereinfachen:
<ph type="x-smartling-placeholder">
- </ph>
testBuildType
ist standardmäßig freigegeben, um die Verwendung von Abhängigkeiten mit integrierter Codeabdeckung zu vermeiden. Der Release-BuildType wird auch als Standard-BuildType konfiguriert. Dadurch kann Android Studio beim ersten Öffnen eines Projekts automatisch die richtige Build-Variante auswählen. (b/138808399)signingConfig.debug
wird als Standardkonfiguration für die Signatur verwendet (b/153583269).
** Fehlerkorrekturen **
- Der Overhead für den Übergang zur Aufwärmphase konnte deutlich reduziert werden, da die erste Messung für jede Benchmark künstlich höher war als für andere. Dieses Problem trat in sehr kleinen Benchmarks (maximal 1 Mikrosekunde) aus. (b/142058671)
- Es wurde
InstrumentationResultParser
-Fehler behoben, der für jede Benchmark beim Ausführen über die Befehlszeile ausgegeben wurde. (I64988, b/154248456)
Bekannte Probleme
- Befehlszeile und Gradle-Aufrufe von Benchmark geben die Ergebnisse nicht direkt aus. Sie können dies umgehen, indem Sie entweder Studio verwenden oder die JSON-Ausgabedatei für Ergebnisse parsen.
- Für Benchmarkberichte kann der Bericht nicht von Geräten abgerufen werden, auf denen eine App mit einer App-ID mit der Endung „android“ oder „download“ installiert ist. Die Groß-/Kleinschreibung wird dabei nicht berücksichtigt. Nutzer, bei denen dieses Problem auftritt, sollten das Android-Gradle-Plug-in auf Version 4.2-alpha01 oder höher aktualisieren.
Version 1.0.0
Benchmarkversion 1.0.0
20. November 2019
androidx.benchmark:benchmark-common:1.0.0
, androidx.benchmark:benchmark-gradle-plugin:1.0.0
und androidx.benchmark:benchmark-junit4:1.0.0
wurden ohne Änderungen an 1.0.0 bis rc01 veröffentlicht. Version 1.0.0 enthält diese Commits.
Hauptfunktionen von Version 1.0.0
Mit der Benchmark-Bibliothek können Sie Leistungs-Benchmarks für App-Code schreiben und schnell Ergebnisse erhalten.
Sie verhindert Build- und Laufzeitkonfigurationsprobleme und stabilisiert die Geräteleistung, um genaue und konsistente Messungen zu gewährleisten. Führen Sie die Benchmarks direkt in Android Studio oder in Continuous Integration aus, um die Codeleistung im Zeitverlauf zu beobachten und Regressionen zu vermeiden.
Zu den wichtigsten Funktionen gehören:
- Uhrstabilisierung
- Automatische Thread-Priorisierung
- Unterstützung für UI-Leistungstests, wie im RecyclerView-Beispiel
- JIT-fähiges Aufwärmen und Looping
- JSON-Benchmark-Ausgabe für die Nachbearbeitung
Version 1.0.0-rc01
23. Oktober 2019
androidx.benchmark:benchmark-common:1.0.0-rc01
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01
und androidx.benchmark:benchmark-junit4:1.0.0-rc01
wurden veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.
Neue Funktionen
- Systrace-Tracing wurde den Benchmarks hinzugefügt.
Fehlerkorrekturen
- Es wurde ein Problem mit der Messwertinstabilität behoben, durch das die JIT aufgrund einer herabgestuften Priorisierung nicht vor dem Aufwärmen beendet wurde (b/140773023).
- Einheitliches JSON-Ausgabeverzeichnis für Android-Gradle-Plug-in 3.5 und 3.6
Version 1.0.0-beta01
9. Oktober 2019
androidx.benchmark:benchmark-common:1.0.0-beta01
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01
und androidx.benchmark:benchmark-junit4:1.0.0-beta01
wurden veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.
Neue Funktionen
- Führen Sie vor jedem Aufwärmvorgang eine automatische Speicherbereinigung aus, um die Speicherauslastung von einer Benchmark bis zur nächsten zu reduzieren (b/140895105).
Fehlerkorrekturen
- Die Abhängigkeit
androidx.annotation:android-experimental-lint
wurde hinzugefügt, damit der Java-Code Lint-Fehler korrekt erzeugt, wenn die experimentelle API nicht verwendet wird, ähnlich wie die experimentelle Kotlin-Anmerkung für Kotlin-Aufrufer. - Die Verwendung des
additionalTestOutputDir
-Instrumentierungsarguments für die Ausgabe im Android-Gradle-Plug-in 3.6 wird jetzt korrekt erkannt, um zu erkennen, wann AGP die Datenkopien verarbeitet. - Korrigieren Sie die nicht erkannte Taktfrequenz in JSON, damit
-1
korrekt gedruckt wird (b/141945670).
Version 1.0.0-alpha06
18. September 2019
androidx.benchmark:benchmark-common:1.0.0-alpha06
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06
und androidx.benchmark:benchmark-junit4:1.0.0-alpha06
wurden veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.
Neue Funktionen
- Es wurde eine Prüfung auf falsche Verwendung des alten Pakets für den Test-Runner hinzugefügt, die jetzt eine hilfreichere Fehlermeldung bietet.
API-Änderungen
- Die experimentelle Anmerkung
ExperimentalAnnotationReport
ist jetzt korrekt öffentlich. Für die Nutzung der experimentellen BenchmarkState#report API ist jetzt diese Annotation erforderlich
Version 1.0.0-alpha05
5. September 2019
androidx.benchmark:benchmark-common:1.0.0-alpha05
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05
und androidx.benchmark:benchmark-junit4:1.0.0-alpha05
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
BenchmarkState.reportData
API ist jetzt als experimentell gekennzeichnet
Fehlerkorrekturen
- Fehlerkorrektur für das Skript zur Zeitsperre, das auf Geräten, auf denen das Shell-Dienstprogramm
cut
oderexpr
fehlt, nicht funktionierte. - Es wurde ein Problem mit der Aufgabe
./gradlew lockClocks
behoben, die auf Geräten hängen blieb, die mit einer älteren Version des SU-Dienstprogramms gerootet waren, die das Flag-c
nicht unterstützt.
Version 1.0.0-alpha04
7. August 2019
androidx.benchmark:benchmark-common:1.0.0-alpha04
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04
und androidx.benchmark:benchmark-junit4:1.0.0-alpha04
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Es wurde auch eine neue Dokumentation zur Verwendung der Benchmark-Bibliothek ohne Gradle hinzugefügt, sowohl für die Verwendung mit verschiedenen Build-Systemen (z. B. Bazel oder Buck) als auch für die Ausführung in CI. Weitere Informationen finden Sie unter Benchmarks ohne Gradle erstellen und Benchmarks in Continuous Integration ausführen.
Neue Funktionen
- Gradle-Plug-in
<ph type="x-smartling-placeholder">
- </ph>
- Deaktiviert jetzt automatisch die Testabdeckung und legt standardmäßig
AndroidBenchmarkRunner
fest (b/138374050) - Unterstützung für neue AGP-basierte Datenkopien beim Ausführen von Benchmarks und bei der Verwendung von AGP 3.6+
- Deaktiviert jetzt automatisch die Testabdeckung und legt standardmäßig
- Ergänzungen im JSON-Format
<ph type="x-smartling-placeholder">
- </ph>
- Gesamte Benchmark-Testlaufzeit der Ausgabe (b/133147694)
@Parameterized
Benchmarks, die einen Namensstring (z. B.@Parameters(name = "size={0},depth={1}")
) verwenden, geben jetzt Parameternamen und -werte pro Benchmark in der JSON-Ausgabe aus (b/132578772).
- Probelaufmodus (b/138785848)
<ph type="x-smartling-placeholder">
- </ph>
- „Probelauf“ hinzugefügt Modus, um jede Benchmark-Schleife nur einmal auszuführen, um nach Fehlern/Abstürzen zu suchen, ohne Messungen zu erfassen. Dies kann beispielsweise nützlich sein, können Sie beispielsweise schnell Benchmarks im Vorab einreichen, um zu prüfen, ob sie fehlerhaft sind.
API-Änderungen
- Die Modulstruktur wurde durch Aufteilung der Bibliothek geändert (b/138451391).
<ph type="x-smartling-placeholder">
- </ph>
benchmark:benchmark-junit4
enthält Klassen mit JUnit-Abhängigkeit:AndroidBenchmarkRunner
undBenchmarkRule
. Beide wurden in dasandroidx.benchmark.junit4
-Paket verschoben.benchmark:benchmark-common
enthält den Rest der Logik, einschließlich der BenchmarkState API- Durch diese Aufteilung kann die Bibliothek in Zukunft Benchmarking ohne JUnit4 APIs unterstützen
- Konfigurationswarnungen werden jetzt als Fehler behandelt und führen zum Absturz des Tests (b/137653596).
<ph type="x-smartling-placeholder">
- </ph>
- Dies geschieht, um genaue Messungen zu fördern, insbesondere in CI.
- Diese Fehler lassen sich mit einem Instrumentierungsargument auf Warnungen reduzieren. Beispiel:
-e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"
Fehlerkorrekturen
- Fehler beim Schreiben in externen Speicher auf Q-Geräten bieten aussagekräftigere Meldungen mit Vorschlägen zur Behebung des Problems.
- Die Bildschirme werden während Benchmark-Ausführungen automatisch aktiviert und funktionieren nicht mehr, wenn der Bildschirm ausgeschaltet ist
Externe Beiträge
- Vielen Dank an Sergey Zakharov für den Beitrag zur Verbesserung der JSON-Ausgabe und die Behebung von Problemen mit dem Display.
Version 1.0.0-alpha03
2. Juli 2019
androidx.benchmark:benchmark:1.0.0-alpha03
und androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Die Schlafdauer aufgrund von Temperaturdrosselung pro Benchmark im vollständigen JSON-Bericht angeben
Fehlerkorrekturen
- Das Gradle-Plug-in sollte nicht mehr erforderlich sein, nachdem Android-Plug-ins und die Android-Blockierung
- Unterstützung für Benchmarkberichte auf Android 10-Geräten mit eingeschränktem Speicher
Version 1.0.0-alpha02
6. Juni 2019
androidx.benchmark:1.0.0-alpha02
und
androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02
wurden veröffentlicht. Die
Die in dieser Version enthaltenen Commits finden Sie hier.
Beachten Sie, dass das JSON-Schema als API behandelt wird. Wir planen, die gleichen Stabilitätsbeschränkungen wie bei anderen APIs: einmal in der Version stabil (mit sehr seltenen Ausnahmen) Beta und behoben, wobei Nebenversionen nur ergänzt und Änderungen/Entfernungen in Haupt-Releases.
API-Änderungen
Überarbeitetes JSON-Schema. Weitere Änderungen am JSON-Schema werden wahrscheinlich auf Ergänzungen beschränkt:
- Die Struktur des Ergebnisobjekts wurde neu organisiert, um zusätzliche Messwertgruppen zu unterstützen. in der Zukunft (b/132713021)
- Kontextinformationen zum Testlauf wurden hinzugefügt, z. B. Geräte- und Build-Informationen und ob Uhren gesperrt sind, an das Objekt der obersten Ebene (b/132711920)
- Zeitmesswertnamen enthalten jetzt „ns“. (b/132714527)
- Zusätzliche Statistiken pro gemeldetem Messwert (Maximum, Medianwert, Minimum) und Vereinfachte "Nanos" entfernt zusammenfassende Statistik (b/132713851)
XML-Ausgabe entfernt (b/132714414)
Erkennung der thermischen Drosselung aus der
BenchmarkState.reportData
API entfernt (b/132887006)
Fehlerkorrekturen
- Problem behoben:
./gradlew lockClocks
kleben auf einigen neueren Betriebssystemgeräten nicht (b/133424037) - Drosselungserkennung für Emulator deaktiviert (b/132880807)
Version 1.0.0-alpha01
7. Mai 2019
androidx.benchmark:benchmark:1.0.0-alpha01
wurde veröffentlicht. Enthaltene Commits
in dieser Version verfügbar sind,
hier.