Benchmark

Mesurez avec précision les performances de votre code dans Android Studio.
Dernière mise à jour Version stable Version finale Version bêta Version alpha
20 mars 2024 1.2.3 - - 1.3.0-alpha02

Déclarer des dépendances

Pour ajouter une dépendance à Benchmark, vous devez ajouter le dépôt Maven de Google à votre projet. Consultez Dépôt Maven de Google pour en savoir plus.

Macrobenchmark

Pour utiliser Macrobenchmark dans votre projet, ajoutez les dépendances suivantes au fichier build.gradle de votre module Macrobenchmark:

Groovy

dependencies {
  androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.2.3"
}

Kotlin

dependencies {
  androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.2.3")
}

Microbenchmark

Pour utiliser Microbenchmark dans votre projet, ajoutez les dépendances suivantes au fichier build.gradle de votre module microbenchmark:

Groovy

dependencies {
    androidTestImplementation "androidx.benchmark:benchmark-junit4:1.2.3"
}

android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner"
    }
}

Kotlin

dependencies {
    androidTestImplementation("androidx.benchmark:benchmark-junit4:1.2.3")
}

android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner"
    }
}

La bibliothèque Microbenchmark fournit également un plug-in Gradle à utiliser avec votre module de microbenchmark. Ce plug-in définit les valeurs par défaut de la configuration de compilation pour le module, configure une copie de sortie de benchmark sur l'hôte et fournit la tâche ./gradlew lockClocks.

Pour utiliser le plug-in, incluez la ligne suivante dans le bloc "plugins" de votre fichier build.gradle de premier niveau :

Groovy

plugins {
  id 'androidx.benchmark' version '1.2.3' apply false
}

Kotlin

plugins {
  id("androidx.benchmark") version "1.2.3" apply false
}

Appliquez ensuite le plug-in au fichier build.gradle de votre module de benchmark.

Groovy

plugins {
  id 'androidx.benchmark'
}

Kotlin

plugins {
    id("androidx.benchmark")
}

Commentaires

Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.

Signaler un nouveau problème

Pour en savoir plus, consultez les documents sur l'outil Issue Tracker.

Version 1.3

Version 1.3.0-alpha02

20 mars 2024

Publication d'androidx.benchmark:benchmark-*:1.3.0-alpha02. La version 1.3.0-alpha02 contient ces commits.

Nouvelles fonctionnalités

  • Prise en charge expérimentale de R8 dans le microbench via des règles ProGuard intégrées. Notez que cette prise en charge est expérimentale et nécessite AGP 8.3 pour minimiser les tests du module de bibliothèque. Utilisez les éléments suivants pour activer la minimisation/l'optimisation de R8 dans le build.gradle de votre module de benchmark, ce qui devrait entraîner une amélioration significative des performances, en fonction de la charge de travail. (I738a3, b/184378053).

    android {
        buildTypes.release.androidTest.enableMinification = true
    }
    

Correction de bugs

  • Correction de l'avertissement de traçage de méthode sur une ligne distincte de la sortie microbench. (I0455c, b/328308833).

Version 1.3.0-alpha01

21 février 2024

Publication d'androidx.benchmark:benchmark-*:1.3.0-alpha01. Liste des commits de la version 1.3.0-alpha01

Modifications apportées à l'API

  • Changement de nom : les paramètres booléens MicrobenchmarkConfig évitent le mot inutile "should" (Ia8f00, b/303387299).
  • Ajout de BenchmarkRule.measureRepeatedOnMainThread pour que les analyses comparatives des threads principaux (par exemple, celles qui touchent les vues ou les interfaces utilisateur Compose) puissent éviter de déclencher des ANR, en particulier dans les suites volumineuses dans l'intégration continue. (I5c86d).
  • Ajout de FrameTimingGfxInfoMetric, une autre implémentation expérimentale de FrameTimingMetric avec des mesures provenant directement de la plate-forme plutôt que extraites de la trace Perfetto. (I457cb, b/322232828).
  • Ajout de la possibilité de vider un profil ART lors des itérations warmUp individuelles. (I17923).
  • Plusieurs modifications ont été apportées à l'API TraceSectionMetric :
    • Ajouter Mode.Min et Mode.Max
    • Ajouter un argument de libellé pour remplacer le nom de la section en tant que libellé de métrique
    • Ajout d'un nom de mode à la sortie pour clarifier la signification des métriques
    • Modification de la valeur par défaut pour indiquer la somme, car la plupart de cette métrique est utilisée pour des événements répétés. Tenez compte de ces changements dans l'utilisation de la CI, car cela peut créer des discontinuités ou interrompre l'analyse. (Ic1e82, b/301892382, b/301955938).

Correction de bugs

  • Amélioration du message d'erreur dans le plug-in Baseline Profile Gradle lorsque l'appareil géré spécifié n'existe pas. (Idea2b, b/313803289)
  • Correction de l'inclusion des profils de référence de bibliothèque dans l'AAR avant AGP 8.3.0-alpha15. (I1d2af, b/313992099)
  • Correction de l'URL de sortie du profil de démarrage et de référence à la fin de la tâche de génération. (I802e5, b/313976958)
  • Ajustement des délais avant expiration de la source de données pour tenter de corriger java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)]. (I8dc7d, b/323601788)
  • Ajoutez deux arguments d'instrumentation pour remplacer le comportement d'abandon du nuanceur afin de contourner les plantages lors de l'analyse comparative d'applications sans ProfileInstaller 1.3 :
    • androidx.benchmark.dropShaders.enable=true/false : permet d'ignorer la suppression du nuanceur (y compris celle effectuée lors des lancements de StartupMode.Cold), en particulier lors de l'analyse comparative d'applications qui n'utilisent pas encore profileinstaller 1.3
    • androidx.benchmark.dropShaders.throwOnFailure=true/false : permet de tolérer des échecs lors de la tentative de suppression de nuanceurs, par exemple lors de l'analyse comparative d'applications sans profileinstaller 1.3. (I4f573)
  • Ignorez le traçage des méthodes sur le thread UI s'il devrait prendre plus de quelques secondes, et effacez les traces de la méthode de nettoyage lors de la génération. (I6e768).
  • À générer lorsque les noms de fichiers dépassent 200 caractères pour éviter les plantages peu clairs lors de l'écriture ou du post-traitement de fichiers. (I4a5ab).
  • Correction d'un problème qui provoquait l'association de plusieurs frames non arrêtés au début et à la fin de la trace, qui étaient signalés à tort comme un seul frame extrêmement long. (I39353, b/322232828).
  • Utilisez --skip verification sur l'API 30 ou une version ultérieure lors de la réinstallation d'un package sur les niveaux d'API 30 à 33 pour effacer les profils ART sur les builds utilisateur. Cela permet de contourner les avertissements Play Protect qui provoquent des défaillances sur une certaine classe d'appareils. (Ic9e36).
  • Utilisez am force-stop pour fermer les applications qui ne sont pas des applications système, comme l'UI du système ou le lanceur d'applications. (I5e028).
  • Macrobenchmark attend désormais que 1 second vienne vider un profil ART (auparavant, il attendait 500 ms). (I85a50, b/316082056)
  • Amélioration de l'erreur FrameTimingMetric lorsque les frames ne sont pas générés, et sortie systématiquement du lien pour la trace en cas d'échec de l'analyse des métriques afin de faciliter le diagnostic du problème. (I956b9).
  • Résolution du plantage dans FrameTimingMetric qui ne parvenait pas à analyser l'ID de frame, en particulier sur certains appareils OEM. (Ia24bc, b/303823815, b/306235276).
  • Rigueur assouplie des vérifications dans FrameMetrics et ajout de détails aux messages d'erreur. (Idade).

Version 1.2

Version 1.2.3

24 janvier 2024

Publication d'androidx.benchmark:benchmark-*:1.2.3. Liste des commits de la version 1.2.3

Correction de bugs

  • Suppression de l'exception du plug-in Baseline Profile Gradle lorsqu'AGP est version 8.3.0 ou ultérieure.
  • Correction de l'inclusion des profils de référence de bibliothèque dans l'AAR avant la version 8.3.0-alpha15 d'AGP.

Version 1.2.2

1er décembre 2023

Publication d'androidx.benchmark:benchmark-*:1.2.2. Liste des commits de la version 1.2.2

Profils de référence

  • Les journaux d'exécution affichent le chemin d'accès au fichier de sortie du profil de référence sous la forme d'un URI de fichier local. (aosp/2843918, aosp/2853665, b/313976958)

Version 1.2.1

15 novembre 2023

Publication d'androidx.benchmark:benchmark-*:1.2.1. Liste des commits de la version 1.2.1

Nouvelles fonctionnalités

  • Amélioration du message d'erreur qui s'affiche lorsque l'utilisateur désactive les variantes de test. (b/307478189)
  • Ajout de propriétés pour permettre l'intégration de l'exécution du test AS. (b/309805233) (b/309116324)

Version 1.2.0

18 octobre 2023

Publication d'androidx.benchmark:benchmark-*:1.2.0. Liste des commits de la version 1.2.0

Changements importants depuis la version 1.1.0

