Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alphaversion |
---|---|---|---|---|
30. Oktober 2024 | 1.3.3 | - | - | 1.4.0-alpha04 |
Abhängigkeiten deklarieren
Wenn Sie Benchmark als Abhängigkeit hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Makrobenchmark
Wenn Sie Macrobenchmark in Ihrem Projekt verwenden möchten, fügen Sie der Datei build.gradle
für das Macrobenchmark-Modul die folgenden Abhängigkeiten hinzu:
Cool
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.3.0" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.3.0") }
Mikrobenchmark
Wenn Sie Microbenchmark in Ihrem Projekt verwenden möchten, fügen Sie der Datei build.gradle
für Ihr Microbenchmark-Modul die folgenden Abhängigkeiten hinzu:
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
Ihr Feedback hilft uns, Jetpack zu verbessern. Bitte teilen Sie uns mit, wenn Sie neue Probleme feststellen oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können einem vorhandenen Problem Ihre Stimme geben, indem Sie auf die Schaltfläche mit dem Stern klicken.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 1.4
Version 1.4.0-alpha04
30. Oktober 2024
androidx.benchmark:benchmark-*:1.4.0-alpha04
wird veröffentlicht. Version 1.4.0-alpha04 enthält diese Commits.
Neue Funktionen
- (Experimentell) Generierung von Baseline-Profilen und Benchmarking für Apps aktivieren, die für einen sekundären Nutzer installiert wurden, z. B. für Apps auf headless Android Auto-Geräten. Diese Unterstützung wurde in einigen Szenarien getestet. Falls sie bei dir nicht funktioniert, melde bitte einen Fehler. (I9fcbe, b/356684617, b/373641155)
Fehlerkorrekturen
isProfileable
wird jetzt immer in Benchmark-Builds überschrieben undisDebuggable
wird jetzt immer sowohl in Benchmark- als auch innonMinified
-Builds (Erfassung des Baseline-Profils) überschrieben. (I487fa, b/369213505)- Behebung eines Fehlers bei der Kompilierungserkennung auf einigen physischen Geräten vor API 28. Betrifft JSON
context.compilationMode
und das Verhalten vonandroidx.benchmark.requireAot=true
(wird nicht mehr fälschlicherweise ausgelöst) (Ic3e08, b/374362482) - Bei
CpuEventCounter
-Messwerten wird eine Ausnahme ausgelöst, wenn ungültige Messungen festgestellt werden (z.B. instructions/cpucycles==0) (I8c503)
Version 1.4.0-alpha03
16. Oktober 2024
androidx.benchmark:benchmark-*:1.4.0-alpha03
wird veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.
API-Änderungen
- MacroBenchmark: Fügt
ArtMetric
hinzu. Damit kann die Profilabdeckung oder die allgemeine Android-Laufzeitleistung geprüft werden. Erfasst die Anzahl und Gesamtdauer der JIT, Klasseninit (falls verfügbar) und Klassenüberprüfung. Außerdem wirdCaptureInfo
so geändert, dass die optionale ART-Mainline-Version in die Standardversion aufgenommen wird. (I930f7) - Fügen Sie
coefficientOfVariation
zur Benchmark-JSON-Ausgabe hinzu, um die Stabilität bei einer bestimmten Benchmarkausführung zu zeigen. (Ib14ea)
Fehlerkorrekturen
CollectBaselineProfileTask
behoben, wenn im AVD-Gerät Leerzeichen enthalten waren. (Ia0225, b/371642809)- Spekulative Fehlerbehebung für
StartupMode.COLD
-Ausnahmen:Package <packagename> must not be running prior to cold start!
. Jetzt wartetMacrobenchmarkScope.killProcess()
(einschließlich der Funktion, die vor jeder Iteration ausgeführt wird, um das Verhalten vonStartupMode.COLD
zu implementieren) darauf, dass alle Prozesse der App beendet wurden. (I60aa6, b/351582215) - Behoben: Bei einigen gerooteten Emulatoren wurde der Fehler UNLOCKED_ angezeigt. (Ic5117)
- Diese Bibliothek verwendet jetzt JFestlegen von NULL-Werten, die typisiert sind. Kotlin-Entwickler sollten die folgenden Compilerargumente verwenden, um die korrekte Verwendung zu erzwingen:
-Xjspecify-annotations=strict
,-Xtype-enhancement-improvements-strict-mode
(I7104f, b/326456246)
Version 1.4.0-alpha02
2. Oktober 2024
androidx.benchmark:benchmark-*:1.4.0-alpha02
wird veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.
API-Änderungen
- Die Gradle-Aufgaben
lockClocks
undunlockClocks
wurden in Benchmark-Projekte verschoben, anstatt auf oberster Ebene verfügbar zu sein. Diese Änderung war erforderlich, da es leider keine Möglichkeit gibt, diese als Aktionen der obersten Ebene zu registrieren, ohne die Projektisolierung zu brechen. (I02b8f, b/363325823)
Fehlerkorrekturen
BaselineProfileRule
erfasst jetzt Profile für Multi-Prozess-Anwendungen, indem es jeden laufenden Prozess am Ende des Blocks signalisiert, um Profile auszustellen. Wenn bei einer profilbasierten Kompilierung nie ein Prozess für die Übertragung gefunden wird, schlägt die Kompilierung fehl, da keine Profildaten darin enthalten sind. Außerdem wurde ein Instrumentierungsargument hinzugefügt, um die Wartezeit für Dumps zu steuern:androidx.benchmark.saveProfileWaitMillis
(I0f519, b/366231469)- Von Benchmark
1.3.2
: Das Firebase Test Lab (FTL) konnte keine Baseline-Profil- oder MacroBenchmark-Ergebnisdateien aus dem Baseline-Profil-Gradle-Plug-in abrufen. (I2f678, b/285187547)
Wenn Sie FTL verwenden möchten, wenden Sie das Plug-in auf das Basisprofilmodul im Plug-in-Block an:
plugins {
...
id("com.google.firebase.testlab")
}
Konfigurieren Sie dann Firebase Test Lab mit:
firebaseTestLab {
// Credentials for FTL service
serviceAccountCredentials.set(file("credentials.json"))
// Creates one or more managed devices to run the tests on.
managedDevices {
"ftlDeviceShiba34" {
device = "shiba"
apiLevel = 34
}
}
// Ensures the baseline profile is pulled from the device.
// Note that this will be automated as well later with aosp/3272935.
testOptions {
results {
directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
}
}
}
Außerdem muss das erstellte FTL-Gerät der Baseline-Profilerweiterung hinzugefügt werden:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
Version 1.4.0-alpha01
18. September 2024
androidx.benchmark:benchmark-*:1.4.0-alpha01
wird veröffentlicht. Version 1.4.0-alpha01 enthält diese Commits.
Neue Funktion: Statistiken zu App-Start-ups
- Die erste Version der Statistiken zu App-Starts kann in MacroBenchmark aktiviert werden. (09fae38)
So aktivieren Sie die Funktion in einem Start-Benchmark:
@Test
fun startup {
macrobenchmarkRule.measureRepeated(
…
packageName = "com.example.my.application.id"
metrics = listOf(StartupTimingMetric()),
iterations = 5,
startupMode = StartupMode.COLD,
compilationMode = CompilationMode.None(),
experimentalConfig = ExperimentalConfig(startupInsightsConfig = StartupInsightsConfig(isEnabled = true))
) {
scope.startActivityAndWait(...)
}
}
Wenn Sie dann Ihre Start-Benchmark ausführen, wird der Trace analysiert, um nach häufigen Problemen zu suchen, und die Messwerte nach den Messwerten in der Studio-Testausgabe auf dem Tab "Benchmark" ausgeben. Beispiel:
StartupBenchmark_startup[startup=COLD,compilationMode=None]
├── Metrics
│ ├── timeToFullDisplayMs min 1,147.2, median 1,208.8, max 1,307.4
│ └── timeToInitialDisplayMs min 1,147.2, median 1,208.8, max 1,307.4
├── App Startup Insights
│ ├── App in debuggable mode (expected: false)
│ │ └── seen in iterations: 0(true) 1(true) 2(true) 3(true) 4(true) 5(true) 6(true) 7(true) 8(true) 9(true)
│ ├── Potential CPU contention with another process (expected: < 100000000ns)
│ │ └── seen in iterations: 4(105022546ns)
│ └── Main Thread - Binder transactions blocked (expected: false)
│ └── seen in iterations: 7(true)
└── Traces
└── Iteration 0 1 2 3 4 5 6 7 8 9
Diese Funktion befindet sich noch in der Entwicklungsphase. Verbesserungen an der Dokumentation und der Erweiterbarkeit sind geplant. Wir freuen uns aber über Feedback.
Neue Funktionen
- Die Gradle-Property
androidx.baselineprofile.suppressWarnings
wurde hinzugefügt, um alle Warnungen zu Referenzprofilen zu unterdrücken. (314153a) - Microbench-Messwerte werden jetzt in Perfetto-Traces als Zähler angezeigt. (3214854)
- Fügen Sie experimentelle Scripts zum Deaktivieren von JIT hinzu (erfordert Root-Zugriff / Neustart der Laufzeit) und zum Zurücksetzen des Geräteleistungs-/Teststatus. Diese werden derzeit nicht als Gradle-Aufgaben veröffentlicht. (7c3732b)
- Es wurde ein Benchmark-Argument hinzugefügt, um Tests beim Ausführen im Emulator zu überspringen. Wenn die
automaticGenerationDuring
-Build-Funktion aktiviert ist, wird durch Benchmarks auch die Generierung eines Baseline-Profils ausgelöst. Dies funktioniert nicht, wenn Emulatoren verwendet werden. Mit dem neuen ArgumentskipBenchmarksOnEmulator
können wir den Test stattdessen überspringen. (0c2ddcd) - Logik zum Aktivieren von Leistungsereignissen für API 23 und höher ändern (2550048)
API-Änderungen
- Das vorhandene experimentelle
PerfettoConfig
-Argument fürMacrobenchmarkRule.measureRepeated()
wurde in das neueExperimentalConfig
-Objekt verschoben.
Fehlerkorrekturen
- Anzahl der
lockClocks.sh
-Wiederholungen erhöhen (99e9dac) - Erstellen Sie keine
nonMinified
- und Benchmark-Build-Typen, falls vorhanden. Aufgrund eines Fehlers wurdennonMinified
- und Benchmark-Buildtypen auch dann neu erstellt, wenn sie bereits vorhanden waren. (e75f0a5) - Ignorieren Sie nicht endende Segmente aus den
TraceSectionMetric
-Ergebnissen. (a927d20) - Die Emulatorprüfung wurde verbessert, um das Präfix
sdk_
zu berücksichtigen. (1587de8) - Nicht laufende Pakete in
FrameTimingGfxInfoMetric
als gelöscht behandeln (35cc79c) - Korrektur von
androidx.benchmark.cpuEventCounter
, durch die fehlerhafte Werte für andere Ereignisse als Anweisungsereignisse verursacht wurden (06edd59) resumeTiming/runWithTimingDisabled
wurde so korrigiert, dass die Prioritätsreihenfolge der Messwerte berücksichtigt wird. Außerdem wurde die Auswirkung der Pausierung/Fortsetzung von Messwerten mit niedrigerer Priorität auf die Ergebnisse von Messwerten mit höherer Priorität deutlich reduziert. Wenn Sie beispielsweise CPU-Leistungszähler über das InstrumentierungsargumentcpuEventCounter.enable
verwenden, wird „timeNs“ bei Pausieren/Fortsetzen nicht mehr deutlich reduziert. (5de0968)
Version 1.3
Version 1.3.3
16. Oktober 2024
androidx.benchmark:benchmark-*:1.3.3
wird veröffentlicht. Version 1.3.3 enthält diese Commits.
Fehlerkorrekturen
- Problem mit
CollectBaselineProfileTask
behoben, wenn das AVD-Gerät Leerzeichen enthält (Ia0225, b/371642809)
Version 1.3.2
2. Oktober 2024
androidx.benchmark:benchmark-*:1.3.2
wird veröffentlicht. Version 1.3.2 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das Firebase Test Lab (FTL) keine Baseline-Profil- oder MacroBenchmark-Ergebnisdateien aus dem Baseline-Profil-Gradle-Plug-in abrufen konnte. (I2f678, b/285187547)
Wenn Sie FTL verwenden möchten, wenden Sie das Plug-in auf das Basisprofilmodul im Plug-in-Block an:
plugins {
...
id("com.google.firebase.testlab")
}
Konfigurieren Sie dann Firebase Test Lab mit:
firebaseTestLab {
// Credentials for FTL service
serviceAccountCredentials.set(file("credentials.json"))
// Creates one or more managed devices to run the tests on.
managedDevices {
"ftlDeviceShiba34" {
device = "shiba"
apiLevel = 34
}
}
// Ensures the baseline profile is pulled from the device.
// Note that this will be automated as well later with aosp/3272935.
testOptions {
results {
directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
}
}
}
Außerdem muss das erstellte FTL-Gerät zur Basisprofilerweiterung hinzugefügt werden:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
Version 1.3.1
18. September 2024
androidx.benchmark:benchmark-*:1.3.1
wird veröffentlicht. Version 1.3.1 enthält diese Commits.
Fehlerkorrekturen
- Gradle-Eigenschaft
androidx.baselineprofile.suppressWarnings
hinzugefügt, um alle Referenzprofilwarnungen zu unterdrücken (I7c36e, b/349646646) - Das Gradle-Plug-in für das Baseline-Profil wurde so geändert, dass vorhandene
nonMinified…
undbenchmark…
verwendet werden, wenn sie von der App erstellt wurden, anstatt Wrapper zu erstellen. (Ia8934, b/361370179) - Fehlerbehebung bei
java.lang.AssertionError: ERRORS (not suppressed): EMULATOR
, wennautomaticGenerationDuringBuild
in Emulatoren aktiviert ist. Mit dem neuen Argument wird der Test stattdessen übersprungen. (If3f51, b/355515798) - Minimierung von Mikrobenchmarks – Unterklassen von
org.junit.runner.notification.RunListener
in der Benchmark-Bibliothek Proguard beibehalten (Ic8ed5, b/354264743) - Korrigieren Sie
TraceSectionMetric
, um nicht endende Segmente zu ignorieren. Bisher wurde für diese Elemente eine Dauer von -1 angenommen, z.B. bei der Addition oder beim Berechnen der Mindestdauer. (If74b7) - Ein Problem in
FrameTimingGfxInfoMetric
wurde behoben, bei dem der Messwert beim Starten abstürzte, wenn der Prozess noch nicht ausgeführt wurde. (I6e412)
Version 1.3.0
21. August 2024
androidx.benchmark:benchmark-*:1.3.0
wird veröffentlicht. Version 1.3.0 enthält diese Commits.
Änderungen an den Mikrobenchmarks seit Version 1.2.0
- Das Methoden-Tracing ist in Mikrobenchmarks standardmäßig aktiviert, wenn sie auf den meisten Geräten ausgeführt werden.
- Die Methode wird nach den Messungen in einer separaten Phase gefolgt. So können aus einem einzigen Benchmarklauf sowohl genaue Messungen als auch Methodenaufzeichnungen ausgegeben werden.
- Die Methode „Method Tracing“ bei einigen Android-Betriebssystemen und ART-Versionen wirkt sich auf spätere Analysephasen aus. Bei diesen Versionen ist die Methode standardmäßig deaktiviert und eine Warnung wird in der Studio-Ausgabe ausgegeben.
- Benchmarks für den Hauptthread und ANRs
measureRepeatedOnMainThread
wurde für UI-Thread-Benchmarks hinzugefügt (z.B. für solche, die mit Compose-/View-UIs interagieren), um ANRs bei einer Ausführung über mehrere Sekunden zu vermeiden.- Methoden-Traces werden übersprungen, wenn sie voraussichtlich die Frist für die Vermeidung von ANRs überschreiten. Legen Sie
androidx.benchmark.profiling.skipWhenDurationRisksAnr
auf „false“ fest, um dieses Verhalten zu deaktivieren. Dies wird für CI-Ausführungen nicht empfohlen, da ANRs bei langen CI-Ausführungen zu Problemen führen können.
- Minimierung
- Eingebettete Proguard-Regeln zur Verbesserung von MicroBenchmarking bei aktivierter Reduzierung
- Für die Minimierung/R8 in einem Bibliotheksmodul ist AGP 8.3 erforderlich. Sie kann über
android.buildTypes.release.androidTest.enableMinification
inbuild.gradle
aktiviert werden. - Es wurde eine experimentelle
BlackHole.consume()
API hinzugefügt, um die Beseitigung von Totcode zu verhindern (If6812, b/286091643)
- Messwerte
- Experimentelle CPU-Ereigniszählerfunktion (Messwerte von
perf_event_open
, für die auf den meisten Versionen der Plattform Root-Zugriff erforderlich ist), Zugriff überInstrumentationArgument
androidx.benchmark.cpuEventCounter.enable
(kann auftrue
festgelegt werden) undandroidx.benchmark.cpuEventCounter.events
kann z. B. auf (Instructions,CpuCycles
) festgelegt werden. Diese Funktion sollte auf einigen Userdebug-Emulatoren unterstützt werden, der Support wurde jedoch nicht auf allen verfügbaren Emulatoren getestet.
- Experimentelle CPU-Ereigniszählerfunktion (Messwerte von
Änderungen am MACRObenchmark seit Version 1.2.0
- Überarbeitung der Methodenverfolgung für Makro-Benchmarks.
- Jetzt sind Methodenaufzeichnungen auf die Dauer der
measureBlock
beschränkt und können mehrere Sitzungen erfassen, wenn der Prozess mehrmals gestartet wird. - Bisher funktionierte die Methodenaufzeichnung nur für
StartupMode.COLD
-Benchmarks und es wurde nichts fürmeasureBlocks
erfasst, bei dem der Zielprozess nicht neu gestartet wurde. - 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)
- Jetzt sind Methodenaufzeichnungen auf die Dauer der
- Das ART-Profil muss während der einzelnen
warmUp
-Iterationen korrekt gedumpt werden, wenn der Prozess beendet wird, damit dieCompilationMode.Partial(warmup=N)
-Messungen genauer sind. (I17923) - Nachricht zum Fehler beim Senden von Drop-Shadern
- Vorschläge zur Fehlerbehebung bei der Fehlermeldung „Shader-Übertragung fehlgeschlagen“ 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: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 Ablegen von Shadern zu tolerieren, z. B. beim Benchmarking von Apps ohne Profileinstaller 1.3 (I4f573)
- Es wurde eine experimentelle
MacrobenchmarkRule#measureRepeated
-Variante hinzugefügt, die eine benutzerdefiniertePerfettoConfig
für die vollständige benutzerdefinierte Perfetto-Sitzungsaufzeichnung verwendet. Hinweis: 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)
- Der Makrobenchmark wartet jetzt 1 Sekunde, bis die Zielanwendung ein ART-Profil leerte (früher 500 ms). (I85a50, b/316082056)
- Überarbeitung von TraceSectionMetric
- Hinweis: Die folgenden
TraceSectionMetric
-Änderungen können sich auf die Ausgabe bei der CI-Nutzung auswirken und zu Unterbrechungen oder einem Abbruch des Parsings führen. - „Summe“ ist jetzt der Standardwert, da dieser Messwert am häufigsten für wiederholte Ereignisse verwendet wird und in diesen Fällen zuerst Daten verworfen würden.
- Die Funktion wurde angepasst, um sie besser anpassbar zu machen. Es sind jetzt mehr Modi verfügbar.
- Modusnamen sind jetzt in den Messwertausgabenamen eingebettet (in Studio und JSON)
- Es werden jetzt mit
Trace.{begin|end}AsyncSection
erstellte Scheiben unterstützt.
- Hinweis: Die folgenden
- Messwerte
- Energiesparmodus:
PowerMetric.deviceSupportsHighPrecisionTracking
,PowerMetric.deviceBatteryHasMinimumCharge()
undPowerMetric.deviceSupportsPowerEnergy()
wurden hinzugefügt Metric.getResult
wurde ingetMeasurements
umbenannt, um dem Rückgabetyp zu entsprechen- Allen Starterkennungsfehlern wurden log.w-/Ausnahmelabels hinzugefügt. Dadurch wird das aktuelle Verhalten nicht geändert, sodass einige Fehler ausgegeben werden und andere den Start unbemerkt nicht erkennen, sondern nur verständlicher. In der Regel sind das diejenigen, bei denen
Log.w()
und keine Startmesswerte erfasst werden. Es werden Ausnahmen geworfen, wenn der Start erkannt wird, mit Ausnahme von Informationen zur Frame-Zeit (aus UI-/RT-Scheiben). (Id240f, b/329145809) - Der Messwert
frameCount
wurde zuFrameTimingMetric
hinzugefügt, um Szenarien zu erkennen, in denen sich Messwerte ändern, weil sich die Anzahl der generierten Frames geändert hat (neue Animationen hinzugefügt, Fehler bei der Ungültigkeit behoben). (I1e5aa) - Es wurde erläutert, warum
frameOverrunMs
der bevorzugte Messwert für das Tracking ist, wenn er in Dokumenten verfügbar ist. (I18749, b/329478323) - Behoben wurde ein Problem, bei dem nicht abgeschlossene Frames am Anfang und Ende des Tracings miteinander gekoppelt werden konnten, was zu einer falschen Meldung als einzelner extrem langer Frame führte. (I39353, b/322232828)
- Der
FrameTimingMetric
-Fehler wurde verbessert, wenn keine Frames erstellt werden. Außerdem wird bei fehlgeschlagenem Parsen von Messwerten immer ein Link zur Fehlerbehebung ausgegeben. (I956b9) - Behebung eines Absturzes in
FrameTimingMetric
, wenn die Frame-ID nicht geparst werden konnte, insbesondere auf bestimmten OEM-Geräten. (Ia24bc, b/303823815, b/306235276) - Die Strenge der Prüfungen in
FrameMetrics
wurde gelockert und Fehlermeldungen wurden detaillierter. (Iadede)
- Energiesparmodus:
Änderungen bei der Erfassung des Basisprofils und dem 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 ein Baseline-Profil erfolgreich generiert wurde, wird eine Zusammenfassung der Änderungen ausgegeben (I824c8, b/269484510).
- DSL hinzugefügt, um Warnungen zu deaktivieren (Ic4deb, b/331237001)
- Behebung eines Problems, durch das bei deaktiviertem
automaticGenerationDuringBuild
keine generierten Baseline-Profile für Benchmarks verwendet wurden (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) - Behebung eines Problems beim Einfügen von Bibliotheks-Baseline-Profilen in AAR vor AGP 8.3.0-alpha15. (I1d2af, b/313992099)
- Die Ausgabe-URL für Baseline und Startprofil am Ende der Generierungsaufgabe wurde korrigiert. (I802e5, b/313976958)
Weitere wichtige Änderungen seit Version 1.2.0
- TraceCapture
- Der Fehler „EXITCODE 2“ beim Starten von perfetto nach einem Fehler wurde zu einer protokollierten Warnung geändert.
- AIDL-Tracing standardmäßig in Benchmarks aktivieren(erfordert API 28) (Ia0af2, b/341852305)
- Porter-Tag-Analyse standardmäßig in Benchmarks aktivieren So werden beispielsweise Wakelock-Tracepoints erfasst. (Icfe44, b/286551983)
- Das Zeitlimit für den Beginn der Ablaufverfolgung wurde erhöht, um Abstürze beim Starten der Ablaufverfolgung auf langsameren Geräten zu vermeiden (I98841, b/329145808)
- Es wurden öffentliche APIs für
PerfettoTraceProcessor.Session.queryMetrics
mit JSON-, Textproto- und Proto-Binärvarianten (nicht decodiert) hinzugefügt. Damit können Sie inTraceProcessor
integrierte Messwerte abfragen (I54d7f, b/304038382). - Aktivieren Sie den Blockierungsstart im Perfetto-Trace-Eintrag, um das Risiko von fehlenden Daten zu Beginn des Tracings zu verringern. Wird nur ab API 33 unterstützt. (Ie6e41, b/310760059)
- JSON-Ausgabe
- In der JSON-Ausgabe wurden im Benchmark-Kontext zusätzliche Informationen hinzugefügt:
context.artMainlineVersion
– Ganzzahlversion des Art-Mainline-Moduls (falls auf dem Gerät vorhanden, andernfalls-1
)context.build.id
– entspricht android.os.Build.IDcontext.build.version.codename
– Ist gleich android.os.Build.VERSION.CODENAMEcontext.build.version.abbreviatedCodename
– entspricht dem ersten Buchstaben des Pre-Release-Codenamens (auch bei Release-Builds) (Ie5020)
- Der JSON-Ausgabe wurde eine
profilerOutput
-Liste hinzugefügt, um die Verwendung von Tools für Profiling-Traces (z.B. Perfetto, Methoden-Traces) zu vereinfachen (I05ddd, b/332604449) - Es wurde eine Warnung hinzugefügt, wenn der Android Test Orchestrator in Benchmark-Modulen verwendet wird, da dadurch JSON-Ausgabedateien 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 bei der Nachbearbeitung von Dateien zu vermeiden. (I4a5ab)
- In der JSON-Ausgabe wurden im Benchmark-Kontext zusätzliche Informationen hinzugefügt:
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
- Behebung des Problems, dass
androidx.benchmark.cpuEventCounter
fehlerhafte Werte für Ereignisse ohne Anleitung generierte (I7386a, b/286306579) resumeTiming
/runWithTimingDisabled
wurde so angepasst, dass die Prioritätsreihenfolge der Messwerte berücksichtigt wird. Außerdem wurde die Auswirkung der Pausierung/Fortsetzung von Messwerten mit niedrigerer Priorität auf die Ergebnisse von Messwerten mit höherer Priorität deutlich reduziert. 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)- Durch die Verlagerung der Umwandlung der Stack-Stichprobenerhebung aus dem Haupt-Thread wurde die Wahrscheinlichkeit verringert, dass
measureRepeatedOnMainThread
die harte Zeitüberschreitung des Haupt-Threads erreicht. (I487a8, b/342237318) - Die manuelle Kennzeichnung 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 für alle 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)
- AGP-Versionsprüfung hinzugefügt, um den Paketnamen als Instruktivitätsargument 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
wird veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Beim Starten von Perfetto muss EXITCODE
2
ordnungsgemäß verarbeitet werden, um eine Warnung zu protokollieren, aber fortzufahren.
Version 1.3.0-beta01
12. Juni 2024
androidx.benchmark:benchmark-*:1.3.0-beta01
wird veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.
API-Änderungen
MethodTracing.affectsMeasurementOnThisDevice
wurde aus Gründen der Einheitlichkeit inAFFECTS_MEASUREMENT_ON_THIS_DEVICE
umbenannt. (I1bdfa)- Es wurde eine experimentelle
BlackHole.consume()
API hinzugefügt, um die Beseitigung von Totcode in Mikrobenchmarks zu verhindern. (If6812, b/286091643) - Der Microbenchmark wird jetzt korrekt ausgelöst, um zu verhindern, dass das Methoden-Tracing 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. Auf den betroffenen Geräten wird API 26–30 oder eine bestimmte ART-Mainline-Modulversion ausgeführt, die von dieser Störung betroffen ist. Sie können während der Laufzeit überProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice
erkannt werden. (Iafb92, b/303660864)
Fehlerkorrekturen
- Die empfohlene maximale AGP-Version wurde auf 9.0.0-alpha01 erhöht. (I5bbb0)
- Dem Benchmark-Kontext wurde der Kompilierungsmodus hinzugefügt (If5612, b/325512900)
- AIDL-Tracing standardmäßig aktivieren (erfordert API 28) (Ia0af2, b/341852305)
- In der JSON-Ausgabe wurden im Benchmark-Kontext zusätzliche Informationen hinzugefügt:
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 Pre-Release-Codenamens (auch bei Release-Builds) (Ie5020)
StackSampling
berücksichtigt jetztandroidx.benchmark.profiling.sampleDurationSeconds
(Ib1d53)- Ändern Sie „macro->common dependency“ in „
api()
“, damit Sie z.B.PerfettoTrace
undPerfettoConfig
leichter verwenden können. (Icdae3, b/341851833) - Achten Sie darauf, dass die Aufgaben
mergeArtProfile
undmergeStartupProfile
immer auf die Erstellung des Basisprofils warten. (I623d6, b/343086054) - Berücksichtigen Sie den Aktivierungsstatus der Variante, wenn Sie entscheiden, ob sie aktiviert werden soll. (I5d19e, b/343249144)
- Das Standard-Zeitlimit für den Start 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
- Deutlichere Ausnahme, wenn der Macrobench-Messwert für alle Iterationen Nullwerte zurückgibt (Iab58f, b/314931695)
- Den ProGuard-Regeln von MicroBench wurden zusätzliche Problemumgehungsregeln hinzugefügt, einschließlich Unterstützung für Listener-Regeln und andere beobachtete Warnungen / Fehler. (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)
- Zusätzliche Vorschläge zur Fehlerbehebung für die Meldung „Shader-Übertragung fehlgeschlagen“ hinzugefügt. (I5efa6, b/325502725)
Version 1.3.0-alpha04
1. Mai 2024
androidx.benchmark:benchmark-*:1.3.0-alpha04
wird veröffentlicht. Version 1.3.0-alpha04 enthält diese Commits.
API-Änderungen
- Es wurde eine experimentelle
MacrobenchmarkRule#measureRepeated
-Variante hinzugefügt, die eine benutzerdefiniertePerfettoConfig
für die vollständige benutzerdefinierte Perfetto-Sitzungsaufzeichnung verwendet. Hinweis: Falsch konfigurierte Konfigurationen können dazu führen, dass integrierte Messwertklassen fehlschlagen. (Idfd3d, b/309841164, b/304038384) - Benennen Sie
PowerMetric.deviceSupportsPowerEnergy
inPowerMetric.deviceSupportsHighPrecisionTracking
um (I5b82f). - Die Optionen
PowerMetric.deviceBatteryHasMinimumCharge()
undPowerMetric.deviceSupportsPowerEnergy()
wurden hinzugefügt, um Benchmarks je nach Geräteleistung zu ändern oder zu überspringen. (I6a591, b/322121218)
Fehlerkorrekturen
- Vergleich mit vorherigem Basisprofil hinzugefügt (I824c8, b/269484510)
- DSL hinzugefügt, um Warnungen zu deaktivieren (Ic4deb, b/331237001)
- Ausnahme für das Infofenster wurde geändert, wenn Benchmark-Varianten deaktiviert sind (I8a517, b/332772491).
- Die Erfassung von Methoden-Traces für einen Makro-Benchmark wird auf die Dauer der tatsächlichen
measureBlock()
beschränkt. Bisher wurde es beim Start des Zielprozesses gestartet und nur Kaltstarts unterstützt (Iee85a, b/300651094). - Abstürze vermeiden, wenn der 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 abfragen (I54d7f, b/304038382). profilerOutput
wurde der JSON-Ausgabe hinzugefügt, um die Tools zur Profilerstellung zu vereinfachen (z.B. Perfetto, Methoden-Traces). (I05ddd, b/332604449)- Der Perfetto-Konfiguration für den Benchmark wurde das Tag „power“ hinzugefügt. So 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 zu verhindern, dass Methodenaufrufe übersprungen werden, wenn die voraussichtliche Dauer zu einem ANR führen kann. Dies wird bei CI-Ausführungen dringend empfohlen. - Das experimentelle Inst-Argument
androidx.benchmark.profiling.perfCompare.enable
wurde hinzugefügt. Legen Sie es auf „wahr“ fest, um die Zeit zwischen Mess- und Profilierungsphase zu vergleichen. Nützlich z.B. zur Bewertung des Overheads des Methoden-Tracings. (I61fb4, b/329146942)
API-Änderungen
TraceSectionMetric.Mode
in eine versiegelte Klasse geändert, um zukünftige Erweiterungen zu ermöglichen, ohne vollständige Wenn-Beschreibungen zu brechen (I71f7b)TraceSectionMetric.Mode.Average
und.Count
wurden hinzugefügt und die Argumente wurden neu angeordnet, sodass das häufigste Argument (Modus) in der Argumentliste an erster Stelle steht. Dadurch müssen weniger Parameternamen angegeben werden. (Ibf0b0, b/315830077, b/322167531)Metric.getResult
ingetMeasurements
umbenannt, damit sie dem Rückgabetyp entspricht (I42595)
Fehlerkorrekturen
- Behebung eines Problems, durch das bei deaktiviertem
automaticGenerationDuringBuild
keine generierten Baseline-Profile für Benchmarks verwendet wurden (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 den Blockierungsstart im Perfetto-Trace-Eintrag, um das Risiko von fehlenden Daten zu Beginn des Tracings zu verringern. Wird nur ab API 33 unterstützt. (Ie6e41, b/310760059)
- Es wurde eine Warnung hinzugefügt, wenn der Android Test Orchestrator in Benchmark-Modulen verwendet wird, da dadurch JSON-Ausgabedateien pro Modul wiederholt überschrieben werden. (Ia1af6, b/286899049)
- Erzwingen Sie Tausendertrennzeichen "," (Komma) aus Gründen der Konsistenz in der Studio-Ausgabe, wobei die Sprache des Geräts ignoriert wird (I3e921, b/313496656).
TraceSectionMetric
unterstützt jetzt mitTrace.{begin|end}AsyncSection
erstellte Segmente. (I91b32, b/300434906)- Alle Fehler bei der Starterkennung wurden mit log.w / Exception-Labels versehen. Das ändert nichts am aktuellen Verhalten (einige Fehler werden also geworfen, andere werden bei der Starterkennung stummgeschaltet), sondern macht es nur verständlicher. In der Regel sind das diejenigen, bei denen
Log.w()
und keine Startmesswerte erfasst werden. Es werden Ausnahmen geworfen, wenn der Start erkannt wird, mit Ausnahme von Informationen zur Frame-Zeit (aus UI-/RT-Scheiben). (Id240f, b/329145809) - Brechen Sie DeXopt-Jobs im Hintergrund ab, bevor Sie einen Makro-Benchmark ausführen, um Störungen zu vermeiden. (I989ed)
- Der Messwert
frameCount
wurde zuFrameTimingMetric
hinzugefügt, um Szenarien zu erkennen, in denen sich Messwerte ändern, weil sich die Anzahl der generierten Frames geändert hat (neue Animationen hinzugefügt, Fehler bei der Ungültigkeit behoben). (I1e5aa) - Es wurde erläutert, warum
frameOverrunMs
der bevorzugte Messwert für das Tracking ist, wenn er in Dokumenten verfügbar ist. (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 befindet sich in der experimentellen Phase und erfordert AGP 8.3 für die Minimierung von Bibliotheksmodultests. Mit den folgenden Anweisungen können Sie die R8-Minimierung/-Optimierung in der
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
- Die Warnung zur Methodenverfolgung wird jetzt in einer separaten Zeile von der Microbench-Ausgabe angezeigt. (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
MicrobenchmarkConfig
-Parameter wurden umbenannt, um das unnötige Wort „sollte“ zu vermeiden (Ia8f00, b/303387299) BenchmarkRule.measureRepeatedOnMainThread
wurde hinzugefügt, damit Benchmarks für den Hauptthread (z.B. solche, die sich auf Ansichten oder Compose-UIs beziehen) ANRs vermeiden können, insbesondere bei großen Suiten in der CI. (I5c86d)FrameTimingGfxInfoMetric
wurde hinzugefügt, eine experimentelle alternative Implementierung vonFrameTimingMetric
mit Messungen, die direkt von der Plattform stammen, anstatt aus dem Perfetto-Trace extrahiert zu 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:Mode.Min
,Mode.Max
hinzufügen- Labelargument hinzufügen, um den Abschnittsnamen als Messwertlabel zu überschreiben
- Der Ausgabe wurde der Modusname hinzugefügt, um die Bedeutung des Messwerts zu verdeutlichen.
- Der Standardwert wurde in „Summe“ geändert, da dieser Messwert hauptsächlich für wiederholte Ereignisse verwendet wird. Beachten Sie diese Änderungen bei der Verwendung von Conversion-Interaktionen, da sie zu Unterbrechungen führen oder das Parsen beeinträchtigen können. (Ic1e82, b/301892382, b/301955938)
Fehlerkorrekturen
- Verbesserte Fehlermeldung im Gradle-Plug-in für das Baseline-Profil, wenn das angegebene verwaltete Gerät nicht vorhanden ist (Idea2b, b/313803289)
- Fehlerbehebung beim Einfügen von Bibliotheks-Baseline-Profilen in AAR vor AGP 8.3.0-alpha15 (I1d2af, b/313992099)
- Ausgabe-URL für Baseline- und Startprofil am Ende der Generierungsaufgabe korrigiert (I802e5, b/313976958)
- Die Zeitüberschreitungen für Datenquellen wurden angepasst, um das Problem mit
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)]
zu beheben (I8dc7d, b/323601788). - Fügen Sie zwei Instrumentierungsargumente hinzu, um das Verhalten beim Auslagern von Shadern zu überschreiben und Abstürze beim Benchmarking von Apps ohne
ProfileInstaller
1.3 zu vermeiden:androidx.benchmark.dropShaders.enable=true/false
: Kann verwendet werden, um alle Shader-Drops zu überspringen (einschließlich derjenigen, die beiStartupMode.Cold
-Starts erfolgen), insbesondere beim Benchmarking von Apps, die noch nicht ProfileInstaller 1.3 verwenden.androidx.benchmark.dropShaders.throwOnFailure=true/false
: Kann verwendet werden, um Fehler beim Ablegen von Shadern zu tolerieren, z. B. beim Benchmarking von Apps ohne Profileinstaller 1.3 (I4f573)
- Überspringen Sie die Methodeneinblendung im UI-Thread, wenn sie voraussichtlich länger als einige Sekunden dauert, und bereinigen Sie die Methodeneinblendungen, wenn ein Fehler auftritt. (I6e768)
- Wird ausgelöst, wenn Dateinamen länger als 200 Zeichen sind, um unklare Abstürze beim Schreiben oder bei der Nachbearbeitung 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
unter API 30 und höher, wenn Sie ein Paket unter API 30–33 neu installieren, um ART-Profile in Nutzerbuilds zu löschen. So lassen sich Play Protect-Warnungen umgehen, die bei einigen Geräten zu Ausfällen führen. (Ic9e36) - Verwenden Sie
am force-stop
, um Apps zu beenden, die keine System-Apps wie die System-UI oder der Launcher sind. (I5e028) - Macrobenchmark wartet jetzt auf
1 second
, bis die Zielanwendung ein ART-Profil leerte (früher wurde auf500 ms
gewartet). (I85a50, b/316082056) - Verbessern Sie den
FrameTimingMetric
-Fehler, wenn keine Frames erstellt werden, und geben Sie immer einen Link zum Nachverfolgen aus, wenn das Parsen von Messwerten fehlschlägt, um die Problemdiagnose zu erleichtern. (I956b9) - Ein Absturz wurde behoben, bei dem
FrameTimingMetric
die Frame-ID nicht parsen konnte, insbesondere auf bestimmten OEM-Geräten. (Ia24bc, b/303823815, b/306235276) - Die Strenge der Prüfungen in
FrameMetrics
wurde gelockert und Fehlermeldungen wurden detaillierter. (Iadede)
Version 1.2
Version 1.2.4
17. April 2024
androidx.benchmark:benchmark-*:1.2.4
wird veröffentlicht. Version 1.2.4 enthält diese Commits.
Fehlerkorrekturen
- Das Problem wurde behoben, dass das Srcset des Referenzprofils in Benchmarkvarianten nicht eingerichtet wurde. Außerdem wird
automaticGenerationDuringBuild
in Bibliotheken korrigiert, die eine zyklische Abhängigkeit verursachen. (I28ab7, b/333024280) - Verwenden Sie
am force-stop
, um Apps zu beenden, die keine System-Apps wie die System-UI oder der Launcher sind. Dadurch werden Abstürze vonStartupMode.COLD
-Benchmarks behoben, die durch die Meldung „Paket $package darf vor dem Kaltstart nicht ausgeführt werden!“ verursacht wurden, da das Beenden des Prozesses nicht vollständig erfolgreich war. (I5e028)
Version 1.2.3
24. Januar 2024
androidx.benchmark:benchmark-*:1.2.3
wird veröffentlicht. Version 1.2.3 enthält diese Commits.
Fehlerkorrekturen
- Ausnahme aus dem Baseline-Profil-Gradle-Plug-in entfernt, wenn die AGP-Version 8.3.0 oder höher ist
- Behebung eines Problems beim Einfügen von Bibliotheks-Baseline-Profilen in AAR vor AGP 8.3.0-alpha15.
Version 1.2.2
1. Dezember 2023
androidx.benchmark:benchmark-*:1.2.2
wird 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
wird veröffentlicht. Version 1.2.1 enthält diese Commits.
Neue Funktionen
- Verbesserte Fehlermeldung, wenn Nutzer Testvarianten deaktivieren (b/307478189)
- Es wurden Properties hinzugefügt, um die Einbindung von AS-Tests zu unterstützen (b/309805233, b/309116324).
Version 1.2.0
18. Oktober 2023
androidx.benchmark:benchmark-*:1.2.0
wird veröffentlicht. Version 1.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.1.0
Baseline-Profile
- Das neue Baseline Profile Gradle Plugin automatisiert die Erfassung und Einbindung von Baseline-Profilen in Ihren Test- und Build-Workflow.
BaselineProfileRule.collect
ist jetzt stabil. Es handelt sich um eine optimierte und vereinfachte Version der vorherigen experimentellenBaselineProfileRule.collectBaselineProfile
API.- Geben Sie einfach
packageName
an und starten Sie Ihre App.
- Geben Sie einfach
- Bei Bibliotheken, die Baseline-Profile generieren, können Sie die generierten Regeln jetzt entweder im Code (
BaselineProfileRule.collect
-Argument) oder noch einfacher im Gradle-Plug-in filtern. - Korrekturen
- Korrigierte Erhebung des Baseline-Profils unter Android U und höher (Id1392, b/277645214)
Makro-Benchmark
- Kompilierung
- Der Kompilierungsstatus wird bei Macrobenchmark jetzt bei jeder Kompilierung korrekt zurückgesetzt. Unter Android 14 muss das APK neu installiert werden. Daher wird der Benchmark unter Android 14 oder höher dringend empfohlen, wenn Sie den Status (z. B. die Nutzeranmeldung) in den gemessenen Daten beibehalten möchten.
- Sie können das Problem auch umgehen, indem Sie die App-Kompilierung separat steuern und die Kompilierung mit
CompilationMode.Ignore()
oder dem Instrumentierungsargument überspringen.
Argumente für die Instrumentierung
- Unterstützung für das Instrumentierungsargument
androidx.benchmark.dryRunMode.enable
(bereits im Mikrobenchmark verfügbar) für schnellere Validierungsläufe (z.B. beim Erstellen des Benchmarks oder vor dem Einreichen) - Unterstützung für
androidx.benchmark.profiling.mode=StackSampling
undMethodTracing
. androidx.benchmark.enabledRules
wurde hinzugefügt, um die Laufzeitfilterung von Baseline-Profilen und Makrobenchmark-Regeln zu ermöglichen- Das Argument
androidx.benchmark.perfettoSdkTracing.enable
wurde hinzugefügt, um das Tracing mit Tracing-Perfetto zu aktivieren, z.B. Tracing zur Neuzusammensetzung. 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 Instrumentierungsargument
Voraussetzungen
- Für Macrobenchmark ist jetzt
ProfileInstaller
1.3.0 oder höher in der Ziel-App erforderlich, um die Profilerfassung/-rücksetzung und das Löschen des Shader-Caches zu aktivieren.
- Für Macrobenchmark ist jetzt
Neue experimentelle Metrics APIs
- Die experimentelle Funktion
TraceSectionMetric
wurde hinzugefügt, mit der sich einfache Zeitangaben austrace("") {}
-Blöcken in Ihrer App extrahieren lassen. Mit TraceMetric können Sie die vollständigen Abfragefunktionen von PerfettoTraceProcessor
nutzen. - Die experimentelle Schaltfläche
PowerMetric
zum Erfassen von Informationen zur Stromnutzung wurde hinzugefügt. - Das experimentelle Feld
MemoryCountersMetric
zum Zählen von Seitenfehlern wurde hinzugefügt. - Zusätzliche experimentelle
PerfettoTraceProcessor
API, die intern zum Extrahieren von Messwerten aus System-Traces (auch als Perfetto-Traces bezeichnet) verwendet wird
- Die 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.
- Behoben:
FrameTimingMetric
Frames mit inkonsistenten Frame-IDs wurden ignoriert (in der Regel Frames während von Wellen bei API 31 und höher) (I747d2, b/279088460) - Fehler beim Parsen von Protokollen mit mehr als 64 MB behoben (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.
- Akkustandprüfung für Geräte ohne Akku (Mikro- und Makrogeräte) überspringen
- Verbesserte Dateiausgabe mit klareren Fehlermeldungen bei ungültigen Ausgabeverzeichnissen und sichereren Standardeinstellungen
- Verbesserte Stabilität von
StartupMode.COLD
durch konsequentes Löschen des Shader-Cache (auch überMacrobenchmarkScope.dropShaderCache
verfügbar) - Leanback-Fallback für
startActivityAndWait
korrigiert
Mikrobenchmark
- Funktionen
- Das Profiling wurde in eine separate Phase verschoben, die nach anderen Messwerten ausgeführt wird. So können in einem Testlauf sowohl genaue Zeitangaben als auch Profiling-Ergebnisse angezeigt werden.
- Experimentelle APIs
- Die experimentelle
MicrobenchmarkConfig
API zum Definieren benutzerdefinierter Messwerte und Konfigurieren von Tracing und Profiling wurde 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
getrennt vonBenchmarkRule
ohne JUnit hinzugefügt. - Es wurde ein experimenteller
PerfettoTrace
-Eintrag hinzugefügt, um Perfetto-Traces mit benutzerdefinierter Konfiguration getrennt von Benchmark-APIs zu erfassen.
- Die experimentelle
- Fehlerkorrekturen
- Problembehebung für fehlende Anfangs-Leerzeichen in der Android Studio-Benchmark-Ausgabe.
- Problem behoben, durch das 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. - Die Leistung von
dryRunMode
wurde durch das Überspringen vonIsolationActivity
und Perfetto-Tracing massiv verbessert (bis zu 10-mal schnellerer Modus für den Trockenlauf bei älteren Betriebssystemversionen).
Version 1.2.0-rc02
6. Oktober 2023
androidx.benchmark:benchmark-*:1.2.0-rc02
wird veröffentlicht. Version 1.2.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Die Benchmarkdateiausgabe wurde korrigiert, damit das Kopieren von
BaselineProfile
-Plug-in-Dateien nicht mehr unterbrochen wird. Die Dateien wurden generiert und vom Gerät kopiert, aber so umbenannt, dass sie vom Gradle-Plug-in nicht erkannt wurden. (I8dbcc, b/303034735, b/296453339) - Die
tracing-perfetto
-Fehlermeldungen beim Laden wurden klarer formuliert, wenn Code aus dem Macrobenchmark-Modul in die Zielanwendung eingefügt wird.
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
- Wenn die Perfetto SDK-Analyse in einem Benchmark nicht initialisiert werden kann, wird jetzt eine Ausnahme mit einer Anleitung zur Behebung des Problems geworfen. (I6c878, b/286228781)
- Behebung des OOM-Absturzes beim Konvertieren von ART-Methoden-Traces in das perfetto-Format. (I106bd, b/296905344)
- (Makrobenchmark) Das Label für die Methodenaufzeichnung wurde bei der Verknüpfung in der Studio-Testausgabe verdeutlicht. Außerdem wurden die Dateinamen für die Methodenaufzeichnung so festgelegt, dass sie auf dem Gerät/Host eindeutig sind, damit 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
wird veröffentlicht. Version 1.2.0-beta05 enthält diese Commits.
Neue Funktionen
- Das Baseline Profile Gradle Plugin unterstützt jetzt das Android Gradle Plugin 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 von parametrisierten Tests), indem Sie die Ausgabedateinamen weiter bereinigen und „=“ und „:“ in den Ausgabedateinamen vermeiden. (I759d8)
Version 1.2.0-beta03
9. August 2023
androidx.benchmark:benchmark-*:1.2.0-beta03
wird veröffentlicht. Version 1.2.0-beta03 enthält diese Commits.
API-Änderungen
- Es wurde ein Argument hinzugefügt, um
TraceSectionMetric
nur auf das Zielpaket zu filtern. Diese Option ist 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 Studio-System-Trace-Viewer angezeigt und in Perfetto unter dem richtigen Prozess verschachtelt. (I6b2e7, b/293510459)
- Der Fehler „NOT-PROFILEABLE“ bei Macrobenchmark wurde in API 31 und höher entfernt. Außerdem wird die Prüfung, ob ein Gerät für die Profilierung geeignet ist, auf gerooteten Geräten mit eng/userdebug übersprungen. (I2abac, b/291722507)
- Wenn Sie Dex-Layoutoptimierungen verwenden, werden Startprofilregeln jetzt auch als Baseline-Profilregeln betrachtet. (aosp/2684246, b/293889189)
Version 1.2.0-beta02
26. Juli 2023
androidx.benchmark:benchmark-*:1.2.0-beta02
wird veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.
API-Änderungen
- Es wurden experimentelle APIs für benutzerdefinierte Messwerte und Konfigurationen von MicroBench hinzugefügt (z.B. Profiler und Tracing). (I86101, b/291820856)
Fehlerkorrekturen
- Fehler in macrobench melden, wenn das Betriebssystem für die Ablaufverfolgung falsch konfiguriert ist. Dieser Fehler wurde kürzlich in den ARM64-Emulatoren der API 26/28 behoben. (I0a328, b/282191686)
- Es wurde ein Detail zum Fehler beim Zurücksetzen der Kompilierung hinzugefügt, um das Aktualisieren des Emulators vorzuschlagen, da dieses Problem bei einigen Emulatoren vor Kurzem behoben wurde. (I8c815, b/282191686)
- Machen Sie
androidx.test.uiautomator:uiautomator:2.2.0
zu einerapi
- statt 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
- Warnungen, die in der Benchmark-Ausgabe in Studio manchmal unterdrückt wurden, wurden behoben. Außerdem wurde ein Problem behoben, bei dem führende Leerzeichen in der Benchmark-Ausgabe in Studio nicht angezeigt wurden (Ia61d0, b/227205461, b/286306579, b/285912360)
- Kommentar für
FrameTimingMetric
korrigiert. Der untergeordnete Messwert heißtframeDurationCpuMs
. (Ib097f, b/288830934).
Version 1.2.0-alpha16
21. Juni 2023
androidx.benchmark:benchmark-*:1.2.0-alpha16
wird veröffentlicht. Version 1.2.0-alpha16 enthält diese Commits.
API-Änderungen
- Die
BaselineProfileRule.collectBaselineProfile()
API wurde inBaselineProfileRule.collect()
umbenannt. (I4b665)
Fehlerkorrekturen
- Unterstützung für Makro-Benchmarks 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 statt als Ersatz durchgeführt.
MethodTracing
-Trace-Abschnitte sind jetzt auch im erfassten Perfetto-Trace enthalten, sofern vorhanden. (I9f657, b/285014599) - Fügen Sie
TraceSectionMetric
mitMode.Sum
einen Zählwert 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) - Property zum Überspringen der Generierung des Baseline-Profils hinzugefügt. Nutzung:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration
. (I37fda, b/283447020)
API-Änderungen
- Die
collectBaselineProfile
API generiert immer stabile Baseline-Profile. DiecollectStableBaselineProfile
API wurde entfernt und sollte stattdessen durchcollectBaselineProfile
ersetzt werden. (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 Funktionen den Großteil der Laufzeit in Anspruch genommen haben. (Ie4f7d) - Unterstützung für Stichprobenerhebungen des Aufrufstacks in Makrobenchmarks 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
wird veröffentlicht. Version 1.2.0-alpha14 enthält diese Commits.
Fehlerkorrekturen
- Behebung eines Problems, bei dem
FrameTimingMetric
Frames mit inkonsistenten Frame-IDs ignorierte Dies würde dazu führen, dass bei einigen Animationen auf neueren Plattformversionen (API 31 und höher) viele Frames ignoriert werden, währendRenderThread
animiert wird (z.B. bei einer Wellenbewegung). (I747d2, b/279088460) - Das Parsen von Trace-Prozessoren für Traces, die größer als 64 MB sind, wurde korrigiert. (Ief831, b/269949822)
- Behoben wurde ein Fehler, bei dem die Erstellung des Baseline-Profils auf Android U aufgrund der unterschiedlichen Ausgabe des Befehls
pm dump-profiles
fehlgeschlagen ist. (Id1392, b/277645214) - Fehlerkorrektur für das GPU-Sperrskript, um Strings korrekt zu vergleichen (I53e54, b/213935715)
Version 1.2.0-alpha13
5. April 2023
androidx.benchmark:benchmark-*:1.2.0-alpha13
wird 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 vollständig benutzerdefinierter Messwerte basierend auf dem Inhalt einer Perfetto-Spur hinzugefügt. (I4ce31, b/219851406) - Fügen Sie einen experimentellen Messwert hinzu, um die Anzahl der Seitenfehler während einer Benchmark zu ermitteln. (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 Baseline-Profile wird in der Alphaversion veröffentlicht. Damit lässt sich ein Baseline-Profil einfacher generieren und der Entwickler-Workflow wird vereinfacht.
API-Änderungen
- Die Unterstützung für Perfetto-Tracing in API 21 und 22 wurde entfernt. Dazu gehören sowohl Mikrobenchmarks als auch die experimentellen
PerfettoTrace
APIs. Vor dieser Version warenUiAutomation
-Verbindungen auf einigen Geräten nicht zuverlässig. (I78e8c) - Es wurde eine öffentliche experimentelle API für
PerfettoTraceProcessor
hinzugefügt, um das Parsen von Trace-Inhalten zu ermöglichen. Dies ist ein Schritt in Richtung vollständig benutzerdefinierter Messwerte, 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
- Abstürze in
MacrobenchmarkRule
undBaselineProfileRule
beim Neuinstallieren oder Extrahieren 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 werden Zielanwendungen von Macrobenchmark nicht mehr neu installiert, um den Kompilierungsstatus zurückzusetzen. Das ist dank einer neuen Plattformfunktion möglich. 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
stürzt nicht mehr ab, wenn das Profil leer ist, 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)- Behebung des Absturzes von
PowerMetric
beim Prüfen der Verfügbarkeit von Leistungsstatistiken auf alten API-Ebenen. (5faaf9, b/268253898)
Version 1.2.0-alpha09
11. Januar 2023
androidx.benchmark:benchmark-*:1.2.0-alpha09
wird veröffentlicht. Version 1.2.0-alpha09 enthält diese Commits.
Fehlerkorrekturen
- Es ist jetzt möglich,
None
an das Instrumentierungsargumentandroidx.benchmark.enabledRules
zu übergeben, um die Generierung aller Benchmarks / Referenzprofile zu deaktivieren. (I3d7fd, b/258671856) - Behebung eines Problems beim Erfassen von
PerfettoTrace
in App-Modulen (d.h. nicht selbst instrumentierte Test-APKs) (I12cfc) - Die Reihenfolge der ADB-Pull-Argumente für das Baseline-Profil in der Studio-Ausgabe wurde korrigiert (I958d1, b/261781624)
- Die Arm-Emulator-API 33 wird jetzt beim Ausführen eines Makrobenchmarks korrekt erkannt und die Warnung wird korrekt ausgegeben. (69133b,b/262209591)
- Akkuladestandsprüfung 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
wird veröffentlicht. Version 1.2.0-alpha08 enthält diese Commits.
API-Änderungen
- Die experimentellen APIs
PerfettoTrace.record {}
undPerfettoTraceRule
wurden hinzugefügt, um Perfetto-Traces (auch als System-Traces bezeichnet) im Rahmen eines Tests zu erfassen und das Testverhalten und die Leistung zu prüfen. (I3ba16) BaselineProfileRule
akzeptiert jetzt ein Filterprädikat anstelle einer Liste von Paketpräfixen. So haben Sie beim Test die volle Kontrolle über das Filtern. (I93240)- Fügen Sie eine experimentelle API
BaselineProfileRule.collectStableBaselineProfile
hinzu, die wartet, bis ein Baseline-Profil für N Iterationen stabil ist. (I923f3) - Es ist jetzt möglich, beim Generieren von Baseline-Profilen mit
BaselineProfileRule
ein Präfix für den Ausgabedateinamen anzugeben. (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
simpleperf
-Trace-Ausgabe, damit die Datei richtig erstellt und platziert wird. Außerdem sollten damit allgemeiner Probleme behoben werden, bei denen eine Datei von gradle nicht erfolgreich abgerufen wird. (I12a1c, b/259424099) - Verbesserte Fehlermeldung, die ausgegeben wird, wenn der Profileinstaller zu alt ist. Sie werden jetzt aufgefordert, die Version von „profileinstaller“ (1.2.1) zu aktualisieren, um Baseline-Profile für API 31 bis 33 zu messen, anstatt dass Sie darüber informiert werden, dass dies nicht unterstützt wird. (Ia517f, b/253519888)
- Fehler bei mehreren Shell-Befehlen behoben: Fehlermeldung „Print needed API <=23“ bei fehlgeschlagener Einrichtung der perfetto-Capture-Binärdatei und fehlgeschlagener Trace-Aufzeichnung (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)
- Behobener 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)
Bekannte Probleme
– MacrobenchmarkScope.dropShaderCache()
kann aufgrund einer fehlenden Registrierung für die Übertragung im Manifest des Profileinstallers abstürzen, das noch nicht veröffentlicht wurde. (I5c728, b/258619948) Um das Problem in profileinstaller:1.3.0-alpha02
zu umgehen, fügen Sie der AndroidManifest.xml Ihrer Anwendung (nicht der des Benchmarks) 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
wird veröffentlicht. Version 1.2.0-alpha07 enthält diese Commits.
API-Änderungen
- Die
PowerMetric
API zum Messen von Energie und Leistung in Makrobenchmarks wurde hinzugefügt. (Ife601, b/220183779) MacrobenchmarkScope.dropShaderCache()
wurde korrigiert, damit der Shader-Cache tatsächlich gelöscht wird. Dadurch werden etwa 20 ms Rauschen ausStartupMode.COLD
-Benchmarks entfernt, da Shader jetzt bei jeder Iteration konsequent gelöscht werden. Bisher wurden bei derPartial
-Kompilierung mit Aufwärmiterationen fälschlicherweise zu hohe Werte gemeldet, da das Shader-Caching während des Aufwärmens häufiger vorkam. 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, um die Gesamtzeit zu messen, die in mehreren Trace-Abschnitten mit demselben Label verbracht 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
- Die Sicherheit aller internen Shell-Befehle wurde durch Validierung aller Ausgaben/Fehler verbessert. (I5984d, b/255402908, b/253094958)
- Gerät im
adb pull
-Befehl des Baseline-Profils angeben, 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 das Makro-Benchmarking innerhalb des Prozesses der Ziel-App. Während des Prozesses konnte macrobench die App nicht kompilieren/beenden/kalt starten oder seine eigenen Berechtigungen 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 nicht mehr ausgeführt und es wird keine gültige Kaltstartmessung durchgeführt. (I8ebb7)
Version 1.2.0-alpha06
24. Oktober 2022
androidx.benchmark:benchmark-*:1.2.0-alpha06
wird veröffentlicht. Version 1.2.0-alpha06 enthält diese Commits.
API-Änderungen
- Für
BaselineProfileRule
ist unter Android 13 (API 33) keine Root-Berechtigung mehr erforderlich und die API ist nicht mehr experimentell. (Ie0a7d, b/250083467, b/253094958)- Durch diese Änderung wird auch behoben, wie Profile von einer App auf nicht gerooteten Geräten auf die Festplatte geschrieben werden. Es ist jedoch erforderlich, die Abhängigkeit des Profileinstallers der Ziel-App zu aktualisieren.
- Wenn Sie
BaselineProfileRule
oderCompilationMode.Partial(warmupIterations)
auf einem nicht gerooteten Gerät verwenden möchten, müssen Sie auch Ihre Ziel-App aufandroidx.profileinstaller.profileinstaller:1.3.0-alpha01
aktualisieren. Dadurch wird das Profil korrekt auf das Laufwerk geleert, sodass es kompiliert/extrahiert werden kann.
Fehlerkorrekturen
- Behebung des Absturzes von
SampledProfiling
bei API 33 und höher (I40743, b/236109374)
Version 1.2.0-alpha05
5. Oktober 2022
androidx.benchmark:benchmark-*:1.2.0-alpha05
wird veröffentlicht. Version 1.2.0-alpha05 enthält diese Commits.
Fehlerkorrekturen
- Behebung eines Fehlers bei der Frame-Aufschlüsselung in der Studio-System-Trace-Ansicht für Benchmark-Aufzeichnungen (I3f3ae, b/239677443)
- Korrigieren Sie
FrameTimingMetric
, sodass fürFrameOverrun
API 31 anstelle von 29 erforderlich ist (I716dd, b/220702554) - Legen Sie die Iteration in
BaselineProfileRule
fest und geben Sie eindeutig 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
wird veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.
Neue Funktionen
Unterstützung für das Instrumentierungsargument
dryRunMode.enable
für Macrobenchmark hinzufügen (bereits in Micro verfügbar), um die lokale Entwicklung zu beschleunigen und die App-Automatisierung zu validieren (z.B. in presubmit). Dadurch wird die Iteration auf „1“ überschrieben, die Kompilierung übersprungen, alle Konfigurationsfehler unterdrückt und die Ausgabe der JSON-Datei für die Messung 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
- Bei
StartupTimingMetric
ist es nicht mehr erforderlich, dass gemessene Aktivitäten überMacrobenchmarkScope.startActivityAndWait()
gestartet werden. Das bedeutet, dass der Messwert Startvorgänge von z.B. Benachrichtigungen,Context.startActivity()
, aktivitätsbasierte Navigation in der App oder Shell-Befehlen erfassen kann. (Ia2de6, b/245414235) - Fehler behoben, bei dem
startActivityAndWait
bei Emulatoren beim Warten auf den Abschluss des Starts ein Zeitlimit überschreitet, indem die Strenge der Frameerkennung verringert wurde. (Ibe2c6, b/244594339, b/228946895)
Version 1.2.0-alpha03
7. September 2022
androidx.benchmark:benchmark-*:1.2.0-alpha03
wird veröffentlicht. Version 1.2.0-alpha03 enthält diese Commits.
Neue Funktionen
- Es wurden experimentelle APIs hinzugefügt, mit denen
BenchmarkState
unabhängig vonBenchmarkRule
/JUnit4
verwendet werden kann. (Id478f, b/228489614)
Fehlerkorrekturen
- Leanback-Fallback für
startActivityAndWait
hinzugefügt (01ed77, b/242899915)
Version 1.2.0-alpha02
24. August 2022
androidx.benchmark:benchmark-*:1.2.0-alpha02
wird veröffentlicht. Version 1.2.0-alpha02 enthält diese Commits.
API-Änderungen
- Standardmäßig ist
am force stop
fürMacrobenchmarkScope.killProcess()
festgelegt, auch wenn das Gerät gerootet ist, mit Ausnahme der Erstellung des Baseline-Profils. Dies kann mit einem optionalen booleschen Argument überschrieben werden. (02cce9, b/241214097)
Fehlerkorrekturen
- Die grundlegende Profilerstellung für System-Apps wird unterstützt. (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
wird 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)
Das Instrumentierungsargument
androidx.benchmark.enabledRules
wurde hinzugefügt, um Makrobenchmark-Ausführungen auf Benchmarks oder nur auf die Generierung von Baseline-Profilen zu filtern. Übergeben Sie "MacroBenchmark" oder "BaselineProfile", um nur eine Art von Test auszuführen, z.B. wenn nurBaselineProfiles
in einem Emulator generiert wird. Eine durch Kommas getrennte Liste wird ebenfalls unterstützt. (I756b7, b/230371561)Geben Sie z.B. in der build.gradle-Datei Ihrer MakroBenchmark Folgendes ein:
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
zum Messen von Energie- und Leistungsaufgaben in Benchmarks hinzugefügt. (I9f39b, b/220183779) - Neuer Kompilierungsmodus
CompilationMode.Ignore
hinzugefügt, um das Zurücksetzen des Profils und die Kompilierung 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 es Entwicklern, das Gerät zu entladen, um den Stromverbrauch zu messen. (I6a6cb)
- Die Funktion zum Leeren des Shader-Caches in
MacrobenchmarkScope
wurde hinzugefügt. (I32122) - Hiermit können Entwickler die Anzeige des Messwerttyps und die gewünschten Untersystemkategorien konfigurieren. (I810c9)
- Bisher wurde im Benchmark ein
UnsupportedOperationException
ausgegeben, wenn der Benchmark auf einem nicht unterstützten Gerät ausgeführt wurde. Jetzt tritt der Fehler nur noch auf, wenn der Messwert auf dem nicht unterstützten Gerät verwendet wird (z. B.PowerMetric.configure
). (I5cf20, b/227229375) TotalPowerMetric
undTotalEnergyMetric
wurden hinzugefügt, um die Gesamtleistung und ‑energie in jeder Systemkategorie in Makrobenchmarks zu messen. (I3b26b, b/224557371)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem kompilierte Methoden bei nicht gerooteten Builds zwischen den einzelnen Makro-Benchmarks nicht richtig zurückgesetzt wurden. Leider muss die APK bei jeder Iteration neu installiert werden, wodurch die Anwendungsdaten für jeden Makrobenchmark gelöscht werden. (I31c74, b/230665435)
- Absturz der Trace-Aufzeichnung in API 21/22 beheben (If7fd6, b/227509388, b/227510293, b/227512788)
- Die Erkennung des Abschlusses des Starts von Aktivitäten wurde überarbeitet, um die Ausnahme „Keine Messwerte können gelesen werden“ in Start-Makro-Benchmarks zu beheben. (Ia517c)
Version 1.1.1
Version 1.1.1
9. November 2022
androidx.benchmark:benchmark-*:1.1.1
wird veröffentlicht. Version 1.1.1 enthält diese Commits.
Fehlerkorrekturen
- Behebung von
android.system.ErrnoException: open failed: EACCES
, die auf einigen Geräten mit Android 11 (API 30) oder höher auftreten. 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
wird 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
Mit der Unterstützung für Jetpack-Makrobenchmarks können Sie App-Interaktionen wie Start und Scrollen messen. Außerdem haben Sie die Möglichkeit, Traces aufzuzeichnen und Trace-Abschnitte zu messen.
Unterstützung für Baseline-Profile
CompilationMode.Partial
, um die Effektivität von Baseline-Profilen zu messen.@BaselineProfileRule
, um automatisch Baseline-Profile für eine bestimmte kritische User Journey zu generieren.
Unterstützung für Zuordnungsmesswerte und Profilerstellung während 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
Installieren Sie das Zielpaket nicht bei jeder Benchmark-Iteration neu. ( aosp/2093027, b/231976084)
Entferne die
300ms
-Verzögerung vonpressHome()
. (aosp/2086030, b/231322975)Verbessern Sie die Iterationsgeschwindigkeit des Makrobenchmarks, indem Sie die Shell-Befehle optimieren, die im Hintergrund verwendet werden. (aosp/2086023, b/231323582)
Unterstützung für verwaltete Gradle-Geräte beim Generieren von Baseline-Profilen mit Makrobenchmarks (aosp/2062228, b/228926421)
Version 1.1.0-rc02
11. Mai 2022
androidx.benchmark:benchmark-*:1.1.0-rc02
wird 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 ermöglichen.
Fehlerkorrekturen/Verhaltensänderungen
Ein Problem wurde behoben, durch das die App-Kompilierung zwischen Makrobenchmarks nicht richtig zurückgesetzt wurde und bei nicht gerooteten Builds überhaupt nicht 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 die Ziel-App nun alle Testmethoden vollständig neu installieren, wodurch die Anwendungsdaten zwischen den einzelnen Makro-Benchmarks gelöscht werden. (I31c74, b/230665435)Da dies verhindert, dass Apps den Status vor Tests einrichten können, ist es jetzt möglich, die Kompilierung / Neuinstallation zu überspringen, 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 von macrobenchmark überspringen.Beispiel in der build.gradle-Datei Ihres Makrobenchmarks:
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. Geben Sie „Macrobenchmark“ oder „BaselineProfile“ an, um nur einen Testtyp auszuführen, z.B. wenn SieBaselineProfiles
in einem Emulator generieren. (I756b7, b/230371561)Beispiel in der build.gradle-Datei Ihres Makrobenchmarks:
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 spiegelt die Ausgabe immer die neuesten Ergebnisse der Verwendung eines
BaselineProfileRule
wider. ( aosp/2057008, b/228203086 )
Version 1.1.0-beta06
6. April 2022
androidx.benchmark:benchmark-*:1.1.0-beta06
wird veröffentlicht. Version 1.1.0-beta06 enthält diese Commits.
Fehlerkorrekturen
- Absturz bei der Aufzeichnung von Protokollen in API 21/22 behoben (If7fd6, b/227509388)
- Die Erkennung des Abschlusses des Starts von Aktivitäten wurde überarbeitet, um die Ausnahme „Keine Messwerte können gelesen werden“ in Start-Makro-Benchmarks zu beheben. (Ia517c)
- Startmesswerte für Makrobenchmarks bei Verwendung von
CompilationMode.None()
korrigiert Vor dieser Änderung erschienCompilationMode.Partial()
langsamer alsCompilation.None()
. (611ac9).
Version 1.1.0-beta05
23. März 2022
androidx.benchmark:benchmark-*:1.1.0-beta05
wird veröffentlicht. Version 1.1.0-beta05 enthält diese Commits.
Fehlerkorrekturen
- Paket beenden, nachdem die Profilinstallation übersprungen wurde, wenn
CompilationMode.None
verwendet wird (aosp/1991373) - Ein Problem wurde behoben, bei dem Macrobenchmarks bei Verwendung von
StartupMode.COLD
keine Startmesswerte erfassen konnte. (aosp/2012227 b/218668335)
Version 1.1.0-beta04
23. Februar 2022
androidx.benchmark:benchmark-*:1.1.0-beta04
wird veröffentlicht. Version 1.1.0-beta04 enthält diese Commits.
Fehlerkorrekturen
Behebung von fehlenden Messwerten unter Android 10 und
NoSuchElementException
, die durch nicht korrekt in den Protokollen erfasste Prozessnamen verursacht wurden. (Ib4c17, b/218668335)Verwenden Sie
PowerManager
für die Erkennung der thermischen Drosselung unter Q (API 29) und höher. Dadurch wird die Häufigkeit von Falschpositiven bei der Erkennung von thermischer Drosselung deutlich reduziert (Benchmark wird nach 90 Sekunden Wartezeit wiederholt) und Benchmarks werden bei Nutzerbuilds deutlich beschleunigt. Außerdem wird die Drosselung auch dann erkannt, wenn Taktfrequenzen gesperrt sind (wenn sie für die Umgebung des Geräts zu hoch eingestellt sind). (I9c027, b/217497678, b/131755853)Filtern Sie das gesamplete Profiling von simpleperf auf den
measureRepeated
-Thread, um die Prüfung zu vereinfachen (Ic3e12, b/217501939)Unterstützung von Messwerten aus benannten UI-Unterprozessen in mehrstufigen Apps (Ice6c0, b/215988434)
Filtern Sie die Regeln für das Baseline-Profil auf 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
wird veröffentlicht. Version 1.1.0-beta03 enthält diese Commits.
API-Änderungen
AudioUnderrunMetric
wurde der Macrobenchmark-Bibliothek mit dem experimentellen Flag hinzugefügt, um Unterbrechungen bei der Audiowiedergabe zu erkennen (Ib5972)Für
BaselineProfileRule
wird keinsetup
-Block mehr akzeptiert, da dieser genauso funktioniert wie derprofileBlock
-Block. (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 unter API 23 (Ice380) verhindern
FrameCpuTime
inFrameDurationCpu
undFrameUiTime
inFrameDurationUi
umbenannt, um zu verdeutlichen, dass es sich um Zeiträume und nicht um Zeitstempel handelt, und um die Übereinstimmung mit den Präfixen zu verbessern. (I0eba3, b/216337830)
Version 1.1.0-beta02
26. Januar 2022
androidx.benchmark:benchmark-*:1.1.0-beta02
wird veröffentlicht. Version 1.1.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Die Ergebnisse von Microbenchmark-Stack-Sampling-/Method-Tracing-Profilen sind jetzt in der Studio-Ausgabe verknüpft, ähnlich wie andere Profiling-Ausgaben, und der Allokationsmesswert wird nicht unterdrückt. (Idcb65, b/214440748, b/214253245)
- BaselineProfileRule gibt jetzt den Befehl
adb pull
in 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
- Behebung des Problems, dass das Profiler-Argument „enable“ ignoriert wurde. (I37373, b/210619998)
- Die eingestellte
CompliationModes
(I98186, b/213467659) wurde entfernt. - Das Argument des Basisprofils von
CompilationMode.Partial
wurde zur besseren Übersichtlichkeit in Enum geändert. (Id67ea)
Version 1.1.0-alpha13
15. Dezember 2021
androidx.benchmark:benchmark-*:1.1.0-alpha13
wird veröffentlicht. Version 1.1.0-alpha13 enthält diese Commits.
API-Änderungen
- Der Microbench-Ausgabe unter Android Q (API 29 und höher) wird jetzt ein System-Tracing mit geringem Overhead hinzugefügt. Derzeit werden damit keine benutzerdefinierten Tracings (über die
android.os.Trace
- oderandroidx.tracing
-Jetpack APIs) erfasst, um die Ergebnisse nicht zu beeinflussen. Diese Informationen sollten Ihnen helfen, Instabilitäten zu diagnostizieren, insbesondere solche, die von Quellen außerhalb des Benchmarks stammen. (I298be, b/205636583, b/145598917) - Unterteilen Sie
CompilationModes
in drei Klassen: „Voll“, „Kein“ und „Teilweise“. Bisher wurden sie uneinheitlich nach Kompilierungsargumenten (die wir jetzt als Implementierungsdetails behandeln) und Funktionen benannt. So werden die Vor- und Nachteile, möglichen Kombinationen und das Verhalten auf verschiedenen Plattformversionen klarer. (I3d7bf, b/207132597) - Einrichtung und Analyse werden jetzt immer paarweise und in der richtigen Reihenfolge angezeigt. Sie können jetzt den Paketnamen und die Iteration abfragen. In bestimmten Warm-up-Szenarien ist die Iteration jedoch möglicherweise
null
. (Id3b68, b/208357448, b/208369635)
Fehlerkorrekturen
- Behoben:
CompilationMode.Speed
wurde fälschlicherweise alsNone
behandelt (I01137)
Version 1.1.0-alpha12
17. November 2021
androidx.benchmark:benchmark-*:1.1.0-alpha12
wird veröffentlicht. Version 1.1.0-alpha12 enthält diese Commits.
Neue Funktionen
- Fügen Sie den experimentellen TraceSectionMetric-Typ für benutzerdefinierte Trace-basierte Zeitmessungen hinzu. (I99db1, b/204572664)
Fehlerkorrekturen
- Gerät bei jeder Iteration aufwecken, damit die Benutzeroberfläche getestet werden kann. Dazu muss der Sperrbildschirm deaktiviert sein. (Ibfa28, b/180963442)
- Mehrere Abstürze im StackSampling-Profilierungsmodus auf Emulatoren und nicht gerooteten Geräten wurden behoben (Icdbda, b/202719335)
- Die 0,5-Sekunden-Pause am Ende jeder Iteration wurde entfernt.Wenn Sie nach dieser Änderung fehlende Messwerte sehen, senden Sie bitte einen Fehlerbericht. (Iff6aa)
- Die Wahrscheinlichkeit von Datenverlusten wird reduziert und der Speicheraufwand durch das Tracing wird gesenkt (Id2544, b/199324831, b/204448861)
- Durch den Wechsel zum kompakten Speicherformat für den Zeitplan lässt sich die Größe der Protokolle um etwa 40% reduzieren. (Id5fb6, b/199324831)
- Die Implementierungen der Startmesswerte wurden aktualisiert, sodass sie immer am Ende des Renderthreads enden. So sind die Daten plattformübergreifend konsistenter und stimmen besser mit In-App-Messwerten überein. (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 Makro-Benchmark hat jetzt eine
minSdkVersion
von23
. (If2655) - Es wird eine neue experimentelle
BaselineProfileRule
hinzugefügt, mit der Baseline-Profile für die kritische User Journey der App generiert werden können. Eine detaillierte Dokumentation folgt. (Ibbefa, b/203692160) - Die Schnittstellenvariante „measureRepeated“ wurde entfernt, die für Java-Caller hinzugefügt wurde, da sie zu Unklarheiten beim Ausführen/Auflösen der Methode führte. Java-Aufrufer müssen wieder Unit.Instance von measureRepeated zurückgeben. Wenn Sie das als störend empfinden, können Sie einen Fehler melden. Wir werden das in einer zukünftigen Version prüfen. (Ifb23e, b/204331495)
Version 1.1.0-alpha10
27. Oktober 2021
androidx.benchmark:benchmark-*:1.1.0-alpha10
wird veröffentlicht. Version 1.1.0-alpha10 enthält diese Commits.
API-Änderungen
- Backport von StartupTimingMetric, um auf API 23 zurückzuportieren. Bei dieser neuen Implementierung wird „reportFullyDrawn()“ auch besser verarbeitet, um zu warten, bis die entsprechenden Inhalte gerendert wurden. (If3ac9, b/183129298)
- JvmOverloads wurde mehreren MacrobenchmarkScope-Methoden für Java-Caller 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
- Fehlerbehebung für nicht früh genug gestartete Traces und fehlende Messwertdaten. Dadurch werden voraussichtlich Ausnahmen vom Typ „Keine Messwerte während des Benchmarks gelesen“ behoben, die von der Bibliothek selbst verursacht wurden. (I6dfcb, b/193827052, b/200302931)
- „FrameNegativeSlack“ wurde in „FrameOverrun“ umbenannt, um seine Bedeutung zu verdeutlichen: um wie viel 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
wird 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)
- Benutzeroberfläche und JSON-Ausgabe um einen neuen Typ von Stichprobenmesswert ergänzt, der sich auf die Perzentile mehrerer Stichproben pro Iteration konzentriert. (I56247, b/199940612)
- In den Benchmark-Bibliotheken zu Gleitkommamesswerten wechseln (in der Studio-Benutzeroberfläche werden sie abgeschnitten). (I69249, b/197008210)
Version 1.1.0-alpha07
1. September 2021
androidx.benchmark:benchmark-*:1.1.0-alpha07
wird veröffentlicht. Version 1.1.0-alpha07 enthält diese Commits.
API-Änderungen
- Das 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-Anzahl 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: Es ist auch eine Aktualisierung aufandroidx.profileinstaller:profileinstaller:1.1.0-alpha04
oder höher erforderlich.- 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
wird veröffentlicht. Version 1.1.0-alpha06 enthält diese Commits.
API-Änderungen
- Das Instrumentierungsargument
androidx.benchmark.iterations
wurde hinzugefügt, um die Iterationszahl beim lokalen Testen/Profilieren manuell zu überschreiben. (6188be, b/194137879)
Fehlerkorrekturen
- Simpleperf ist ab API 29 der Standard-Stichproben-Profiler. (Ic4b34, b/158303822)
Bekannte Probleme
CompilationMode.BaselineProfile
ist noch in der Entwicklung. Verwenden Sie sie vorerst nicht, um zu bestimmen, wie gut ein Profil ist.
Version 1.1.0-alpha05
4. August 2021
androidx.benchmark:benchmark-*:1.1.0-alpha05
wird veröffentlicht. Version 1.1.0-alpha05 enthält diese Commits.
1.1.0-alpha04
wurde vor der Veröffentlichung aufgrund eines sporadisch auftretenden Absturzes abgebrochen. b/193827052
API-Änderungen
- startActivityAndWait wurde durch das Aufrufen des Starts über
am start
ersetzt. Dadurch wird die Zeit für jede Messiteration um etwa 5 Sekunden verkürzt. Allerdings werden Intent-Parcelables nicht mehr unterstützt. (I5a6f5, b/192009149
Fehlerkorrekturen
- Die Aggressivität der Erkennung von thermischer Drosselung verringern und den Baseline-Wert neu berechnen, wenn häufig Drosselungen erkannt werden. (I7327b)
- FrameTimingMetric funktioniert jetzt auch unter Android S Beta (Ib60cc, b/193260119)
- 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 Ablaufverfolgungsdatei wurde in
.perfetto-trace
geändert, um dem Plattformstandard zu entsprechen. (I4c236, b/174663039) - Der Messwert „StartupTimingMetric“ gibt jetzt den Messwert „fullyDrawnMs“ aus, um die Zeit bis zum vollständigen Rendern der Anwendung zu messen. Wenn Sie diesen Messwert für Ihre App definieren möchten, rufen Sie Activity.reportFullyDrawn auf, wenn die ursprünglichen Inhalte bereit sind, z. B. wenn die ursprünglichen Listenelemente aus der Datenbank oder dem Netzwerk geladen werden. Die Methode reportFullyDrawn ist ohne Build-Versionsprüfungen für ComponentActivity verfügbar. 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 des Tracings, wodurch sich die Benchmarklaufzeit beim Start beispielsweise um mehr als 30 % verringern kann (Idfbc1, b/193723768)
Version 1.1.0-alpha03
16. Juni 2021
androidx.benchmark:benchmark-*:1.1.0-alpha03
wird veröffentlicht. Version 1.1.0-alpha03 enthält diese Commits.
Neue Funktionen
- Es wurde eine neue
CompilationMode.BaselineProfile
hinzugefügt, um Profile zu unterstützen, die mit der Jetpack ProfileInstaller-Bibliothek installiert wurden. (aosp/1720930)
Fehlerkorrekturen
Der Beispiel-Gradle-Code zum Unterdrücken von Benchmark-Fehlern wurde aktualisiert, um eine nicht eingestellte API mit einer Syntax zu verwenden, 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 beim Benchmarking eine wichtige Komponente dar: MacroBenchmark. Neben dem Benchmarking, mit dem Sie CPU-Schleifen messen können, können Sie mit MacroBenchmark auch App-Interaktionen wie Starten und Scrollen messen und Traces erfassen. Weitere Informationen finden Sie in der Dokumentation zur Bibliothek.
androidx.benchmark:benchmark-*:1.1.0-alpha02
wird veröffentlicht. Version 1.1.0-alpha02 enthält diese Commits.
Neue Funktionen
Makrobenchmark-Artefakte hinzugefügt (androidx.benchmark:benchmark-macro-junit4
und androidx.benchmark:benchmark-macro
)
- Leistungsmesswerte für Start, Scrollen und Animationen Ihrer App lokal oder in der CI erfassen
- Traces in Android Studio erfassen und prüfen
Fehlerkorrekturen
- Problembehebung für Shell-Berechtigungen mit Ausgabeverzeichnis unter Android 12 (Hinweis: Es kann erforderlich sein, das Android Gradle-Plug-in auf Version 7.0.0 Canary und Android Studio auf Arctic Fox (2020.3.1) zu aktualisieren, um weiterhin Ausgabedateien auf betroffenen Geräten zu erfassen). (Icb039)
- Unterstützung für das Caching von Konfigurationen im BenchmarkPlugin (6be1c1, b/159804788)
- Vereinfachte Dateiausgabe – standardmäßig aktiviert, in einem Verzeichnis, für das keine
requestLegacyExternalStorage=true
erforderlich ist (8b5a4d, b/172376362) - Behebung eines Problems, bei dem die Bibliothek Logcat-Warnungen zum Nichtfinden des JIT-Threads auf Plattformversionen druckte, auf denen er nicht vorhanden ist. (I9cc63, b/161847393)
- Fehler beim Lesen der maximalen Gerätehäufigkeit 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
werden losgelassen. Version 1.1.0-alpha01 enthält diese Commits.
Neue Funktionen in Version 1.1
- Zuweisungsmesswert: Bei Benchmarks wird jetzt nach der Aufwärmphase und der Zeitmessung eine zusätzliche Phase ausgeführt, in der die Zuweisungszahlen erfasst werden. Zuweisungen können bei älteren Versionen der Plattform zu Leistungsproblemen führen (140 ns in O wurden zu 8 ns in M – gemessen auf Nexus 5X mit gesperrten Taktgebern). Dieser Messwert wird in der Android Studio-Konsolenausgabe und in der
- Profilierungsunterstützung: Sie können jetzt Profildaten für einen Benchmarklauf 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 > Open (Datei > Öffnen).
- Das Benchmark-Gradle-Plug-in bietet jetzt Standardeinstellungen für eine einfachere Einrichtung:
testBuildType
ist standardmäßig auf „Release“ gesetzt, um die Verwendung von Abhängigkeiten mit integrierter Codeabdeckung zu vermeiden. Der Release-BuildType wird auch als Standard-BuildType konfiguriert. So kann Android Studio beim ersten Öffnen eines Projekts automatisch die richtige Buildvariante auswählen. (b/138808399)signingConfig.debug
wird als Standardsignaturkonfiguration verwendet (b/153583269).
** Fehlerkorrekturen **
- Der Overhead bei der Aufwärmphase wurde deutlich reduziert, bei der die erste Messung für jeden Benchmark künstlich höher war als die anderen. Dieses Problem trat in sehr kleinen Benchmarks (maximal 1 Mikrosekunde) aus. (b/142058671)
- Der
InstrumentationResultParser
-Fehler, der bei der Ausführung über die Befehlszeile für jeden Benchmark ausgegeben wurde, wurde behoben. (I64988, b/154248456)
Bekannte Probleme
- Bei Befehlszeilen- und Gradle-Aufrufen von Benchmark werden die Ergebnisse nicht direkt ausgegeben. 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, die dieses Problem haben, sollten das Android Gradle-Plug-in auf Version 4.2-alpha01 oder höher aktualisieren.
Version 1.0.0
Benchmark Version 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
werden unverändert von 1.0.0-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.
So werden Build- und Laufzeitkonfigurationsprobleme verhindert und die Geräteleistung stabilisiert, damit die Messungen genau und konsistent sind. Führen Sie die Benchmarks direkt in Android Studio oder in Continuous Integration aus, um die Codeleistung im Zeitverlauf zu beobachten und Rückschritte zu vermeiden.
Zu den wichtigsten Funktionen gehören:
- Taktgeberstabilisierung
- Automatische Thread-Priorisierung
- Unterstützung für UI-Leistungstests, wie im RecyclerView-Beispiel
- JIT-fähiges Aufwärmen und Looping
- JSON-Benchmarkausgabe 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
werden losgelassen. Version 1.0.0-rc01 enthält diese Commits.
Neue Funktionen
- Systrace-Tracing zu Benchmarks hinzugefügt
Fehlerkorrekturen
- Behoben wurde ein Problem mit instabilen Messwerten, bei dem die JIT-Optimierung aufgrund einer Herabstufung der Priorität nicht vor dem Warm-up abgeschlossen 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 Warm-up eine Garbage Collection aus, um den Speicherdruck von einem Benchmark zum nächsten zu verringern (b/140895105)
Fehlerkorrekturen
- Es wurde eine
androidx.annotation:android-experimental-lint
-Abhängigkeit hinzugefügt, damit Java-Code korrekt Lint-Fehler generiert, wenn die experimentelle API nicht verwendet wird. Das entspricht der Kotlin-Anmerkung „experimental“ für Kotlin-Aufrufer. - Im Android Gradle-Plug-in 3.6 wird jetzt die Verwendung des
additionalTestOutputDir
-Instrumentierungsarguments für die Ausgabe korrekt erkannt, um zu ermitteln, wann AGP die Datenkopie verarbeitet. - Fehler bei der nicht erkannten Taktfrequenz in JSON beheben, damit
-1
korrekt ausgegeben 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
werden losgelassen. Version 1.0.0-alpha06 enthält diese Commits.
Neue Funktionen
- Es wurde eine Prüfung für die fehlerhafte Verwendung des alten Pakets für den Test-Runner hinzugefügt, wodurch jetzt eine hilfreichere Fehlermeldung angezeigt wird.
API-Änderungen
- Die experimentelle Anmerkung
ExperimentalAnnotationReport
ist jetzt korrekt öffentlich. Für die Verwendung der experimentellen BenchmarkState#report API ist jetzt diese Anmerkung 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
werden losgelassen. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- Die
BenchmarkState.reportData
API ist jetzt als experimentell gekennzeichnet
Fehlerkorrekturen
- Fehlerbehebung beim Skript zum Sperren der Uhr, das auf Geräten fehlgeschlagen ist, auf denen entweder die
cut
- oder dieexpr
-Shell-Dienstprogramme fehlten. - Ein Problem mit der
./gradlew lockClocks
-Aufgabe wurde behoben, das auf Geräten auftrat, die mit einer älteren Version des su-Dienstprogramms gerootet wurden, das das-c
-Flag nicht unterstützte.
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
werden losgelassen. Die in dieser Version enthaltenen Commits finden Sie hier.
Außerdem wurde 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 der CI. Weitere Informationen finden Sie unter Benchmarks ohne Gradle erstellen und Benchmarks in Continuous Integration ausführen.
Neue Funktionen
- Gradle-Plug-in
- 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 Verwendung von AGP 3.6+
- Deaktiviert jetzt automatisch die Testabdeckung und legt standardmäßig
- Ergänzungen zum JSON-Format
- Gesamtlaufzeit des Benchmark-Tests ausgeben (b/133147694)
- Bei
@Parameterized
-Benchmarks, die einen Namensstring verwenden (z. B.@Parameters(name = "size={0},depth={1}")
), werden jetzt Parameternamen und ‑werte pro Benchmark in der JSON-Ausgabe ausgegeben (b/132578772)
- Probelaufmodus (b/138785848)
- Es wurde ein Probelaufmodus hinzugefügt, in dem jede Benchmark-Schleife nur einmal ausgeführt wird, um nach Fehlern/Abstürzen zu suchen, ohne Messungen zu erfassen. Das kann beispielsweise nützlich sein, um Benchmarks vor dem Einreichen schnell auszuführen und zu prüfen, ob sie funktionieren.
API-Änderungen
- Die Modulstruktur hat sich geändert, wodurch die Bibliothek aufgeteilt wurde (b/138451391)
benchmark:benchmark-junit4
enthält Klassen mit JUnit-Abhängigkeit:AndroidBenchmarkRunner
undBenchmarkRule
, die beide in das Paketandroidx.benchmark.junit4
verschoben wurden.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).
- Dies soll zu genaueren Messungen beitragen, insbesondere bei CI.
- Diese Fehler können mit einem Instrumentierungsargument wieder zu Warnungen herabgestuft werden. Beispiel:
-e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"
Fehlerkorrekturen
- Bei Fehlern beim Schreiben auf externen Speicher auf Q-Geräten werden jetzt aussagekräftigere Meldungen mit Vorschlägen zur Behebung des Problems angezeigt.
- Bildschirme werden während Benchmark-Tests automatisch eingeschaltet, anstatt zu versagen, wenn das Display ausgeschaltet ist
Externe Beiträge
- Vielen Dank an Sergey Zakharov für die Verbesserungen bei der JSON-Ausgabe und die Behebung von Problemen bei deaktiviertem 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
werden freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Im vollständigen JSON-Bericht die Ruhezeit aufgrund von thermischer Drosselung pro Benchmark 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 befristetem 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
werden veröffentlicht. Die Commits, die in dieser Version enthalten sind, finden Sie hier.
Hinweis: Wir behandeln das JSON-Schema als API. Wir planen, dieselben Stabilitätsanforderungen wie bei anderen APIs einzuhalten: Die API ist einmal in der Betaversion (mit sehr seltenen Ausnahmen) stabil und in der finalen Version fehlerfrei. In Nebenversionen werden nur Ergänzungen und in Hauptversionen Änderungen/Entfernungen vorgenommen.
API-Änderungen
Überarbeitetes JSON-Schema. Weitere Änderungen am JSON-Schema beschränken sich wahrscheinlich auf Ergänzungen:
- Die Struktur des Ergebnisobjekts wurde neu organisiert, um in Zukunft zusätzliche Messwertgruppen zu unterstützen (b/132713021).
- Dem Objekt der obersten Ebene wurden Kontextinformationen für den Testlauf hinzugefügt, z. B. Geräte- und Build-Informationen sowie Informationen dazu, ob die Uhren gesperrt sind (b/132711920)
- Die Namen von Zeitmesswerten enthalten jetzt „ns“ (b/132714527)
- Es wurden zusätzliche Statistiken pro gemeldetem Messwert hinzugefügt (Maximum, Median, Minimum) und die vereinfachte Zusammenfassungsstatistik „Nanos“ entfernt (b/132713851).
XML-Ausgabe entfernt (b/132714414)
Die Erkennung von thermischer Drosselung wurde aus der
BenchmarkState.reportData
API entfernt (b/132887006)
Fehlerkorrekturen
- Behoben, dass
./gradlew lockClocks
auf einigen Geräten mit neueren Betriebssystemen nicht angezeigt wurde (b/133424037) - Drosselungserkennung für Emulator deaktiviert (b/132880807)
Version 1.0.0-alpha01
7. Mai 2019
androidx.benchmark:benchmark:1.0.0-alpha01
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.