Benchmark
In Android Studio kannst du die Leistung deines Codes präzise messen.
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.

Neues Problem erstellen

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 und isDebuggable wird jetzt immer sowohl in Benchmark- als auch in nonMinified-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 von androidx.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 wird CaptureInfo 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 wartet MacrobenchmarkScope.killProcess() (einschließlich der Funktion, die vor jeder Iteration ausgeführt wird, um das Verhalten von StartupMode.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 und unlockClocks 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 Argument skipBenchmarksOnEmulator 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ür MacrobenchmarkRule.measureRepeated() wurde in das neue ExperimentalConfig-Objekt verschoben.

Fehlerkorrekturen

  • Anzahl der lockClocks.sh-Wiederholungen erhöhen (99e9dac)
  • Erstellen Sie keine nonMinified- und Benchmark-Build-Typen, falls vorhanden. Aufgrund eines Fehlers wurden nonMinified- 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 Instrumentierungsargument cpuEventCounter.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… und benchmark… 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, wenn automaticGenerationDuringBuild 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 in build.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 über InstrumentationArgument androidx.benchmark.cpuEventCounter.enable (kann auf true festgelegt werden) und androidx.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.

Ä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ür measureBlocks 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)
  • Das ART-Profil muss während der einzelnen warmUp-Iterationen korrekt gedumpt werden, wenn der Prozess beendet wird, damit die CompilationMode.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 in StartupMode.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 benutzerdefinierte PerfettoConfig 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.
  • Messwerte
    • Energiesparmodus: PowerMetric.deviceSupportsHighPrecisionTracking, PowerMetric.deviceBatteryHasMinimumCharge() und PowerMetric.deviceSupportsPowerEnergy() wurden hinzugefügt
    • Metric.getResult wurde in getMeasurements 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 zu FrameTimingMetric 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)

Ä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 und mergeStartupProfile 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 einen nonMinified- 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 in TraceProcessor 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.ID
      • context.build.version.codename – Ist gleich android.os.Build.VERSION.CODENAME
      • context.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)

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 Instrumentierungsargument cpuEventCounter.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 in AFFECTS_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 über ProfilerConfig.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 gleich android.os.Build.ID
    • context.build.version.codename – Ist gleich android.os.Build.VERSION.CODENAME
    • context.build.version.abbreviatedCodename – entspricht dem ersten Buchstaben des Pre-Release-Codenamens (auch bei Release-Builds) (Ie5020)
  • StackSampling berücksichtigt jetzt androidx.benchmark.profiling.sampleDurationSeconds (Ib1d53)
  • Ändern Sie „macro->common dependency“ in „api()“, damit Sie z.B. PerfettoTrace und PerfettoConfig leichter verwenden können. (Icdae3, b/341851833)
  • Achten Sie darauf, dass die Aufgaben mergeArtProfile und mergeStartupProfile 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 benutzerdefinierte PerfettoConfig 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 in PowerMetric.deviceSupportsHighPrecisionTracking um (I5b82f).
  • Die Optionen PowerMetric.deviceBatteryHasMinimumCharge() und PowerMetric.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 in getMeasurements 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 einen nonMinified- 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 mit Trace.{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 zu FrameTimingMetric 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 von FrameTimingMetric 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 bei StartupMode.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 auf 500 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 von StartupMode.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

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 experimentellen BaselineProfileRule.collectBaselineProfile API.
    • Geben Sie einfach packageName an und starten Sie Ihre App.
  • 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 und MethodTracing.
    • 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 mit StartupMode.COLD wirkt sich das Timing erheblich aus, da die Tracing-Bibliothek beim Start der App geladen und aktiviert wird.
  • 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.
  • Neue experimentelle Metrics APIs

    • Die experimentelle Funktion TraceSectionMetric wurde hinzugefügt, mit der sich einfache Zeitangaben aus trace("") {}-Blöcken in Ihrer App extrahieren lassen. Mit TraceMetric können Sie die vollständigen Abfragefunktionen von Perfetto TraceProcessor 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
  • 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 über MacrobenchmarkScope.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 von BenchmarkRule ohne JUnit hinzugefügt.
    • Es wurde ein experimenteller PerfettoTrace-Eintrag hinzugefügt, um Perfetto-Traces mit benutzerdefinierter Konfiguration getrennt von Benchmark-APIs zu erfassen.
  • 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 von IsolationActivity 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 in perfettoSdkTracing.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 einer api- statt einer implementation-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ßt frameDurationCpuMs. (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 in BaselineProfileRule.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 mit Mode.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. Die collectStableBaselineProfile API wurde entfernt und sollte stattdessen durch collectBaselineProfile ersetzt werden. (I17262, b/281078707)
  • Das Argument filterPredicate von BaselineProfileRule 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 in dryRunMode, 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 und androidx.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ährend RenderThread 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 waren UiAutomation-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 und BaselineProfileRule 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 Instrumentierungsargument androidx.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 {} und PerfettoTraceRule 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 ProblemeMacrobenchmarkScope.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 aus StartupMode.COLD-Benchmarks entfernt, da Shader jetzt bei jeder Iteration konsequent gelöscht werden. Bisher wurden bei der Partial-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 von profileinstaller:1.3.0-alpha02 in der Ziel-App erforderlich. Informationen zu API-Änderungen der ProfileInstaller-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, da TraceSectionMetric mit androidx.tracing.Trace zusammenarbeitet, um zu niedrigeren API-Levels bei Verwendung von forceEnableAppTracing 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 dem StartupMode.COLD den Zielprozess nach setupBlock nicht beendet hat. Wenn setupBlock 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 oder CompilationMode.Partial(warmupIterations) auf einem nicht gerooteten Gerät verwenden möchten, müssen Sie auch Ihre Ziel-App auf androidx.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ür FrameOverrun 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 über MacrobenchmarkScope.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 von BenchmarkRule / JUnit4 verwendet werden kann. (Id478f, b/228489614)

Fehlerkorrekturen

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ür MacrobenchmarkScope.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 nur BaselineProfiles 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 und TotalEnergyMetric 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 von 1.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

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

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 Sie BaselineProfiles 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 erschien CompilationMode.Partial() langsamer als Compilation.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 vonStartupMode.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 von androidx.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 kein setup-Block mehr akzeptiert, da dieser genauso funktioniert wie der profileBlock-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 in FrameDurationCpu und FrameUiTime in FrameDurationUi 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- oder androidx.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 als None 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 von 23. (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 mit CompilationMode.BaselineProfile leichter ausführen können. (I42657, b/196074999) HINWEIS: Es ist auch eine Aktualisierung auf androidx.profileinstaller:profileinstaller:1.1.0-alpha04 oder höher erforderlich.
  • Die Benchmarks für StartupMode.COLD und CompilationMode.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

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 so CompilationMode.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

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:

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 die expr-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+
  • 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 und BenchmarkRule, die beide in das Paket androidx.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.