Profils de référence

  • Le nouveau plug-in Baseline Profile Gradle automatise la capture et l'inclusion de profils de référence dans votre workflow de test et de compilation.
  • BaselineProfileRule.collect est désormais stable, une version simplifiée et simplifiée de l'API expérimentale BaselineProfileRule.collectBaselineProfile précédente.
    • Il vous suffit de spécifier packageName et de piloter votre application
  • Pour les bibliothèques générant des profils de référence, vous pouvez désormais filtrer les règles générées dans le code (argument BaselineProfileRule.collect), ou encore plus simplement dans le plug-in Gradle.
  • Corrections
    • Correction de la collecte de profils de référence sur Android U+. (Id1392, b/277645214)

Macrobenchmark

  • Compilation
    • Désormais, Macrobenchmark réinitialise correctement l'état de compilation pour chaque compilation. Cela nécessite de réinstaller l'APK antérieur à Android 14. Il est donc vivement recommandé d'effectuer des analyses comparatives sur Android 14 et versions ultérieures si vous souhaitez conserver l'état (comme la connexion utilisateur) dans ce qui est mesuré.
    • Vous pouvez également contourner ce problème en contrôlant la compilation des applications séparément et en ignorant la compilation avec CompilationMode.Ignore() ou l'argument d'instrumentation.
  • Arguments d'instrumentation

    • Prise en charge de l'argument d'instrumentation androidx.benchmark.dryRunMode.enable (déjà disponible dans le microbenchmark) pour des exécutions de validation plus rapides (par exemple, lors de la création du benchmark ou lors de l'envoi préalable).
    • Prise en charge de androidx.benchmark.profiling.mode=StackSampling et MethodTracing.
    • Ajout de androidx.benchmark.enabledRules pour permettre le filtrage de l'environnement d'exécution selon le profil de référence par rapport aux tests de règles macrobenchmark.
    • Ajout de l'argument androidx.benchmark.perfettoSdkTracing.enable pour activer le traçage avec le traçage-perfetto, par exemple le traçage des recompositions dans Compose. Notez que lorsqu'elle est utilisée avec StartupMode.COLD, le timing est considérablement affecté, car la bibliothèque de traçage est chargée et activée au démarrage de l'application.
  • Exigences

    • Macrobenchmark nécessite désormais ProfileInstaller 1.3.0 ou version ultérieure dans l'application cible pour permettre la capture / la réinitialisation du profil et la suppression du cache du nuanceur.
  • Nouvelles API de métriques expérimentales

    • Ajout de la méthode expérimentale TraceSectionMetric, qui permet d'extraire des codes temporels simples à partir des blocs trace("") {} de votre application, ou de TraceMetric pour exploiter la fonctionnalité de requête complète de Perfetto TraceProcessor.
    • Ajout d'une version expérimentale de PowerMetric pour capturer les informations de consommation d'énergie
    • Ajout de la fonction expérimentale MemoryCountersMetric pour compter les erreurs de page.
    • Ajout de l'API expérimentale PerfettoTraceProcessor, utilisée en interne pour extraire les métriques des traces système (également appelées "traces Perfetto")
  • Correctifs

    • Résolution des plantages qui survenaient lors de l'installation ou de l'extraction de profils d'une application installée à partir de plusieurs APK (par exemple, à partir d'un app bundle).
    • Correction de FrameTimingMetric en ignorant les frames avec des ID de frame incohérents (généralement, les frames pendant les ondulations sur l'API 31 et les versions ultérieures). (I747d2, b/279088460)
    • Correction des erreurs d'analyse sur les traces de plus de 64 Mo. (Ief831, b/269949822)
    • Clarification des erreurs lorsque l'image de l'OS de l'appareil (en particulier de l'émulateur) n'est pas correctement configurée pour le traçage ou la compilation
    • Ignorer la vérification du niveau de la batterie pour les appareils sans batterie (micro et macro)
    • Amélioration de la sortie des fichiers, avec des erreurs plus claires pour les répertoires de sortie non valides et des paramètres par défaut plus sûrs
    • Amélioration de la stabilité de StartupMode.COLD grâce à la suppression systématique du cache du nuanceur (également exposé via MacrobenchmarkScope.dropShaderCache)
    • Correction du remplacement Leanback pour startActivityAndWait.

Microbenchmark

  • Fonctionnalités
    • Le profilage a été déplacé dans une phase distincte, après d'autres métriques, de sorte qu'une exécution de test peut afficher à la fois des résultats précis de durée et de profilage.
  • API expérimentales
    • Ajout de l'API expérimentale MicrobenchmarkConfig pour définir des métriques personnalisées et configurer le traçage et le profilage. Peut être utilisé pour capturer des traces de méthode ou capturer des points de trace (tout en tenant compte de la surcharge de traçage).
    • Ajout d'API expérimentales pour contrôler BenchmarkState séparément de BenchmarkRule, sans JUnit.
    • Ajout de l'enregistrement expérimental PerfettoTrace pour permettre la capture des traces Perfetto, avec une configuration personnalisée, distincte des API de benchmark.
  • Corrections
    • Solution de contournement des espaces blancs de début manquants dans la sortie de l'analyse comparative Android Studio.
    • Correction d'un problème qui empêchait l'affichage des avertissements dans le résultat de l'analyse comparative Android Studio.
    • Correction du plantage de SampledProfiling sur Android 13 (API 33) ou version ultérieure.
    • Amélioration considérable des performances de dryRunMode en ignorant IsolationActivity et le traçage Perfetto (mode de simulation jusqu'à 10 fois plus rapide sur les anciennes versions d'OS).

Version 1.2.0-rc02

6 octobre 2023

Publication d'androidx.benchmark:benchmark-*:1.2.0-rc02. Liste des commits de la version 1.2.0-rc02

Correction de bugs

  • Correction de la sortie du fichier d'analyse comparative pour ne plus interrompre la copie du fichier du plug-in BaselineProfile. Des fichiers ont été générés et copiés à partir de l'appareil, mais ont été renommés de sorte que le plug-in Gradle ne les voyait pas. (I8dbcc, b/303034735, b/296453339).
  • Clarification des messages d'erreur de chargement de tracing-perfetto lors de l'injection depuis le module macrobenchmark dans l'application cible.

Version 1.2.0-rc01

20 septembre 2023

Publication d'androidx.benchmark:benchmark-*:1.2.0-rc01. Liste des commits de la version 1.2.0-rc01

Correction de bugs

  • Une exception (avec des instructions pour résoudre ce problème) est désormais générée lorsque le traçage du SDK Perfetto ne s'initialise pas dans un benchmark. (I6c878, b/286228781).
  • Correction du plantage OOM lors de la conversion du format perfetto de la méthode ART trace -> (I106bd, b/296905344).
  • (Macrobenchmark) Clarification du libellé de traçage de méthode lorsqu'il est associé dans la sortie de test Studio et correction des noms de fichiers de traçage de méthode pour qu'ils soient uniques sur l'appareil/l'hôte, afin qu'ils ne soient pas écrasés lorsque plusieurs analyses comparatives sont exécutées. (I08e65, b/285912360).
  • S'assure que l'appareil est activé lors de la capture d'un profil de référence. (I503fc).

Version 1.2.0-beta05

30 août 2023

Publication d'androidx.benchmark:benchmark-*:1.2.0-beta05. Liste des commits de la version 1.2.0-beta05

Nouvelles fonctionnalités

  • Le plug-in Baseline Profile Gradle est désormais compatible avec le plug-in Android Gradle 8.3. (aosp/2715214)

Version 1.2.0-beta04

23 août 2023

Publication d'androidx.benchmark:benchmark-*:1.2.0-beta04. Liste des commits de la version 1.2.0-beta04

Nouvelles fonctionnalités

  • Le plug-in Baseline Profile Gradle est désormais compatible avec le plug-in Android Gradle 8.3. (aosp/2715214)

Correction de bugs

  • Correction des échecs lors de l'écriture/du déplacement et de la récupération de fichiers (en particulier ceux provenant de tests paramétrés) en assainissant davantage les noms de fichiers de sortie, en évitant d'utiliser des '=' et ':'. (I759d8)

Version 1.2.0-beta03

9 août 2023

Publication d'androidx.benchmark:benchmark-*:1.2.0-beta03. Liste des commits de la version 1.2.0-beta03

Modifications apportées à l'API

  • Ajout d'un argument pour filtrer TraceSectionMetric uniquement sur le package cible, activé par défaut (Ia219b, b/292208786)

Correction de bugs

  • L'argument d'instrumentation fullTracing.enable a été renommé perfettoSdkTracing.enable pour plus de cohérence avec le nom de l'artefact et d'autres références. fullTracing.enable continuera de fonctionner comme une solution de secours. (I7cc00)
  • Les points de trace internes de la bibliothèque Benchmark (y compris le traçage des boucles/phases des microbenchmarks) apparaissent désormais dans le lecteur de traces du système Studio et s'imbriquent dans le bon processus dans Perfetto. (I6b2e7, b/293510459)
  • Suppression de l'erreur NOT-PROFILEABLE du macrobenchmark sur les API de niveau 31 ou plus, et passe la vérification du profilage sur les appareils eng/userdebug en mode root. (I2abac, b/291722507)
  • Lors de l'utilisation des optimisations de mise en page DEX, les règles de profil de démarrage sont désormais également considérées comme des règles de profil de référence. (aosp/2684246, b/293889189)

Version 1.2.0-beta02

26 juillet 2023

Publication d'androidx.benchmark:benchmark-*:1.2.0-beta02. Liste des commits de la version 1.2.0-beta02

Modifications apportées à l'API

  • Ajout d'API expérimentales pour la configuration et les métriques personnalisées de microbench (par exemple, le profileur et le traçage). (I86101, b/291820856)

Correction de bugs

  • Signalement d'une erreur dans macrobench lorsque l'OS est mal configuré pour le traçage, comme cela a été récemment corrigé dans les émulateurs ARM64 pour les API 26/28. (I0a328, b/282191686)
  • Ajout de précisions sur l'échec de la réinitialisation de la compilation pour suggérer la mise à jour de l'émulateur, car certains émulateurs ont récemment corrigé ce problème. (I8c815, b/282191686)
  • Fait d'androidx.test.uiautomator:uiautomator:2.2.0 une api plutôt qu'une dépendance implementation. (I1981e)

Version 1.2.0-beta01

18 juillet 2023

Publication d'androidx.benchmark:benchmark-*:1.2.0-beta01. Liste des commits de la version 1.2.0-beta01

Correction de bugs

  • Correction des avertissements qui sont parfois supprimés dans la sortie du benchmark dans Studio, et contournement des espaces blancs dans la sortie du benchmark qui n'apparaissent pas dans Studio. (Ia61d0, b/227205461, b/286306579, b/285912360)
  • Correction du commentaire pour FrameTimingMetric. La sous-métrique est nommée frameDurationCpuMs. (Ib097f, b/288830934).

Version 1.2.0-alpha16

21 juin 2023

Publication d'androidx.benchmark:benchmark-*:1.2.0-alpha16. Liste des commits de la version 1.2.0-alpha16

Modifications apportées à l'API

  • L'API BaselineProfileRule.collectBaselineProfile() a été renommée BaselineProfileRule.collect(). (I4b665)

Correction de bugs

  • Prise en charge du macrobenchmark pour androidx.benchmark.profiling.mode = MethodTracing. (I7ad37, b/285912360)
  • Le profilage des microbenchmarks a été déplacé dans une phase distincte, de sorte qu'il se produit après la mesure, au lieu de la remplacer. Les sections de trace MethodTracing sont désormais incluses dans la trace Perfetto capturée, le cas échéant. (I9f657, b/285014599)
  • Ajout de la mesure de comptage à TraceSectionMetric avec Mode.Sum. (Ic121a, b/264398606)

Version 1.2.0-alpha15

7 juin 2023

Publication d'androidx.benchmark:benchmark-*:1.2.0-alpha15. Liste des commits de la version 1.2.0-alpha15

Nouvelles fonctionnalités

  • Ajout d'un MemoryUsageMetric expérimental pour suivre l'utilisation de la mémoire d'une application cible. (I56453, b/133147125, b/281749311)
  • Ajout de la prise en charge des configurations Perfetto entièrement personnalisées avec PerfettoTrace.record. (If9d75, b/280460183)
  • Ajout d'une propriété pour ignorer la génération de profils de référence. Utilisation : ./gradlew assemble -Pandroidx.baselineprofile.skipgeneration. (I37fda, b/283447020)

Modifications apportées à l'API

  • L'API collectBaselineProfile ne génère que des profils de référence stables. L'API collectStableBaselineProfile a été supprimée. Il faut dorénavant utiliser collectBaselineProfile. (I17262, b/281078707)
  • Modification de l'argument filterPredicate de BaselineProfileRule pour qu'il soit non nul, avec une valeur par défaut équivalente afin que le comportement du filtre par défaut soit plus clair dans la documentation. (I3816e)

Correction de bugs

  • Désactivation d'IsolationActivity et du traçage Perfetto dans dryRunMode pour améliorer grandement les performances, étant donné qu'il s'agit de la majeure partie du temps d'exécution. (Ie4f7d)
  • Prise en charge de l'échantillonnage de la pile d'appel dans les Macrobenchmarks à l'aide des arguments de test d'instrumentation androidx.benchmark.profiling.mode=StackSampling et androidx.benchmark.profiling.sampleFrequency. (I1d13b, b/282188489)
  • Correction d'un plantage lors de l'abandon de nuanceurs sur Android U (API 34), ainsi que sur les émulateurs. (I031ca, b/274314544)

Version 1.2.0-alpha14

3 mai 2023

Publication d'androidx.benchmark:benchmark-*:1.2.0-alpha14. Liste des commits de la version 1.2.0-alpha14

Correction de bugs

  • Correction de FrameTimingMetric ignorant les cadres avec des ID de cadre incohérents. Sur les versions récentes de la plate-forme (API 31 et ultérieures), certaines animations pouvaient ignorer plusieurs cadres pendant l'animation de RenderThread (par exemple, lors d'une ondulation). (I747d2, b/279088460)
  • Correction de l'analyse du processeur de traces pour les traces de plus de 64 Mo. (Ief831, b/269949822)
  • Correction de l'échec de la génération du profil de référence sur Android U en raison de différentes sorties de la commande pm dump-profiles. (Id1392, b/277645214)
  • Correction du script de verrouillage de l'horloge du GPU pour comparer correctement les chaînes. (I53e54, b/213935715)

Version 1.2.0-alpha13

5 avril 2023

Publication d'androidx.benchmark:benchmark-*:1.2.0-alpha13. Liste des commits de la version 1.2.0-alpha13

Modifications apportées à l'API

  • Ajout d'un paramètre de type de profil lors de la génération de profils de référence afin de prendre en charge la prochaine fonctionnalité de profil de démarrage. (Ie20d7, b/275093123)
  • Ajout d'une nouvelle API TraceMetric expérimentale pour définir des métriques entièrement personnalisées basées sur le contenu d'une trace Perfetto. (I4ce31, b/219851406)
  • Ajout d'une mesure expérimentale pour déterminer le nombre d'erreurs de page au cours d'un benchmark. (I48db0)

Version 1.2.0-alpha12

22 mars 2023

Publication d'androidx.benchmark:benchmark-*:1.2.0-alpha12. Liste des commits de la version 1.2.0-alpha12

Nouvelles fonctionnalités

  • Le nouveau plugin Baseline Profile Gradle est disponible en version alpha, facilitant la génération d'un profil de référence et simplifiant le flux de travail des développeurs.

Modifications apportées à l'API

  • Suppression de la prise en charge du traçage Perfetto sur les API 21 et 22, ce qui inclut à la fois les microbenchmarks et les API PerfettoTrace expérimentales. Avant cette version, les connexions UiAutomation n'étaient pas fiables sur certains appareils. (I78e8c)
  • Ajout d'une API PerfettoTraceProcessor publique expérimentale pour activer l'analyse du contenu de la trace. Il s'agit d'une étape vers des métriques entièrement personnalisées basées sur les données de traçage de Perfetto. (I2659e, b/219851406)

Version 1.2.0-alpha11

8 mars 2023

Publication d'androidx.benchmark:benchmark-*:1.2.0-alpha11. Liste des commits de la version 1.2.0-alpha11

Correction de bugs

  • Résolution des plantages dans MacrobenchmarkRule et BaselineProfileRule lors de la réinstallation ou de l'extraction de profils à partir d'un app bundle contenant plusieurs APK. (I0d8c8, b/270587281)

Version 1.2.0-alpha10

22 février 2023

Publication d'androidx.benchmark:benchmark-*:1.2.0-alpha10. Liste des commits de la version 1.2.0-alpha10

Nouvelles fonctionnalités

  • Sur Android 14 et versions ultérieures, Macrobenchmark ne réinstalle plus les applications cibles pour réinitialiser l'état de la compilation, grâce à une nouvelle fonctionnalité de plate-forme. Auparavant, il était nécessaire de disposer d'un appareil en mode root ou de supprimer tout état de l'application (par exemple, la connexion de l'utilisateur) avant chaque benchmark. (I9b08c, b/249143766)

Correction de bugs

  • Correction de DryRunMode pour empêcher les plantages en raison d'un profil vide, car la compilation était ignorée. Désormais, une seule itération est exécutée et le profil est extrait pour s'assurer de capturer quelque chose. (I2f05d, b/266403227)
  • Résolution du plantage de PowerMetric lors de la vérification de la présence de powerstats sur les anciens niveaux d'API. (5faaf9, b/268253898)

Version 1.2.0-alpha09

11 janvier 2023

Publication d'androidx.benchmark:benchmark-*:1.2.0-alpha09. Liste des commits de la version 1.2.0-alpha09

Correction de bugs

  • Activation de la transmission de None à l'argument d'instrumentation androidx.benchmark.enabledRules pour désactiver tous les benchmarks ou la génération de profils de référence (I3d7fd, b/258671856)
  • Correction de la capture de PerfettoTrace dans les modules d'application (c'est-à-dire dans les APK sans autotest d'instrumentation) (I12cfc)
  • Correction de l'ordre des arguments d'extraction adb de profil de référence dans la sortie Studio (I958d1, b/261781624)
  • API d'émulateur Arm 33 désormais reconnue lors de l'exécution d'un macrobenchmark et capable d'afficher correctement l'avertissement (69133b,b/262209591)
  • Vérification du niveau de la batterie ignorée sur les appareils sans batterie dans Macrobenchmark (fe4114, b/232448937)

Version 1.2.0-alpha08

7 décembre 2022

Publication d'androidx.benchmark:benchmark-*:1.2.0-alpha08. Liste des commits de la version 1.2.0-alpha08

Modifications apportées à l'API

  • Ajout des nouvelles API expérimentales PerfettoTrace.record {} et PerfettoTraceRule pour capturer les traces de Perfetto (également appelées traces système) dans le cadre d'un test, afin d'inspecter le comportement et les performances du test. (I3ba16)
  • BaselineProfileRule accepte désormais un prédicat de filtre au lieu d'une liste de préfixes de package. Vous bénéficiez ainsi d'un contrôle total sur le filtrage. (I93240)
  • Ajout d'une API expérimentale BaselineProfileRule.collectStableBaselineProfile qui attend qu'un profil de référence soit stable pendant N itérations. (I923f3)
  • Possibilité de spécifier un préfixe de nom de fichier de sortie lors de la génération de profils de référence avec BaselineProfileRule. (I7b59f, b/260318655)

Correction de bugs

  • Amélioration de la sécurité de l'écriture de sortie des fichiers, ce qui devrait empêcher les fichiers de sortie d'être écrits/ajoutés sans notification, en particulier sur l'API 21/22. (If8c44, b/227510293)
  • Correction du traceur simpleperf pour créer et placer le fichier correctement. De manière générale, cela devrait également résoudre les problèmes d'extraction de fichier par Gradle. (I12a1c, b/259424099)
  • Amélioration du message d'erreur profileinstaller affiché lorsque l'extension est trop ancienne. Un message vous invite désormais à mettre à jour la version de profileinstaller (1.2.1) pour mesurer les profils de référence sur les API 31 à 33, au lieu d'indiquer simplement un problème de compatibilité. (Ia517f, b/253519888)
  • Correction de plusieurs échecs de commande shell avec le message d'erreur Print needed sur l'API 23 ou version ultérieure, y compris l'échec de la configuration binaire de capture perfetto et les échecs de capture de trace. (Ib6b87, b/258863685)
  • Tri automatique des règles de profil générées pour réduire le nombre de modifications dans le temps (lors de l'enregistrement des règles de profil dans le contrôle source). (Ie2509)
  • Résolution du plantage sur les builds en mode non root sous Android 13 (API 33) ou version antérieure avec le message Expected no stderr from echo 3 > /proc/sys/vm/drop_caches. (I6c245, b/259508183)

Problèmes connus : MacrobenchmarkScope.dropShaderCache() peut planter en raison de l'absence du registre de diffusion dans le fichier manifeste profileinstaller, qui n'a pas encore été publié. (I5c728, b/258619948) Pour résoudre le problème dans profileinstaller:1.3.0-alpha02, ajoutez ce qui suit au fichier AndroidManifest.xml de votre application (et non au fichier de Benchmark) :

  <!-- 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 novembre 2022

Publication d'androidx.benchmark:benchmark-*:1.2.0-alpha07. Liste des commits de la version 1.2.0-alpha07

Modifications apportées à l'API

  • Ajout de l'API PowerMetric pour mesurer l'énergie et la puissance dans Macrobenchmarks. (Ife601, b/220183779)
  • Correction de MacrobenchmarkScope.dropShaderCache() pour vider le cache du nuanceur. Cela permet d'éliminer environ 20 ms de bruit pour StartupMode.COLD, car les nuanceurs sont désormais systématiquement effacés à chaque itération. Auparavant, la compilation Partial avec des itérations de préchauffage indiquait des valeurs trop rapides, car la mise en cache du nuanceur était plus susceptible de se produire pendant le préchauffage. Ce correctif nécessite un appareil en mode root ou profileinstaller:1.3.0-alpha02 dans l'application cible. Pour en savoir plus sur les modifications de l'API de la bibliothèque ProfileInstaller, veuillez consulter la page ProfileInstaller 1.30-alpha02. (Ia5171, b/231455742)
  • Ajout de TraceSectionMode("label", Mode.Sum), permettant de mesurer le temps total passé sur plusieurs sections de trace avec le même libellé. Par exemple, TraceSectionMetric("inflate", Mode.Sum) enregistre une métrique inflateMs pour le temps total dans un macrobenchmark consacré à l'inflation. L'API 29 n'est plus obligatoire, car TraceSectionMetric fonctionne avec androidx.tracing.Trace à des niveaux d'API inférieurs, avec l'utilisation de forceEnableAppTracing dans l'application cible. (Id7b68, b/231455742).

Correction de bugs

  • Validation de toutes les erreurs/sorties pour une sécurité renforcée de toutes les commandes d'interface système internes. (I5984d, b/255402908, b/253094958)
  • Spécification de l'appareil dans la commande de profil de référence adb pull afin que la commande pull puisse être simplement copiée si plusieurs appareils sont connectés (un émulateur maximum). (I6ac6c, b/223359380)
  • Ajout d'une erreur si l'APK de test macrobenchmark n'est pas configuré pour l'auto-instrumentation. Cette erreur empêche le macrobenchmarking depuis le processus de l'application cible. En cours de traitement, macrobench ne pourrait pas compiler/abandonner/démarrer l'application ni contrôler ses propres autorisations. (I4279b).
  • Correction d'un problème dans measureRepeated() qui empêchait StartupMode.COLD d'abandonner le processus cible après setupBlock. Désormais, si setupBlock interagit avec l'application, son processus ne restera pas en cours d'exécution avec une mesure du démarrage à froid non valide. (I8ebb7)

Version 1.2.0-alpha06

24 octobre 2022

Publication d'androidx.benchmark:benchmark-*:1.2.0-alpha06. Liste des commits de la version 1.2.0-alpha06

Modifications apportées à l'API

  • BaselineProfileRule n'a plus besoin d'être racine sur Android 13 (API 33) et n'est plus expérimentale. (Ie0a7d, b/250083467, b/253094958)
    • Cette modification corrige également la suppression des profils d'une application sur le disque des appareils en mode non root, mais elle nécessite la mise à jour de la dépendance profileinstaller de l'application cible.
    • Pour utiliser BaselineProfileRule ou CompilationMode.Partial(warmupIterations) sur un appareil en mode non root, vous devez également mettre à jour votre application cible pour qu'elle utilise androidx.profileinstaller.profileinstaller:1.3.0-alpha01. Cela permet de vider correctement le profil sur le disque afin de pouvoir le compiler/l'extraire.

Correction de bugs

  • Correction du plantage de SampledProfiling sur l'API 33 et les versions ultérieures. (I40743, b/236109374)

Version 1.2.0-alpha05

5 octobre 2022

Publication d'androidx.benchmark:benchmark-*:1.2.0-alpha05. Liste des commits de la version 1.2.0-alpha05

Correction de bugs

  • Correction de la répartition des frames dans le lecteur de traces système Studio pour les traces capturées par benchmark. (I3f3ae, b/239677443)
  • Correction de FrameTimingMetric pour indiquer que FrameOverrun nécessite l'API 31 au lieu de 29. (I716dd, b/220702554)
  • Définition d'une itération dans BaselineProfileRule et indication claire si le package cible n'est pas installé (déjà fait pour MacrobenchmarkRule). (Ic09a3, b/227991471)

Version 1.2.0-alpha04

21 septembre 2022

Publication d'androidx.benchmark:benchmark-*:1.2.0-alpha04. Liste des commits de la version 1.2.0-alpha04

Nouvelles fonctionnalités

  • Prise en charge de l'argument d'instrumentation dryRunMode.enable avec macrobenchmark (déjà disponible dans la version micro) pour accélérer le développement local, et validation de l'automatisation des applications (par exemple, avant l'envoi). Cela remplace les itérations par 1, ignore la compilation, supprime toutes les erreurs de configuration et désactive la sortie du fichier .json de mesure. (Ib51b4, b/175149857)

    Sur la ligne de commande Gradle :

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=true
    

    Dans build.gradle :

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true'
        }
    }
    

Correction de bugs

  • Correction de StartupTimingMetric pour ne plus exiger que les activités mesurées soient lancées via MacrobenchmarkScope.startActivityAndWait(). Cela signifie que cette métrique peut identifier les lancements à partir des notifications, de Context.startActivity(), de la navigation basée sur l'activité dans l'application ou des commandes shell. (Ia2de6, b/245414235)
  • Correction d'un bug qui entraînait l'expiration du délai de startActivityAndWait lors de la tentative de lancement sur les émulateurs en réduisant la sévérité de la détection des frames. (Ibe2c6, b/244594339, b/228946895)

Version 1.2.0-alpha03

7 septembre 2022

Publication d'androidx.benchmark:benchmark-*:1.2.0-alpha03. Liste des commits de la version 1.2.0-alpha03

Nouvelles fonctionnalités

  • Ajout d'API expérimentales pour utiliser BenchmarkState séparément, indépendamment de BenchmarkRule/JUnit4. (Id478f, b/228489614)

Correction de bugs

Version 1.2.0-alpha02

24 août 2022

Publication d'androidx.benchmark:benchmark-*:1.2.0-alpha02. Liste des commits de la version 1.2.0-alpha02

Modifications apportées à l'API

  • Valeur par défaut am force stop pour MacrobenchmarkScope.killProcess(), même en mode root, sauf pendant la génération du profil de référence. Vous pouvez remplacer ceci par un argument booléen facultatif. (02cce9, b/241214097)

Correction de bugs

  • Prise en charge de la génération de profils de référence pour les applications système. (I900b8, b/241214097)
  • Prise en charge de la vérification des métriques de puissance ODPM sur les appareils non rootés. (a38c78, b/229623230)

Version 1.2.0-alpha01

27 juillet 2022

Publication d'androidx.benchmark:benchmark-*:1.2.0-alpha01. Liste des commits de la version 1.2.0-alpha01

Nouvelles fonctionnalités

  • Nouveau composant "trace-perfetto-common" permettant aux outils d'activer le traçage du SDK Perfetto dans une application qui l'expose. (I2cc7f)
  • Ajout d'un argument d'instrumentation androidx.benchmark.enabledRules pour permettre le filtrage d'exécutions macrobenchmark uniquement aux benchmarks ou à la génération de profils de référence. Transmettez "Macrobenchmark" ou "BaselineProfile" pour n'exécuter qu'un seul type de test, par exemple lorsque vous générez simplement BaselineProfiles sur un émulateur. Les listes d'éléments séparés par une virgule sont également compatibles. (I756b7, b/230371561)

    Par exemple, dans le build.gradle de votre macrobenchmark :

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile'
        }
    }
    

    Ou à partir de la ligne de commande Gradle :

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
    

Modifications apportées à l'API

  • Ajout d'un PowerMetric pour mesurer les tâches liées à l'énergie et à l'alimentation dans les benchmarks. (I9f39b, b/220183779)
  • Ajout d'un nouveau mode de compilation CompilationMode.Ignore pour ignorer la réinitialisation et la compilation du profil. (Ibbcf8, b/230453509)
  • Ajout d'un paramètre à BaselineProfileRule#collectBaselineProfile pour filtrer le fichier de sortie par nom de package. (If7338, b/220146561)
  • Permet au développeur de décharger l'appareil pour mesurer la consommation d'énergie. (I6a6cb)
  • Ajout de la possibilité de vider le cache du nuanceur dans MacrobenchmarkScope. (I32122)
  • Permet au développeur de configurer l'affichage du type de métrique et de détailler les catégories de sous-systèmes souhaitées. (I810c9)
  • Auparavant, une erreur UnsupportedOperationException était générée dans le benchmark si l'exécution était lancée sur un appareil non compatible. Maintenant, cette erreur ne s'applique que si la métrique est utilisée sur un appareil non compatible (à savoir, PowerMetric.configure). (I5cf20, b/227229375)
  • Ajout de TotalPowerMetric et de TotalEnergyMetric pour mesurer la puissance et l'énergie totales dans chaque catégorie du système dans les macrobenchmarks. (I3b26b, b/224557371)

Correction de bugs

  • Les méthodes compilées n'étaient pas correctement réinitialisées entre chaque macrobenchmark sur des versions non rootées. Ce problème a été résolu. Malheureusement, vous devez réinstaller l'APK à chaque itération, ce qui effacera les données de l'application pour chaque macrobenchmark. (I31c74, b/230665435)
  • Correction du plantage lié à l'enregistrement des traces sur l'API 21/22. (If7fd6, b/227509388, b/227510293, b/227512788)
  • Remaniement de la détection de l'achèvement du lancement d'une activité pour corriger l'exception "Impossible de lire les métriques" dans les macrobenchmarks de démarrage. (Ia517c)

Version 1.1.1

Version 1.1.1

9 novembre 2022

Publication d'androidx.benchmark:benchmark-*:1.1.1. Liste des commits de la version 1.1.1

Correction de bugs

  • Correction d'android.system.ErrnoException: open failed: EACCES qui se produisait sur certains appareils Android 11 (API 30) ou versions ultérieures. Il s'agit d'une solution proposée par 1.2.0-alpha01. (aosp/2072249)

Version 1.1.0

Version 1.1.0

15 juin 2022

Publication d'androidx.benchmark:benchmark-*:1.1.0. Liste des commits de la version 1.1.0

  • Cette version est identique à la version androidx.benchmark:benchmark-*:1.1.0-rc03.

Modifications importantes depuis la version 1.0.0

Version 1.1.0-rc03

1er juin 2022

Publication d'androidx.benchmark:benchmark-*:1.1.0-rc03. Liste des commits de la version 1.1.0-rc03

Correction de bugs

  • Plus besoin de réinstaller le package cible à chaque itération du benchmark. (aosp/​​2093027, b/231976084)

  • Suppression de la latence de 300ms de pressHome(). (aosp/2086030, b/231322975)

  • Amélioration de la vitesse d'itération des macrobenchmarks en optimisant les commandes Shell utilisées en arrière-plan. (aosp/2086023, b/231323582)

  • Prise en charge des appareils Gradle gérés lors de la génération de profils de référence avec des macrobenchmarks. (aosp/2062228, b/228926421)

Version 1.1.0-rc02

11 mai 2022

Publication d'androidx.benchmark:benchmark-*:1.1.0-rc02. Liste des commits de la version 1.1.0-rc02

  • Notez que cette version entraîne un changement de comportement, car les applications sont désormais complètement réinstallées entre chaque benchmark pour garantir des mesures précises.

Correction de bugs/Nouveaux comportements

  • La compilation d'applications n'était pas correctement réinitialisée entre les macrobenchmarks et ne se réinitialisait pas du tout pour les versions non rootées. Ce problème a été résolu. Dans de nombreux cas, l'exécution de plusieurs tests entraînait peu ou pas d'effet sur les mesures pour CompilationMode. Pour contourner ce problème, désormais, l'application cible réinstalle entièrement chaque méthode de test, ce qui efface les données de l'application entre chaque macrobenchmark. (I31c74, b/230665435)

  • Étant donné que cela empêche les applications de configurer l'état avant les tests, il est désormais possible d'ignorer la compilation/réinstallation pour résoudre ce problème. Par exemple, vous pouvez compiler entièrement la cible avec une commande Shell cmd package compile -f -m speed <package>, puis ignorer l'étape de compilation du macrobenchmark.

    Par exemple, dans le build.gradle de votre macrobenchmark :

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false'
        }
    }
    

    Ou à partir de la ligne de commande Gradle :

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
    
  • Ajout d'un argument d'instrumentation androidx.benchmark.enabledRules pour permettre le partage d'un module entre les tests de macrobenchmark et de génération de profil de référence. Transmettez "Macrobenchmark" ou "BaselineProfile" pour n'exécuter qu'un seul type de test, par exemple lorsque vous générez BaselineProfiles sur un émulateur. (I756b7, b/230371561)

    Par exemple, dans le build.gradle de votre macrobenchmark :

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile'
        }
    }
    

    Ou à partir de la ligne de commande Gradle :

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
    

Version 1.1.0-rc01

20 avril 2022

Publication d'androidx.benchmark:benchmark-*:1.1.0-rc01. Liste des commits de la version 1.1.0-rc01

Correction de bugs

  • Dans Android Studio, les liens de sortie des profils de référence utilisent désormais un nom de fichier unique. De cette façon, la sortie reflète toujours les derniers résultats de l'utilisation d'un BaselineProfileRule. (aosp/2057008, b/228203086)

Version 1.1.0-beta06

6 avril 2022

Publication d'androidx.benchmark:benchmark-*:1.1.0-beta06. Liste des commits de la version 1.1.0-beta06

Correction de bugs

  • Correction du plantage lié à l'enregistrement des traces sur l'API 21/22. (If7fd6, b/227509388)
  • Remaniement de la détection de l'achèvement du lancement d'une activité pour corriger l'exception "Impossible de lire les métriques" dans les macrobenchmarks de démarrage. (Ia517c)
  • Correction des métriques de démarrage pour les macrobenchmarks lorsque CompilationMode.None() est utilisé. Avant cette modification, CompilationMode.Partial() semblait plus lent que Compilation.None(). (611ac9).

Version 1.1.0-beta05

23 mars 2022

Publication d'androidx.benchmark:benchmark-*:1.1.0-beta05. Liste des commits de la version 1.1.0-beta05

Correction de bugs

  • Suppression du package après avoir ignoré l'installation du profil lorsque vous utilisez CompilationMode.None. (aosp/1991373)
  • Correction d'un problème qui empêchait les macrobenchmarks de récupérer les métriques de démarrage avec StartupMode.COLD. (aosp/2012227 b/218668335)

Version 1.1.0-beta04

23 février 2022

Publication d'androidx.benchmark:benchmark-*:1.1.0-beta04. Liste des commits de la version 1.1.0-beta04

Corrections de bugs

  • Correction des métriques manquantes sous Android 10 et de l'erreur NoSuchElementException. Ces deux effets étaient dus aux noms des processus qui n'étaient pas correctement capturés dans les traces. (Ib4c17, b/218668335)

  • Utilisation de PowerManager pour la détection de limitation thermique sur Q (API 29) et versions ultérieures. Cette solution réduit considérablement la fréquence des faux positifs lors de la détection de la limitation thermique (nouveau lancement du benchmark après un délai d'attente de 90 secondes) et accélère considérablement les benchmarks sur les builds de l'utilisateur. Cela permet également de détecter les limitations même si les horloges sont verrouillées (si elles sont verrouillées trop haut pour l'environnement physique de l'appareil). (I9c027, b/217497678, b/131755853)

  • Filtrage du profilage échantillonné Simpleperf sur le thread measureRepeated uniquement pour simplifier l'inspection. (Ic3e12, b/217501939)

  • Prise en charge des métriques associées aux sous-processus de l'interface utilisateur nommés dans les applications multiprocessus. (Ice6c0, b/215988434)

  • Filtrage des règles de profil de référence pour cibler Android 9 (SDK 28). aosp/1980331 b/216508418

  • Installation du profil ignorée lorsque vous utilisez Compilation.None(). De plus, le système avertit lorsque l'application utilise une ancienne version de androidx.profileinstaller et du plug-in Android Gradle. aosp/1977029

Version 1.1.0-beta03

9 février 2022

Publication d'androidx.benchmark:benchmark-*:1.1.0-beta03. Liste des commits de la version 1.1.0-beta03

Modifications apportées à l'API

  • Ajout de AudioUnderrunMetric à la bibliothèque de macrobenchmark sous l'indicateur expérimental pour permettre la détection des sous-diffusions audio. (Ib5972)
  • BaselineProfileRule n'accepte plus de bloc setup, car il fonctionnait de la même manière que profileBlock. (Ic7dfe, b/215536447)

    Par exemple :

    @Test
    fun collectBaselineProfile() {
        baselineRule.collectBaselineProfile(
            packageName = PACKAGE_NAME,
            setupBlock = {
                startActivityAndWait()
            },
            profileBlock = {
                // ...
            }
        )
    }
    
    @Test
    fun collectBaselineProfile() {
        baselineRule.collectBaselineProfile(
            packageName = PACKAGE_NAME,
            profileBlock = {
                startActivityAndWait()
                // ...
            }
        )
    }
    

Correction de bugs

  • Résolution d'un problème de mise à jour des traces du profileur microbenchmark lors des exécutions ultérieures en cas d'association avec la sortie Studio. (I5ae4d, b/214917025)
  • Interdiction des commandes Shell de compilation sous l'API 23. (Ice380)
  • Nouveaux noms (FrameCpuTime -> FrameDurationCpu, FrameUiTime -> FrameDurationUi) pour indiquer des durées, et non des horodatages, et pour faire correspondre les préfixes. (I0eba3, b/216337830)

Version 1.1.0-beta02

26 janvier 2022

Publication d'androidx.benchmark:benchmark-*:1.1.0-beta02. Liste des commits de la version 1.1.0-beta02

Corrections de bugs

  • Les résultats du microbenchmark pour le profil d'échantillonnage de pile/traçage de méthode sont désormais liés dans la sortie Studio, comme les autres sorties de profilage, et ne suppriment pas la métrique d'allocation. (Idcb65, b/214440748, b/214253245)
  • BaselineProfileRule affiche désormais la commande adb pull dans Logcat et dans la sortie Studio pour extraire le fichier texte BaselineProfile généré. (f08811)

Version 1.1.0-beta01

12 janvier 2022

Publication d'androidx.benchmark:benchmark-*:1.1.0-beta01. Liste des commits de la version 1.1.0-beta01

Correction de bugs

  • Correction d'un bug qui annulait l'activation de l'option d'argument du profileur. (I37373, b/210619998)
  • Suppression de CompliationModes obsolètes. (I98186, b/213467659)
  • Pour plus de clarté, l'argument de profil de référence CompilationMode.Partial a été remplacé par une énumération. (Id67ea)

Version 1.1.0-alpha13

15 décembre 2021

Publication d'androidx.benchmark:benchmark-*:1.1.0-alpha13. Liste des commits de la version 1.1.0-alpha13

Modifications apportées à l'API

  • Ajout d'un traçage système simple à la sortie du microbenchmark sous Android Q (API 29 ou version ultérieure). Notez qu'à l'heure actuelle, cette méthode ne capture pas le traçage personnalisé (via les API Jetpack android.os.Trace ou androidx.tracing) afin d'éviter d'affecter les résultats. Ce traçage peut être utile pour diagnostiquer les problèmes d'instabilité, en particulier pour les sources externes au benchmark. (I298be, b/205636583, b/145598917)
  • Clarification de CompilationModes en trois classes : "Full" (complète), "None" (aucune) ou "Partial" (partielle). Auparavant, ces classes étaient nommées de manière incohérente en fonction des arguments de compilation (que nous traitons maintenant comme des détails d'implémentation) et des fonctionnalités. Ainsi, les échanges, les combinaisons potentielles et le comportement des différentes versions de la plate-forme sont plus clairs. (I3d7bf, b/207132597)
  • La configuration et la mesure sont désormais toujours par paire, dans l'ordre. Vous pouvez maintenant interroger le nom du package et l'itération (mais l'itération peut être null dans certains scénarios de préchauffage). (Id3b68, b/208357448, b/208369635)

Correction de bugs

  • Correction de CompilationMode.Speed, qui était traité à tort comme None. (I01137)

Version 1.1.0-alpha12

17 novembre 2021

Publication d'androidx.benchmark:benchmark-*:1.1.0-alpha12. Liste des commits de la version 1.1.0-alpha12

Nouvelles fonctionnalités

  • Ajout d'une fonctionnalité expérimentale TraceSectionMetric pour les mesures de timing personnalisées basées sur les traces. (I99db1, b/204572664)

Correction de bugs

  • Activation de l'appareil à chaque itération afin de s'assurer que l'interface utilisateur peut être testée. L'écran de verrouillage doit être désactivé. (Ibfa28, b/180963442)
  • Correction de plusieurs plantages en mode de profilage StackSampling sur les émulateurs et les appareils non rootés. (Icdbda, b/202719335)
  • Suppression du délai de 0,5 seconde à la fin de chaque itération. Si des métriques ne s'affichent pas suite à cette modification, veuillez signaler un bug. (Iff6aa)
  • Réduction du risque de perte de données et de surcharge de la mémoire due au traçage. (Id2544, b/199324831, b/204448861)
  • Réduction de la taille de la trace d'environ 40 % en passant au format de stockage sched compact. (Id5fb6, b/199324831)
  • Mise à jour des implémentations pour les métriques de démarrage afin qu'elles se terminent toujours à la fin du thread de rendu. Ce changement rendra le système plus contrôlable entre les versions de la plate-forme et plus proche des mesures dans l'application. (Ic6b55)

Version 1.1.0-alpha11

3 novembre 2021

Publication d'androidx.benchmark:benchmark-*:1.1.0-alpha11. Liste des commits de la version 1.1.0-alpha11

Modifications apportées à l'API

  • Macrobenchmark dispose désormais d'une minSdkVersion de 23. (If2655)
  • Ajout d'un BaselineProfileRule expérimental capable de générer des profils de référence pour le critical user journey de l'application. Documentation détaillée à suivre. (Ibbefa, b/203692160)
  • Suppression de la variante d'interface measureRepeated, qui a été ajoutée pour les appelants Java, car elle semblait ambiguë dans le traitement/la résolution de la méthode. Les appelants Java devront à nouveau renvoyer Unit.Instance à partir de measureRepeated. Si cela vous pose problème, veuillez signaler un bug. Nous reviendrons sur ce point dans une prochaine version. (Ifb23e, b/204331495)

Version 1.1.0-alpha10

27 octobre 2021

Publication d'androidx.benchmark:benchmark-*:1.1.0-alpha10. Liste des commits de la version 1.1.0-alpha10

Modifications apportées à l'API

  • Rétroportage de StartupTimingMetric pour revenir à l'API 23. Cette nouvelle implémentation gère également mieux reportFullyDrawn() en attendant que le contenu correspondant s'affiche. (If3ac9, b/183129298)
  • Ajout de JvmOverloads à plusieurs méthodes MacrobenchmarkScope pour les appelants Java. (I644fe, b/184546459)
  • Ajout d'une autre fonction MacrobenchmarkRule.measureRepeated qui utilise un Consumer<MacrobenchmarkScope> pour une utilisation naturelle en langage Java. (If74ab, b/184546459)

Correction de bugs

  • Correction du problème des traces qui ne commençaient pas assez tôt et pour lesquelles des données de métriques étaient manquantes. Ceci devrait résoudre les exceptions de type "Impossible de lire les métriques lors du benchmark" causées par la bibliothèque elle-même. (I6dfcb, b/193827052, b/200302931)
  • FrameNegativeSlack a été renommé en FrameOverrun afin de clarifier sa signification : dans quelle mesure le cadre a dépassé son budget de temps. (I6c2aa, b/203008701)

Version 1.1.0-alpha09

13 octobre 2021

Publication d'androidx.benchmark:benchmark-*:1.1.0-alpha09. Liste des commits de la version 1.1.0-alpha09

Correction de bugs

  • Prise en charge de la suppression du cache des pages du noyau sans être en mode root sur l'API 31/S+, ce qui améliorera la précision des lancements avec StartupMode.COLD. (Iecfdb, b/200160030)

Version 1.1.0-alpha08

29 septembre 2021

Publication d'androidx.benchmark:benchmark-*:1.1.0-alpha08. Liste des commits de la version 1.1.0-alpha08

Modifications apportées à l'API

  • Activation du défilement des macrobenchmarks pour revenir à l'API 23. (If39c2, b/183129298)
  • Ajout d'un nouveau type de métrique par échantillons à la sortie UI et JSON, axée sur les centiles de plusieurs échantillons par itération. (I56247, b/199940612)
  • Passage aux métriques à virgule flottante dans toutes les bibliothèques de benchmark (tronquées dans l'interface utilisateur de Studio). (I69249, b/197008210)

Version 1.1.0-alpha07

1er septembre 2021

Publication d'androidx.benchmark:benchmark-*:1.1.0-alpha07. Liste des commits de la version 1.1.0-alpha07

Modifications apportées à l'API

  • Augmentation de la valeur minimale de l'API à 21 pour refléter le niveau d'API le plus bas attendu. Seules les API de ce niveau ou supérieur seront prises en charge à l'avenir. L'API minimale actuelle continue d'être transmise via RequiredApi() et est actuellement de niveau 29. (I440d6, b/183129298)

Correction de bugs

  • Correction de ProfileInstaller afin de faciliter l'exécution de macrobenchmarks par CompilationMode.BaselineProfile pour les applications utilisant des profils de référence. (I42657, b/196074999) REMARQUE : vous devez également passer à androidx.profileinstaller:profileinstaller:1.1.0-alpha04 ou à une version ultérieure.
  • Les benchmarks StartupMode.COLD et CompilationMode.None sont désormais plus stables. (I770cd, b/196074999)

Version 1.1.0-alpha06

18 août 2021

Publication d'androidx.benchmark:benchmark-*:1.1.0-alpha06. Liste des commits de la version 1.1.0-alpha06

Modifications apportées à l'API

  • Ajout de l'argument d'instrumentation androidx.benchmark.iterations pour permettre le forçage manuel du nombre d'itérations lors des tests ou du profilage en local. (6188be, b/194137879)

Correction de bugs

  • Passage à Simpleperf en tant que profileur d'échantillonnage par défaut pour les API de niveau 29 ou supérieur. (Ic4b34, b/158303822)

Problèmes connus

  • CompilationMode.BaselineProfile est encore en cours d'élaboration. Évitez de l'utiliser pour déterminer la qualité d'un profil.

Version 1.1.0-alpha05

4 août 2021

Publication d'androidx.benchmark:benchmark-*:1.1.0-alpha05. Liste des commits de la version 1.1.0-alpha05

La version 1.1.0-alpha04 a été annulée avant son lancement en raison de plantages fréquents. b/193827052

Modifications apportées à l'API

  • Modification de startActivityAndWait pour appeler le lancement via am start, ce qui réduit le temps de chaque itération de mesure d'environ 5 secondes, au détriment de la compatibilité des parcelables d'intent. (I5a6f5, b/192009149

Correction de bugs

  • Réduction de la sensibilité de détection des limitations thermiques et nouveau calcul de la référence si des limitations sont fréquemment détectées. (I7327b)
  • Correction de FrameTimingMetric pour un fonctionnement sous Android S bêta. (Ib60cc, b/193260119)
  • Utilisation d'une EmptyActivity pour sortir l'application cible d'un état d'arrêt forcé afin de mieux prendre en charge CompilationMode.BaselineProfile. (Id7cac, b/192084204)
  • Extension de fichier de suivi remplacée par .perfetto-trace pour correspondre au standard de plate-forme. (I4c236, b/174663039)
  • StartupTimingMetric génère désormais la métrique "fullyDrawnMs" pour mesurer le temps nécessaire au rendu pour votre application. Pour définir cette métrique pour votre application, appelez Activity.reportFullyDrawn lorsque votre contenu initial est prêt, par exemple lorsque vos éléments de liste initiaux sont chargés à partir de la base de données ou du réseau. (La méthode reportFullyDrawn est disponible sans vérification des versions de compilation sur ComponentActivity.) Notez que votre test doit être suffisamment long pour capturer la métrique (startActivityAndWait n'attend pas reportFullyDrawn). (If1141, b/179176560)
  • Réduction du coût d'ajout des métadonnées UI aux traces de plus de 50 ms. (Ic8390, b/193923003)
  • La fréquence d'interrogation a considérablement augmenté lors de l'arrêt du traçage, ce qui peut réduire de plus de 30 % le temps d'exécution du benchmark de démarrage, par exemple. (Idfbc1, b/193723768)

Version 1.1.0-alpha03

16 juin 2021

Publication d'androidx.benchmark:benchmark-*:1.1.0-alpha03. Liste des commits de la version 1.1.0-alpha03

Nouvelles fonctionnalités

Correction de bugs

  • L'exemple de code Gradle pour la suppression des erreurs de benchmark a été mis à jour de manière à utiliser une API non obsolète avec une syntaxe qui correspond également aux utilisateurs de .gradle.kts.

    Exemple :

    testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
    

Version 1.1.0-alpha02

18 mai 2021

La version de benchmark 1.1.0-alpha02 apporte un composant-clé : le macrobenchmark. En plus du benchmark, qui permet de mesurer les boucles du processeur, le macrobenchmark permet de mesurer les interactions avec l'application dans son ensemble (comme le démarrage et le défilement), et de capturer des traces. Pour en savoir plus, consultez la documentation de la bibliothèque.

Publication d'androidx.benchmark:benchmark-*:1.1.0-alpha02. Liste des commits de la version 1.1.0-alpha02

Nouvelles fonctionnalités

Artefacts de macrobenchmark ajoutés (androidx.benchmark:benchmark-macro-junit4 et androidx.benchmark:benchmark-macro).

  • Capturez les métriques de performances de démarrage, de défilement/d'animation à partir de votre application, en local ou dans CI.
  • Capture et inspection des traces depuis Android Studio.

Correction de bugs

  • Solution de contournement pour le problème des autorisations Shell avec le répertoire de sortie sous Android 12 (Remarque : vous devrez peut-être mettre à jour le plug-in Android Gradle vers la version Canary 7.0.0 et Android Studio vers Arctic Fox 2020.3.1 pour continuer à capturer des fichiers de sortie sur les appareils concernés). (Icb039)
  • Prise en charge de la mise en cache de la configuration dans BenchmarkPlugin. (6be1c1, b/159804788)
  • Sortie de fichier simplifiée activée par défaut pour les répertoires ne nécessitant pas requestLegacyExternalStorage=true. (8b5a4d, b/172376362)
  • Correction des avertissements Logcat d'affichage de bibliothèque concernant l'absence de thread JIT sur les versions de plate-forme où il n'est pas présent. (I9cc63, b/161847393)
  • Correction de la fréquence maximale pour les appareils de lecture. (I55c7a)

Version 1.1.0-alpha01

10 juin 2020

Publication d'androidx.benchmark:benchmark-common:1.1.0-alpha01, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01 et androidx.benchmark:benchmark-junit4:1.1.0-alpha01. Liste des commits de la version 1.1.0-alpha01

Nouvelles fonctionnalités de la version 1.1

  • Métrique d'allocation : les benchmarks exécutent désormais une phase supplémentaire après le préchauffage et le timing, afin de capturer le nombre d'allocations. Les allocations peuvent entraîner des problèmes de performances sur les anciennes versions de la plate-forme (140 ns pour O deviennent 8 ns pour M, mesuré sous Nexus 5X avec horloges verrouillées). Cette métrique s'affiche dans les résultats de la console Android Studio.
  • Prise en charge du profilage : vous pouvez désormais capturer des données de profilage pour une exécution de benchmark afin de déterminer pourquoi votre code s'exécute lentement. Le benchmark permet de capturer le traçage de méthode ou l'échantillonnage de méthode à partir d'ART. Ces fichiers peuvent être inspectés avec le profileur dans Android Studio via Fichier > Ouvrir.
  • Le plug-in de benchmark de Gradle fournit désormais des valeurs par défaut pour simplifier la configuration :
    • testBuildType est configuré de manière à être utilisé par défaut, afin d'éviter d'utiliser des dépendances avec une couverture de code intégrée. Le buildType de la version est également configuré par défaut, ce qui permet à Android Studio de sélectionner automatiquement la bonne variante de compilation lorsque vous ouvrez un projet pour la première fois. (b/138808399)
    • signingConfig.debug est utilisé comme configuration de signature par défaut. (b/153583269)

** Corrections de bugs **

  • Réduction significative des coûts liés à la transition de préchauffage : la première mesure de chaque benchmark était artificiellement plus élevée que les autres. Ce problème était plus marqué dans les benchmarks de taille particulièrement réduite (une microseconde ou moins). (b/142058671)
  • Correction de l'erreur InstrumentationResultParser affichée pour chaque benchmark lors de l'exécution à partir de la ligne de commande. (I64988, b/154248456)

Problèmes connus

  • Les appels Gradle en ligne de commande des benchmarks n'affichent pas directement les résultats. Pour contourner ce problème, vous pouvez soit utiliser Studio, soit analyser le fichier de sortie JSON pour obtenir les résultats.
  • Le système de création de rapports de benchmark ne parvient pas à extraire de rapport à partir des appareils sur lesquels une application est associée à un applicationId se terminant par "android" ou "download" (non sensible à la casse). Les utilisateurs qui rencontrent ce problème doivent mettre à jour le plug-in Android Gradle vers la version 4.2-alpha01 ou ultérieure.

Version 1.0.0

Version de benchmark 1.0.0

20 novembre 2019

androidx.benchmark:benchmark-common:1.0.0, androidx.benchmark:benchmark-gradle-plugin:1.0.0 et androidx.benchmark:benchmark-junit4:1.0.0 sont publiés sans modification par rapport à la version 1.0.0-rc01. Liste des commits de la version 1.0.0

Principales fonctionnalités de la version 1.0.0

La bibliothèque de benchmark vous permet d'écrire des benchmarks de performances du code de votre application et d'obtenir des résultats rapidement.

Elle empêche les problèmes de configuration de la compilation et d'exécution, et stabilise les performances de l'appareil pour garantir la précision et la cohérence des mesures. Exécutez les benchmarks directement dans Android Studio ou dans l'intégration continue afin d'observer les performances du code au fil du temps et d'éviter les régressions.

Exemples de fonctionnalités clés :

  • Stabilisation de l'horloge
  • Priorisation automatique des threads
  • Prise en charge des tests de performances de l'interface utilisateur, comme dans l'exemple RecyclerView
  • Préchauffage et bouclage prenant en compte JIT
  • Résultats du benchmark au format JSON pour le post-traitement

Version 1.0.0-rc01

23 octobre 2019

Publication d'androidx.benchmark:benchmark-common:1.0.0-rc01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01 et androidx.benchmark:benchmark-junit4:1.0.0-rc01. Liste des commits de la version 1.0.0-rc01

Nouvelles fonctionnalités

  • Ajout du traçage systrace aux benchmarks

Correction de bugs

  • Résolution du problème d'instabilité des métriques : JIT ne s'achevait pas avant le préchauffage en raison d'une priorité trop faible. (b/140773023)
  • Unification du répertoire de sortie JSON pour les plug-ins Android Gradle 3.5 et 3.6.

Version 1.0.0-beta01

9 octobre 2019

Publication d'androidx.benchmark:benchmark-common:1.0.0-beta01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01 et androidx.benchmark:benchmark-junit4:1.0.0-beta01. Liste des commits de la version 1.0.0-beta01

Nouvelles fonctionnalités

  • Exécution de la récupération de mémoire avant chaque préchauffage pour réduire la pression sur la mémoire : chaque benchmark bénéficie de la continuité du précédent. (b/140895105)

Corrections de bugs

  • Ajout de la dépendance androidx.annotation:android-experimental-lint, de sorte que le code Java génère correctement des erreurs lint lorsque l'API expérimentale n'est pas utilisée, de la même manière que l'annotation expérimentale Kotlin fournit ces erreurs pour les appelants Kotlin.
  • Correction de la détection de l'utilisation de l'argument d'instrumentation additionalTestOutputDir pour la sortie avec le plug-in Android Gradle 3.6, afin de savoir quand AGP traitera la copie des données.
  • Correction de la fréquence d'horloge non détectée en JSON pour afficher correctement -1. (b/141945670)

Version 1.0.0-alpha06

18 septembre 2019

Publication d'androidx.benchmark:benchmark-common:1.0.0-alpha06, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06 et androidx.benchmark:benchmark-junit4:1.0.0-alpha06. Liste des commits de la version 1.0.0-alpha06

Nouvelles fonctionnalités

  • Ajout d'une vérification de l'utilisation correcte de l'ancien package pour l'exécuteur de test, qui fournit désormais un message d'erreur plus utile.

Modifications apportées à l'API

  • L'annotation expérimentale ExperimentalAnnotationReport est désormais publique, comme attendu. L'utilisation de l'API expérimentale BenchmarkState#report nécessite désormais cette annotation.

Version 1.0.0-alpha05

5 septembre 2019

Publication d'androidx.benchmark:benchmark-common:1.0.0-alpha05, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05 et androidx.benchmark:benchmark-junit4:1.0.0-alpha05. Les commits inclus dans cette version sont disponibles sur cette page.

Modifications apportées à l'API

  • L'API BenchmarkState.reportData est maintenant indiquée comme expérimentale.

Corrections de bugs

  • Correction du script de verrouillage de l'horloge, qui échouait sur les appareils qui ne disposaient pas des utilitaires d'interface système cut ou expr.
  • Correction d'un problème lié à la tâche ./gradlew lockClocks qui se figeait sur les appareils en mode root avec une version antérieure de l'utilitaire su, pour laquelle l'indicateur -c n'était pas pris en charge.

Version 1.0.0-alpha04

7 août 2019

Publication d'androidx.benchmark:benchmark-common:1.0.0-alpha04, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04 et androidx.benchmark:benchmark-junit4:1.0.0-alpha04. Les commits inclus dans cette version sont disponibles sur cette page.

Nous avons également ajouté de la documentation sur l'utilisation de la bibliothèque Benchmark sans Gradle, à la fois pour l'utiliser avec différents systèmes de compilation (tels que Bazel ou Buck) et pour l'exécution en CI. Pour en savoir plus, consultez les sections Créer des benchmarks sans Gradle et Exécuter des benchmarks dans un environnement d'intégration continue.

Nouvelles fonctionnalités

  • Plug-in Gradle
    • Désactive automatiquement la couverture de test et définit AndroidBenchmarkRunner par défaut (b/138374050).
    • Ajout de la prise en charge de la nouvelle copie de données basée sur AGP lors de l'exécution de benchmarks avec AGP 3.6 ou version ultérieure.
  • Ajouts au format JSON
    • Sortie de la durée totale d'exécution du test de benchmark. (b/133147694)
    • Les benchmarks @Parameterized utilisant une chaîne de nom (par exemple, @Parameters(name = "size={0},depth={1}")) génèrent désormais des noms et des valeurs de paramètres par benchmark dans la sortie JSON. (b/132578772)
  • Ajout d'un mode de simulation. (b/138785848)
    • Ajout d'un mode de simulation pour exécuter chaque boucle de benchmark une seule fois, afin de rechercher les erreurs ou plantages sans capturer les mesures. Cela peut être utile, par exemple, pour exécuter rapidement des benchmarks lors de l'envoi préalable afin de vérifier que tout fonctionne comme prévu.

Modifications apportées à l'API

  • La structure du module a changé, la bibliothèque a été scindée. (b/138451391)
    • benchmark:benchmark-junit4 contient les classes avec dépendance JUnit (AndroidBenchmarkRunner et BenchmarkRule), qui ont toutes les deux été déplacées dans le package androidx.benchmark.junit4.
    • benchmark:benchmark-common contient le reste de la logique, y compris l'API BenchmarkState.
    • À l'avenir, cette division permettra à la bibliothèque d'effectuer des benchmarks sans les API JUnit4.
  • Les avertissements de configuration sont désormais traités comme des erreurs et entraînent le plantage du test. (b/137653596)
    • Cela permet d'assurer des mesures précises, en particulier dans les systèmes CI.
    • Ces erreurs peuvent être transformées à nouveau en avertissements à l'aide d'un argument d'instrumentation. Par exemple : -e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"

Corrections de bugs

  • Les erreurs d'écriture sur un périphérique de stockage externe sur les appareils Q fournissent des messages plus descriptifs, avec des suggestions pour résoudre le problème.
  • Les écrans sont automatiquement allumés lors des benchmarks, au lieu d'échouer lorsqu'ils sont éteints.

Contributions externes

  • Merci à Sergey Zakharov d'avoir contribué à l'amélioration de la sortie JSON et à la correction des problèmes de désactivation de l'écran !

Version 1.0.0-alpha03

2 juillet 2019

Publication d'androidx.benchmark:benchmark:1.0.0-alpha03 et d'androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03. Les commits inclus dans cette version sont disponibles sur cette page.

Nouvelles fonctionnalités

  • Le rapport JSON complet indique désormais la durée de veille en raison de la limitation thermique par benchmark.

Corrections de bugs

  • Il n'est plus nécessaire d'appliquer le plug-in Gradle après les plug-ins Android et le bloc Android.
  • Ajout de la prise en charge des rapports de benchmark sur les appareils Android 10 utilisant un espace de stockage cloisonné.

Version 1.0.0-alpha02

6 juin 2019

Publication d'androidx.benchmark:1.0.0-alpha02 et d'androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02. Les commits inclus dans cette version sont disponibles sur cette page.

Notez que nous traitons le schéma JSON comme une API. Nous prévoyons de respecter les mêmes contraintes de stabilité que les autres API : stables (avec de très rares exceptions) une fois en version bêta et corrigées dans la version finale, avec des ajouts uniquement dans les versions mineures et des modifications/suppressions dans les versions principales.

Modifications apportées à l'API

  • Refonte du schéma JSON. D'autres modifications du schéma JSON sont susceptibles d'être limitées à des ajouts :

    • Réorganisation de la structure d'objet de résultat pour prendre en charges d'autres groupes de métriques. (b/132713021)
    • Ajout d'informations de contexte d'exécution de test, telles que des informations sur l'appareil et le build, et si les horloges sont verrouillées ou non, à l'objet d'ordre supérieur. (b/132711920)
    • Le nom des métriques de temps contient maintenant "ns". (b/132714527)
    • Statistiques supplémentaires ajoutées pour les métriques présentes au rapport (maximum, médiane, minimum) et suppression de la statistique récapitulative "milliardième" simplifiée. (b/132713851)
  • Suppression de la sortie XML (b/132714414).

  • Détection de la limitation thermique supprimée de l'API BenchmarkState.reportData. (b/132887006)

Corrections de bugs

  • Correction d'un problème de ./gradlew lockClocks sur certains appareils équipés d'OS récents. (b/133424037)
  • Détection de la limitation désactivée pour l'émulateur. (b/132880807)

Version 1.0.0-alpha01

7 mai 2019

Publication d'androidx.benchmark:benchmark:1.0.0-alpha01. Les commits inclus dans cette version sont disponibles sur cette page.