Benchmark

Mide con precisión el rendimiento de tu código dentro de Android Studio.
Actualización más reciente Versión estable Versión potencial Versión beta Versión alfa
21 de febrero de 2024 1.2.3 - - 1.3.0-alpha01

Cómo declarar dependencias

Para agregar una dependencia en Benchmark, debes agregar el repositorio de Maven de Google a tu proyecto. Consulta el repositorio de Maven de Google para obtener más información.

Macrobenchmark

Para usar Macrobenchmark en tu proyecto, agrega las siguientes dependencias al archivo build.gradle de tu módulo de macrocomparativas:

Groovy

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

Kotlin

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

Microbenchmark

Para usar microcomparativas en tu proyecto, agrega las siguientes dependencias al archivo build.gradle de tu módulo de microcomparativas:

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 biblioteca de Microbenchmark también proporciona un complemento de Gradle que puedes usar con tu módulo de microcomparativas. Este complemento establece los valores predeterminados de la configuración de compilación para el módulo, establece la copia de resultados de comparativas en el host y proporciona la tarea de ./gradlew lockClocks.

Para usar el complemento, incluye la siguiente línea en el bloque "plugins" de tu archivo build.gradle de nivel superior:

Groovy

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

Kotlin

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

Luego, aplica el complemento al archivo build.gradle de tu módulo de comparativas.

Groovy

plugins {
  id 'androidx.benchmark'
}

Kotlin

plugins {
    id("androidx.benchmark")
}

Comentarios

Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes de esta biblioteca antes de crear uno nuevo. Puedes agregar tu voto a un error existente haciendo clic en el botón de la estrella.

Crear un error nuevo

Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.

Versión 1.3

Versión 1.3.0-alpha01

21 de febrero de 2024

Lanzamiento de androidx.benchmark:benchmark-*:1.3.0-alpha01. La versión 1.3.0-alpha01 contiene estas confirmaciones.

Cambios en la API

  • Se cambió el nombre de los parámetros booleanos MicrobenchmarkConfig para evitar la palabra "debe" innecesaria (Ia8f00, b/303387299).
  • Se agregó BenchmarkRule.measureRepeatedOnMainThread para que las comparativas de subprocesos principales (p.ej., las que tocan Views o las IU de Compose) puedan evitar la activación de errores de ANR, en especial durante paquetes grandes de CI. (I5c86d).
  • Se agregó FrameTimingGfxInfoMetric, una implementación alternativa experimental de FrameTimingMetric con mediciones que provienen directamente de la plataforma, en lugar de extraerse del registro de Perfetto (I457cb, b/322232828).
  • Se agregó la capacidad de volcar un perfil de ART durante iteraciones individuales de warmUp (I17923).
  • Se implementaron varios cambios en la API de TraceSectionMetric:
    • Agregar Mode.Min, Mode.Max
    • Agrega un argumento de etiqueta para anular el nombre de la sección como etiqueta de métrica
    • Se agregó el nombre del modo al resultado para aclarar el significado de la métrica.
    • Se cambió de forma predeterminada a la suma, ya que la mayor parte del uso de esta métrica se aplica a eventos repetidos. Ten en cuenta estos cambios en el uso de CI, ya que puede crear discontinuidades o interrupciones en el análisis. (Ic1e82, b/301892382, b/301955938).

Correcciones de errores

  • Se mejoró el mensaje de error en el complemento de Gradle para el perfil de Baseline cuando no existe un dispositivo administrado especificado (Idea2b, b/313803289).
  • Se corrigió la inclusión de perfiles de Baseline de biblioteca en AAR antes de AGP 8.3.0-alpha15 (I1d2af, b/313992099).
  • Se corrigió la URL de salida del perfil de inicio y de referencia al final de la tarea de generación (I802e5, b/313976958).
  • Se ajustaron los tiempos de espera de la fuente de datos para intentar corregir java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)] (I8dc7d, b/323601788).
  • Agrega dos argumentos de instrumentación para anular el comportamiento de abandono del sombreador y solucionar fallas cuando se realicen comparativas de apps sin ProfileInstaller 1.3:
    • androidx.benchmark.dropShaders.enable=true/false : Se puede usar para omitir la eliminación de todos los sombreadores (incluida la que se hizo en los lanzamientos de StartupMode.Cold), especialmente cuando se comparan apps que aún no usan profileinstaller 1.3.
    • androidx.benchmark.dropShaders.throwOnFailure=true/false : Se puede usar para tolerar fallas cuando se intentan descartar sombreadores, por ejemplo, cuando se comparan apps sin profileinstaller 1.3 (I4f573).
  • Omite el seguimiento de métodos en el subproceso de IU cuando se espere que tome más de unos segundos y limpia los seguimientos de método cuando se realicen lanzamientos. (I6e768).
  • Se arroja cuando los nombres de archivo tengan más de 200 caracteres para evitar fallas poco claras cuando se escriben o se procesan archivos. (I4a5ab).
  • Se solucionó el problema por el que los fotogramas sin terminar al principio y al final del seguimiento podían vincularse, lo que se informaba de manera incorrecta como un solo fotograma extremadamente largo (I39353, b/322232828).
  • Usa --skip verification en el nivel de API 30 y versiones posteriores cuando reinstales un paquete en los niveles de API 30 a 33 para borrar los perfiles de ART en compilaciones de usuarios. Esto ayuda a omitir las advertencias de Play Protect que causan fallas en algunas clases de dispositivos. (Ic9e36).
  • Usa am force-stop para cerrar apps cuando no sea una app del sistema, como la IU del sistema o el Selector. (I5e028).
  • Macrobenchmark ahora espera a que 1 second la aplicación de destino vacíe un perfil de ART (antes esperó 500 ms) (I85a50, b/316082056).
  • Se mejoró el error FrameTimingMetric cuando no se producen fotogramas y siempre genera un vínculo de salida para hacer un seguimiento cuando se produce un error en el análisis de métricas para ayudar a diagnosticar el problema (I956b9).
  • Se corrigió una falla en FrameTimingMetric que no podía analizar el ID de marco, especialmente en ciertos dispositivos OEM. (Ia24bc, b/303823815, b/306235276).
  • Se flexibilizan las verificaciones en FrameMetrics y se agregaron más detalles a los mensajes de error. (Iadede).

Versión 1.2

Versión 1.2.3

24 de enero de 2024

Lanzamiento de androidx.benchmark:benchmark-*:1.2.3. La versión 1.2.3 contiene estas confirmaciones.

Correcciones de errores

  • Se quitó la excepción del complemento de Gradle para perfiles de Baseline cuando AGP es 8.3.0 o posterior.
  • Se corrigió la inclusión de perfiles de Baseline de biblioteca en AAR antes de AGP 8.3.0-alpha15.

Versión 1.2.2

1 de diciembre de 2023

Lanzamiento de androidx.benchmark:benchmark-*:1.2.2. La versión 1.2.2 contiene estas confirmaciones.

Perfiles de Baseline

Versión 1.2.1

15 de noviembre de 2023

Lanzamiento de androidx.benchmark:benchmark-*:1.2.1. La versión 1.2.1 contiene estas confirmaciones.

Nuevas funciones

  • Se mejoró el mensaje de error cuando el usuario inhabilita las variantes de prueba (b/307478189).
  • Se agregaron propiedades para admitir la integración de ejecución de prueba de AS (b/309805233), (b/309116324).

Versión 1.2.0

18 de octubre de 2023

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0. La versión 1.2.0 contiene estas confirmaciones.

Cambios importantes desde la versión 1.1.0

Perfiles de Baseline

  • El nuevo complemento de Gradle para perfiles de Baseline automatiza la captura y la inclusión de perfiles de Baseline en tu flujo de trabajo de prueba y compilación.
  • Ahora es estable BaselineProfileRule.collect, una versión optimizada y simplificada de la API experimental anterior de BaselineProfileRule.collectBaselineProfile.
    • Solo especifica packageName y usa tu app
  • Para las bibliotecas que generan perfiles de Baseline, ahora puedes filtrar las reglas generadas en código (argumento BaselineProfileRule.collect) o de forma más simple en el complemento de Gradle.
  • Correcciones
    • Se corrigió la colección de perfiles de Baseline en Android U+ (Id1392, b/277645214).

Macrocomparativas

  • Compilación
    • Macrobenchmark ahora restablece por completo el estado de compilación de cada compilación. Para ello, debes reinstalar el APK antes de Android 14, por lo que se recomienda generar comparativas en Android 14 y versiones posteriores si deseas conservar el estado (como el acceso del usuario) en lo que se mide.
    • También puedes solucionar este problema controlando la compilación de apps por separado y omitiendo la compilación con CompilationMode.Ignore() o el argumento de instrumentación.
  • Argumentos de instrumentación

    • Compatibilidad con el argumento de instrumentación androidx.benchmark.dryRunMode.enable (ya disponible en microcomparativas) para ejecutar ejecuciones de validación más rápidas (p. ej., cuando se crean las comparativas o en el envío previo).
    • Compatibilidad con androidx.benchmark.profiling.mode=StackSampling y MethodTracing.
    • Se agregó androidx.benchmark.enabledRules para permitir el filtrado del perfil de referencia en comparación con las pruebas de reglas de macrocomparativas.
    • Se agregó el argumento androidx.benchmark.perfettoSdkTracing.enable para habilitar el seguimiento con trace-perfetto, p.ej., el seguimiento de recomposición de Compose. Ten en cuenta que, cuando se usa con StartupMode.COLD, el tiempo se verá afectado significativamente, ya que la biblioteca de seguimiento se carga y se habilita durante el inicio de la app.
  • Requisitos

    • Macrobenchmark ahora requiere ProfileInstaller 1.3.0 o una versión posterior en la app de destino para habilitar la captura o el restablecimiento de perfiles, y borrar la caché del sombreador.
  • Nuevas APIs de métricas experimentales

    • Se agregó TraceSectionMetric experimental, que permite extraer tiempos simples de bloques trace("") {} en tu app, o TraceMetric a fin de aprovechar la capacidad de consulta completa de Perfetto TraceProcessor.
    • Se agregó PowerMetric experimental para capturar información sobre el uso de energía.
    • Se agregó MemoryCountersMetric experimental para contar las fallas de la página.
    • Se agregó la API experimental de PerfettoTraceProcessor, que se usa internamente para extraer métricas de los registros del sistema (también conocidos como seguimientos de Perfetto).
  • Correcciones

    • Se corrigieron fallas que se producían al instalar o extraer perfiles de una app instalada a partir de varios APK (p.ej., del paquete de aplicación).
    • Se corrigió FrameTimingMetric ignorando fotogramas con IDs de marcos incoherentes (por lo general, fotogramas durante ripples en el nivel de API 31 y versiones posteriores) (I747d2, b/279088460).
    • Se corrigieron errores de análisis de registros superiores a 64 MB (Ief831, b/269949822).
    • Se aclararon errores que ocurrían cuando la imagen de SO del dispositivo (en especial el emulador) no estaba configurada correctamente para el seguimiento o la compilación.
    • Omitir la comprobación de nivel de batería en dispositivos sin batería (micro y macro)
    • Resultado de archivos mejorado, con errores más claros para directorios de salida no válidos y valores predeterminados más seguros
    • Se mejoró la estabilidad de StartupMode.COLD mediante la eliminación constante de la caché del sombreador (también se expone a través de MacrobenchmarkScope.dropShaderCache).
    • Se corrigió el resguardo de Leanback para startActivityAndWait.

Microcomparativas

  • Funciones
    • La generación de perfiles se trasladó a una fase separada, después de otras métricas, por lo que una ejecución de prueba puede mostrar resultados precisos de latencia y generación de perfiles.
  • APIs experimentales
    • Se agregó la API experimental de MicrobenchmarkConfig para definir métricas personalizadas y configurar el seguimiento y la generación de perfiles. Se puede usar para capturar seguimientos de métodos o puntos de seguimiento (pero ten en cuenta la sobrecarga del seguimiento).
    • Se agregaron APIs experimentales para controlar BenchmarkState por separado de BenchmarkRule, sin JUnit.
    • Se agregó el registro experimental PerfettoTrace para habilitar la captura de registros de Perfetto, con una configuración personalizada, independiente de las APIs de comparativas.
  • Correcciones
    • Se solucionó el problema relacionado con la falta de espacios en blanco iniciales en el resultado de las comparativas de Android Studio.
    • Se solucionó el problema por el que no se podían imprimir las advertencias en el resultado de las comparativas de Android Studio
    • Se corrigió la falla de SampledProfiling en Android 13 (nivel de API 33) y versiones posteriores.
    • Se mejoró el rendimiento de dryRunMode de forma masiva mediante la omisión del seguimiento de IsolationActivity y Perfetto (el modo de ejecución de prueba hasta 10 veces más rápido en versiones anteriores de SO).

Versión 1.2.0-rc02

6 de octubre de 2023

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-rc02. La versión 1.2.0-rc02 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió el resultado del archivo de comparativas para que ya no rompa la copia del archivo de complemento BaselineProfile. Los archivos se generaron y se copiaron fuera del dispositivo, pero se les cambió el nombre para que el complemento de Gradle no los viera. (I8dbcc, b/303034735, b/296453339).
  • Se aclararon los mensajes de error de carga de tracing-perfetto durante la inserción desde el módulo de Macrobenchmark en la aplicación de destino.

Versión 1.2.0-rc01

20 de septiembre de 2023

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-rc01. La versión 1.2.0-rc01 contiene estas confirmaciones.

Correcciones de errores

  • Ahora se arroja una excepción (con instrucciones para solucionar el problema) cuando el seguimiento del SDK de Perfetto no se inicializa en una comparativa. (I6c878, b/286228781).
  • Se corrigió la falla de OOM que se producía cuando se convertía el seguimiento del método de ART -> formato perfetto (I106bd, b/296905344).
  • (Macrobenchmark) Se aclaró la etiqueta de seguimiento de método cuando se vinculaba en el resultado de la prueba de Studio y se corrigieron los nombres de archivo de seguimiento de método para que sean únicos en el dispositivo o el host, de modo que no se reemplacen cuando se ejecute más de una comparativa (I08e65, b/285912360).
  • Garantiza que el dispositivo esté activo cuando se captura un perfil de Baseline. (I503fc).

Versión 1.2.0-beta05

30 de agosto de 2023

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-beta05. La versión 1.2.0-beta05 contiene estas confirmaciones.

Nuevas funciones

  • El complemento de Gradle para perfiles de Baseline ahora es compatible con el complemento de Android para Gradle 8.3. (aosp/2715214).

Versión 1.2.0-beta04

23 de agosto de 2023

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-beta04. La versión 1.2.0-beta04 contiene estas confirmaciones.

Nuevas funciones

  • El complemento de Gradle para perfiles de Baseline ahora es compatible con el complemento de Android para Gradle 8.3. (aosp/2715214).

Correcciones de errores

  • Se corrigieron fallas al escribir, mover y extraer archivos (especialmente los de pruebas parametrizadas) depurando aún más los nombres de los archivos de salida y evitando "=" y ":" en los nombres de los archivos de salida. (I759d8).

Versión 1.2.0-beta03

9 de agosto de 2023

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-beta03. La versión 1.2.0-beta03 contiene estas confirmaciones.

Cambios en la API

  • Se agregó un argumento para filtrar TraceSectionMetric solo al paquete de destino, activado de forma predeterminada (Ia219b, b/292208786).

Correcciones de errores

  • Se cambió el nombre del argumento de instrumentación fullTracing.enable a perfettoSdkTracing.enable para mantener la coherencia con el nombre del artefacto y otras referencias. fullTracing.enable seguirá funcionando como resguardo. (I7cc00).
  • Los puntos de seguimiento internos de la biblioteca de comparativas (incluido el seguimiento de fase o bucle de microcomparativas) ahora se mostrarán en el lector de registros del sistema de Studio y se anidarán en el proceso correcto en Perfetto. (I6b2e7, b/293510459).
  • Se quitó el error NOT PROFILEABLE de macrocomparativas en el nivel de API 31 y versiones posteriores, y se omitió la verificación perfilable en dispositivos con permisos de administrador eng/userdebug (I2abac, b/291722507).
  • Cuando se usan optimizaciones del diseño DEX, las reglas del perfil de inicio ahora también se consideran como reglas de perfil de referencia. (aosp/2684246, b/293889189).

Versión 1.2.0-beta02

26 de julio de 2023

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-beta02. La versión 1.2.0-beta02 contiene estas confirmaciones.

Cambios en la API

  • Se agregaron APIs experimentales para las métricas personalizadas y la configuración de microbench (por ejemplo, generador de perfiles y seguimiento). (I86101, b/291820856).

Correcciones de errores

  • Se informó el error en macrobench cuando el SO está mal configurado para el seguimiento, como se corrigió recientemente en los emuladores ARM64 de la API 26/28 (I0a328, b/282191686).
  • Se agregaron detalles sobre la falla de restablecimiento de la compilación para sugerir la actualización del emulador, ya que algunos emuladores solucionaron este problema recientemente. (I8c815, b/282191686).
  • Haz que androidx.test.uiautomator:uiautomator:2.2.0 sea un api en lugar de una dependencia de implementation. (I1981e).

Versión 1.2.0-beta01

18 de julio de 2023

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-beta01. La versión 1.2.0-beta01 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigieron las advertencias que a veces se suprimían en el resultado de Benchmark en Studio y no se mostraban los espacios en blanco iniciales de la solución alternativa en Studio (Ia61d0, b/227205461, b/286306579, b/285912360).
  • Se corrigió el comentario de FrameTimingMetric. La submétrica se llama frameDurationCpuMs. (Ib097f, b/288830934).

Versión 1.2.0-alpha16

21 de junio de 2023

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-alpha16. La versión 1.2.0-alpha16 contiene estas confirmaciones.

Cambios en la API

  • Se cambió el nombre de la API de BaselineProfileRule.collectBaselineProfile() por BaselineProfileRule.collect() (I4b665).

Correcciones de errores

  • Compatibilidad con macrocomparativas para androidx.benchmark.profiling.mode = MethodTracing. (I7ad37, b/285912360).
  • La generación de perfiles de microcomparativas se trasladó a una fase separada, por lo que se produce en secuencia después de la medición, en lugar de reemplazarla. Ahora también se incluyen MethodTracing secciones de registro en el registro de Perfetto capturado, si está presente (I9f657, b/285014599).
  • Agrega la medición de recuento a TraceSectionMetric con Mode.Sum. (Ic121a, b/264398606).

Versión 1.2.0-alpha15

7 de junio de 2023

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-alpha15. La versión 1.2.0-alpha15 contiene estas confirmaciones.

Nuevas funciones

  • Se agregó MemoryUsageMetric experimental para realizar un seguimiento del uso de memoria de una aplicación de destino. (I56453, b/133147125, b/281749311).
  • Se agregó compatibilidad para configuraciones de Perfetto completamente personalizadas con PerfettoTrace.record (If9d75, b/280460183).
  • Se agregó la propiedad para omitir la generación de perfiles de Baseline. Uso: ./gradlew assemble -Pandroidx.baselineprofile.skipgeneration. (I37fda, b/283447020).

Cambios en la API

  • La API de collectBaselineProfile siempre genera perfiles de Baseline estables. Se quitó la API de collectStableBaselineProfile, por lo que debes usar collectBaselineProfile. (I17262, b/281078707).
  • Se cambió el argumento filterPredicate de BaselineProfileRule a no nulo, con un valor predeterminado equivalente para que el comportamiento del filtro predeterminado sea más claro en los documentos. (I3816e).

Correcciones de errores

  • Inhabilita el registro de IsolationActivity y Perfetto en dryRunMode para mejorar significativamente el rendimiento, ya que eran la mayor parte del tiempo de ejecución. (Ie4f7d).
  • Se agregó compatibilidad con el muestreo de pila de llamadas en Macrobenchmarks mediante los argumentos de prueba de instrumentación androidx.benchmark.profiling.mode=StackSampling y androidx.benchmark.profiling.sampleFrequency. (I1d13b, b/282188489).
  • Se corrigió la falla que se producía cuando se descartaban sombreadores en Android U (nivel de API 34), así como en emuladores. (I031ca, b/274314544).

Versión 1.2.0-alpha14

3 de mayo de 2023

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-alpha14. La versión 1.2.0-alpha14 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió FrameTimingMetric por ignorar marcos con IDs de marcos incoherentes. Esto haría que algunas animaciones en versiones recientes de la plataforma (nivel de API 31 o superior) ignoraran muchos fotogramas mientras RenderThread se animaba (p.ej., durante un efecto de ondas). (I747d2, b/279088460).
  • Se corrigió el análisis del procesador de seguimientos de registros de más de 64 MB. (Ief831, b/269949822).
  • Se corrigió la generación de perfiles de referencia en Android U que fallaba debido al resultado diferente del comando pm dump-profiles. (Id1392, b/277645214).
  • Se corrigió la secuencia de comandos de bloqueo del reloj de la GPU para comparar las cadenas de forma correcta (I53e54, b/213935715).

Versión 1.2.0-alpha13

5 de abril de 2023

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-alpha13. La versión 1.2.0-alpha13 contiene estas confirmaciones.

Cambios en la API

  • Se agregó el parámetro de tipo de perfil cuando se generan perfiles de Baseline para admitir la próxima función de perfil de inicio (Ie20d7, b/275093123).
  • Se agregó una nueva API experimental de TraceMetric para definir métricas totalmente personalizadas en función del contenido de un registro de Perfetto (I4ce31, b/219851406).
  • Se agregó una métrica experimental para determinar la cantidad de fallas de la página durante una comparativa. (I48db0).

Versión 1.2.0-alpha12

22 de marzo de 2023

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-alpha12. La versión 1.2.0-alpha12 contiene estas confirmaciones.

Nuevas funciones

  • El nuevo complemento de Gradle para perfiles de Baseline se lanza en la versión alfa, lo que facilita la generación de un perfil de Baseline y simplifica el flujo de trabajo de los desarrolladores.

Cambios en la API

  • Se quitó la compatibilidad con el registro de Perfetto en las APIs 21 y 22, que incluye microcomparativas y las APIs experimentales de PerfettoTrace Antes de esta versión, UiAutomation conexiones no eran confiables en algunos dispositivos. (I78e8c).
  • Se agregó la API experimental pública para PerfettoTraceProcessor a fin de habilitar el análisis del contenido de registro Este es un paso hacia métricas totalmente personalizadas basadas en datos de registro de Perfetto. (I2659e, b/219851406).

Versión 1.2.0-alpha11

8 de marzo de 2023

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-alpha11. La versión 1.2.0-alpha11 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigieron fallas en MacrobenchmarkRule y BaselineProfileRule cuando se reinstalaban o se extraían perfiles de un paquete de aplicación con varios APKs. (I0d8c8, b/270587281).

Versión 1.2.0-alpha10

22 de febrero de 2023

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-alpha10. La versión 1.2.0-alpha10 contiene estas confirmaciones.

Nuevas funciones

  • En Android 14 y versiones posteriores, Macrobenchmark ya no reinstala aplicaciones objetivo para restablecer el estado de compilación, gracias a una nueva función de la plataforma. Anteriormente, era necesario tener un dispositivo con permisos de administrador o resolver la eliminación todos los estados de la aplicación (por ejemplo, datos de acceso del usuario) antes de cada ejecución de comparativa (I9b08c, b/249143766).

Correcciones de errores

  • Se corrigió DryRunMode para que ya no falle en caso de perfil vacío debido a una omisión de compilación. En su lugar, ejecuta una sola iteración y extrae el perfil para garantizar que se capture algo. (I2f05d, b/266403227).
  • Se corrigió la falla de PowerMetric que se producía cuando se verificaba la presencia de powerstats en niveles de API anteriores (5faaf9, b/268253898).

Versión 1.2.0-alpha09

11 de enero de 2023

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-alpha09. La versión 1.2.0-alpha09 contiene estas confirmaciones.

Correcciones de errores

  • Se habilitó el paso del argumento de instrumentación de None a androidx.benchmark.enabledRules para inhabilitar la generación de perfiles de Baseline y todas las comparativas (I3d7fd, b/258671856).
  • Se corrigió la captura PerfettoTrace en módulos de apps (es decir, las APK de prueba de instrumentación que no son automáticas) (I12cfc).
  • Se corrigió el orden de los argumentos de extracción de adb de perfiles de Baseline en los resultados de salida de Studio (I958d1, b/261781624).
  • Ahora se reconoce correctamente la API 33 del emulador de ARM cuando se intenta ejecutar una macrocomparativa y, además, se imprime la advertencia de forma correcta (69133b,b/262209591).
  • Se omite la comprobación de nivel de batería en dispositivos sin batería en Macrobenchmark (fe4114, b/232448937).

Versión 1.2.0-alpha08

7 de diciembre de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-alpha08. La versión 1.2.0-alpha08 contiene estas confirmaciones.

Cambios en la API

  • Se agregaron las nuevas APIs experimentales PerfettoTrace.record {} y PerfettoTraceRule para capturar los registros de Perfetto (también conocidos como Registros del sistema) como parte de una prueba, para inspeccionar el comportamiento y el rendimiento de la misma (I3ba16).
  • BaselineProfileRule ahora acepta un predicado de filtro, en lugar de una lista de prefijos de paquetes. Esto le da al control total del filtro (I93240).
  • Se agregó una API experimental, BaselineProfileRule.collectStableBaselineProfile, que espera hasta que un Perfil de Baseline sea estable para N iteraciones (I923f3).
  • Se agregó la capacidad de especificar un prefijo de nombre de archivo de resultado durante la generación de Perfiles de Baseline con BaselineProfileRule (I7b59f, b/260318655).

Correcciones de errores

  • Se mejoró la seguridad de la escritura de los archivos salientes, que debería evitar que los archivos de salida se escriban/anexen silenciosamente, especialmente en las APIs 21/22 (If8c44, b/227510293).
  • Se corrigió el resultado de seguimiento de simpleperf para crear y colocar el archivo correctamente. Por lo general, también se corrigen errores en los que Gradle extrae un archivo sin éxito (I12a1c, b/259424099).
  • Se mejoró el mensaje de error de profileinstaller impreso cuando la versión es demasiado antigua. Este te indicará que actualices la versión de profileinstaller (1.2.1) para medir los Perfiles de Baseline de la APIs 31 a 33, en lugar de indicar que no es compatible (Ia517f, b/253519888).
  • Se corrigieron varias fallas del comando de shell del mensaje de one error "Print needed API <=23", incluidas las fallas de configuración de perfetto para capturar objetos binarios y las de captura de seguimiento (Ib6b87, b/258863685).
  • Ordena automáticamente las reglas de perfiles generadas para minimizar la cantidad de cambios que se realizan con el tiempo (al revisar las reglas de perfiles en el control de código fuente) (Ie2509).
  • Se corrigió una falla en compilaciones inferiores a Android 13 sin permisos de administrador (API 33) con el mensaje Expected no stderr from echo 3 > /proc/sys/vm/drop_caches (I6c245, b/259508183).

Problemas conocidos: MacrobenchmarkScope.dropShaderCache() puede fallar debido a la falta de un registro de emisión en el manifiesto del instalador de perfiles, que aún no se lanzó (I5c728, b/258619948). Para resolver el problema en profileinstaller:1.3.0-alpha02, agrega lo siguiente al AndroidManifest.xml de la aplicación (no de las comparativas):

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

Versión 1.2.0-alpha07

9 de noviembre de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-alpha07. La versión 1.2.0-alpha07 contiene estas confirmaciones.

Cambios en la API

  • Se agregó la API de PowerMetric para medir la energía y la potencia en Macrobenchmarks (Ife601, b/220183779).
  • Se corrigió MacrobenchmarkScope.dropShaderCache() para descartar la caché del sombreador. Esto quita alrededor de 20 ms de ruido de las comparativas de StartupMode.COLD, ya que los sombreadores ahora se borran de manera coherente en cada iteración. Antes, la compilación de Partial con iteraciones de preparación informaba números incorrectamente rápidos, ya que era más probable que el sombreador de caché se realizara durante la preparación. Esta corrección requiere un dispositivo con permisos de administrador o el uso de profileinstaller:1.3.0-alpha02 en la app de destino. Para conocer los cambios en la API de la biblioteca de ProfileInstaller, consulta la página ProfileInstaller 1.30-alpha02 (Ia5171, b/231455742).
  • Se agregó TraceSectionMode("label", Mode.Sum), lo que permite medir el tiempo total empleado en varias secciones de seguimiento con la misma etiqueta. Por ejemplo, TraceSectionMetric("inflate", Mode.Sum) registrará una métrica inflateMs para el tiempo total en una macrocomparativa invertida en inflación. También se quitó el requisito de nivel de API 29, ya que TraceSectionMetric funciona junto con androidx.tracing.Trace hasta niveles de API inferiores, con el uso de forceEnableAppTracing dentro de la app de destino (Id7b68, b/231455742).

Correcciones de errores

  • Se mejoró la seguridad de todos los comandos de shell internos con la validación de todos los resultados/errores (I5984d, b/255402908, b/253094958).
  • Se especificó el dispositivo en el comando adb pull del perfil de referencia, de modo que se pueda copiar el comando de extracción si hay varios dispositivos conectados (hasta un emulador) (I6ac6c, b/223359380).
  • Se agregó un error si el APK de prueba de macrocomparativas no está configurado como instrumentación autónoma. Este error evita las macrocomparativas dentro del proceso de la app de destino. En el proceso, Macrobench no podría compilar, eliminar ni iniciar la app, ni controlar sus propios permisos (I4279b).
  • Se corrigió un problema en measureRepeated() por el que StartupMode.COLD no finalizaba el proceso de destino después de setupBlock. Ahora cuando setupBlock interactúe con la app no dejará el proceso en ejecución ni una medición de inicio en frío no válida (I8ebb7).

Versión 1.2.0-alpha06

24 de octubre de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-alpha06. La versión 1.2.0-alpha06 contiene estas confirmaciones.

Cambios en la API

  • BaselineProfileRule ya no requiere raíces en Android 13 (nivel de API 33) y ya no es experimental (Ie0a7d, b/250083467, b/253094958).
    • Este cambio también corrige cómo se vacían los perfiles de una app en el disco en dispositivos que no tienen raíces, pero requiere actualizar la dependencia de ProfileInstaller de la app de destino.
    • Si quieres usar BaselineProfileRule o CompilationMode.Partial(warmupIterations) en un dispositivo sin raíces, también debes actualizar tu app de destino a fin de que use androidx.profileinstaller.profileinstaller:1.3.0-alpha01. Esto permite vaciar correctamente el perfil en el disco, de modo que pueda compilarse o extraerse.

Correcciones de errores

  • Se corrigió la falla de SampledProfiling en el nivel de API 33 y superiores (I40743, b/236109374).

Versión 1.2.0-alpha05

5 de octubre de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-alpha05. La versión 1.2.0-alpha05 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió el desglose de fotogramas en el visor de seguimiento del sistema de Studio para comparativas de seguimientos capturados (I3f3ae, b/239677443).
  • Se corrigió FrameTimingMetric para enumerar FrameOverrun como requisito de la API 31 en lugar de la 29 (I716dd, b/220702554).
  • Se estableció la iteración en BaselineProfileRule y ahor se muestra con claridad si el paquete de destino no está instalado (ya se hizo para MacrobenchmarkRule) (Ic09a3, b/227991471).

Versión 1.2.0-alpha04

21 de septiembre de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-alpha04. La versión 1.2.0-alpha04 contiene estas confirmaciones.

Nuevas funciones

  • Se agregó compatibilidad con el argumento de instrumentación dryRunMode.enable a macrocomparativas (ya disponibles en micro) a fin de lograr un desarrollo local más rápido y validar la automatización de apps (p. ej., en el envío previo). Esto anula las iteraciones a 1, omite la compilación, elimina todos los errores de configuración e inhabilita la salida del archivo de medición .json (Ib51b4, b/175149857).

    En la línea de comandos de Gradle:

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

    En build.gradle:

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

Correcciones de errores

  • Se corrigió StartupTimingMetric para que ya no requiera que las actividades medidas se inicien a través de MacrobenchmarkScope.startActivityAndWait(). Esto significa que la métrica puede recoger lanzamientos de, p. ej., notificaciones, Context.startActivity(), navegación basada en la actividad en la app o comandos de shell (Ia2de6, b/245414235).
  • Se corrigió el error por el que startActivityAndWait agotaba el tiempo de espera al intentar esperar la finalización del inicio en emuladores reduciendo la rigurosidad de la detección de fotogramas (Ibe2c6, b/244594339, b/228946895).

Versión 1.2.0-alpha03

7 de septiembre de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-alpha03. La versión 1.2.0-alpha03 contiene estas confirmaciones.

Nuevas funciones

  • Se agregaron APIs experimentales para usar BenchmarkState de forma independiente, separadas de BenchmarkRule/JUnit4 (Id478f, b/228489614).

Correcciones de errores

  • Se agregó el resguardo de Leanback para startActivityAndWait (01ed77, b/242899915).

Versión 1.2.0-alpha02

24 de agosto de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-alpha02. La Versión 1.2.0-alpha02 contiene estas confirmaciones.

Cambios en la API

  • La configuración predeterminada es am force stop para MacrobenchmarkScope.killProcess(), incluso cuando tiene permisos de administrador, excepto durante la generación del perfil de Baseline. Esto se puede anular con un argumento booleano opcional (02cce9, b/241214097).

Correcciones de errores

  • Se admite la generación de perfiles de referencia para apps del sistema (I900b8, b/241214097).
  • Se admite la verificación de métricas de energía de ODPM en dispositivos sin derechos de administrador (a38c78, b/229623230).

Versión 1.2.0-alpha01

27 de julio de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.2.0-alpha01. La versión 1.2.0-alpha01 contiene estas confirmaciones.

Nuevas funciones

  • Se agregó un nuevo componente tracing-perfetto-common que permite habilitar el seguimiento del SDK de Perfetto en una app que lo expone (I2cc7f).
  • Se agregó el argumento de instrumentación androidx.benchmark.enabledRules para habilitar el filtrado de macrobenchmarks solo a benchmarks o solo a la generación de perfiles de referencia. Pasa "Macrobenchmark" o "BaselineProfile" para ejecutar un solo tipo de prueba, p. ej., cuando se genere BaselineProfiles en un emulador. También se admite la lista separada por comas (I756b7, b/230371561).

    Por ejemplo, en el archivo build.gradle de tu macrobenchmark:

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

    O bien, desde la línea de comandos de Gradle:

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

Cambios en la API

  • Se agregó un nuevo PowerMetric para medir tareas de energía y energía en comparativas (I9f39b, b/220183779).
  • Se agregó un nuevo modo de compilación CompilationMode.Ignore para omitir la compilación y el restablecimiento del perfil (Ibbcf8, b/230453509).
  • Se agregó un parámetro nuevo a BaselineProfileRule#collectBaselineProfile para filtrar el archivo de salida por nombres de paquetes (If7338, b/220146561).
  • Permite que el programador descargue el dispositivo para medir el consumo de energía (I6a6cb).
  • Se agregó la capacidad de borrar la caché del sombreador en MacrobenchmarkScope (I32122).
  • Permite al desarrollador configurar la visualización del tipo de métrica y detallar las categorías del subsistema deseadas (I810c9).
  • Anteriormente, se arrojaba una UnsupportedOperationException en la comparativa si se ejecutaba en un dispositivo no compatible. Ahora, la UOE solo ocurre si se usa la métrica en el dispositivo no compatible (es decir, PowerMetric.configure) (I5cf20, b/227229375).
  • Se agregaron TotalPowerMetric y TotalEnergyMetric para medir la energía total y la de cada categoría del sistema en macrobenchmarks (I3b26b, b/224557371).

Correcciones de errores

  • Se solucionó un problema por el que no se restablecían correctamente los métodos compilados entre cada macrobenchmark en compilaciones sin permisos de administrador. Lamentablemente, esto requiere reinstalar el APK cada vez que se realice una iteración, lo que borrará los datos de la aplicación para cada macrobenchmark (I31c74, b/230665435).
  • Se corrigió la falla de registro de seguimiento en la API 21/22 (If7fd6, b/227509388, b/227510293, b/227512788).
  • Se detecta la finalización del inicio de la actividad de sobrecarga para corregir la excepción "No se puede leer ninguna métrica" en la macrobenchmark de inicio (Ia517c).

Versión 1.1.1

Versión 1.1.1

9 de noviembre de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.1.1. La versión 1.1.1 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió android.system.ErrnoException: open failed: EACCES que se producía en algunos dispositivos con Android 11 (nivel de API 30) y superiores. Esta es una corrección puntual de 1.2.0-alpha01 (aosp/2072249).

Versión 1.1.0

Versión 1.1.0

15 de junio de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0. La versión 1.1.0 contiene estas confirmaciones.

  • Esta versión es idéntica a androidx.benchmark:benchmark-*:1.1.0-rc03.

Cambios importantes desde 1.0.0

Versión 1.1.0-rc03

1 de junio de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-rc03. La versión 1.1.0-rc03 contiene estas confirmaciones.

Correcciones de errores

  • Se evita la reinstalación del paquete de destino en cada iteración de benchmark (aosp/​​2093027, b/231976084).

  • Se quitó la demora de 300ms de pressHome() (aosp/2086030, b/231322975).

  • Se mejoró la velocidad de iteración de macrobenchmarks mediante la optimización de los comandos de shell que se usan en nivel interno (aosp/2086023, b/231323582).

  • Se agregó compatibilidad con dispositivos Gradle administrados cuando se generan perfiles de Baseline con Macrobenchmarks (aosp/2062228, b/228926421).

Versión 1.1.0-rc02

11 de mayo de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-rc02. La versión 1.1.0-rc02 contiene estas confirmaciones.

  • Ten en cuenta que esta versión incluye un cambio de comportamiento, ya que ahora las apps se vuelven a instalar por completo entre cada comparativa para garantizar mediciones precisas.

Correcciones de errores/Cambios de comportamiento

  • Se solucionó un problema por el que no se restablecía, de forma correcta, la compilación de apps entre macrobenchmarks ni en todas las compilaciones sin permisos de administrador. Esto corrige muchos casos en los que ejecutar varias pruebas causaba que CompilationMode produjera poco o ningún efecto en las mediciones. Para solucionar este problema, la app de destino ahora está reinstalando por completo cada método de prueba, lo que borrará los datos de la aplicación entre cada macrobenchmark (I31c74, b/230665435).

  • Como esto evita que las apps configuren el estado antes de las pruebas, ahora es posible omitir la compilación o reinstalación para poder solucionar este problema. Por ejemplo, puedes compilar por completo el destino con un comando de shell cmd package compile -f -m speed <package> y, luego, omitir el paso de compilación de macrobenchmarks.

    Por ejemplo, en el archivo build.gradle de tu macrobenchmark:

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

    O bien, desde la línea de comandos de Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
    
  • Ahora es posible compartir un módulo entre macrobenchmarks y el perfil de Baseline que genera pruebas si agregas el argumento de instrumentación androidx.benchmark.enabledRules. Pasa "Macrobenchmark" o "BaselineProfile" para ejecutar un solo tipo de prueba, p. ej., cuando se genere BaselineProfiles en un emulador (I756b7, b/230371561).

    Por ejemplo, en el archivo build.gradle de tu macrobenchmark:

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

    O bien, desde la línea de comandos de Gradle:

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

Versión 1.1.0-rc01

20 de abril de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-rc01. La versión 1.1.0-rc01 contiene estas confirmaciones.

Correcciones de errores

  • Los vínculos de salida del perfil de Baseline en Android Studio ahora usan un nombre de archivo único. De esta manera, el resultado siempre refleja los más recientes del uso de una BaselineProfileRule (aosp/2057008, b/228203086).

Versión 1.1.0-beta06

6 de abril de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-beta06. La versión 1.1.0-beta06 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió una falla de registro de seguimiento en la API 21/22 (If7fd6, b/227509388).
  • Se detecta la finalización del inicio de la actividad de sobrecarga para corregir la excepción "No se puede leer ninguna métrica" en la macrobenchmark de inicio (Ia517c).
  • Se corrigieron las métricas de inicio de Macrobenchmarks cuando se usa CompilationMode.None(). Antes de este cambio, el valor de CompilationMode.Partial() parecía ser más lento que el de Compilation.None() (611ac9).

Versión 1.1.0-beta05

23 de marzo de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-beta05. La versión 1.1.0-beta05 contiene estas confirmaciones.

Correcciones de errores

Versión 1.1.0-beta04

23 de febrero de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-beta04. La versión 1.1.0-beta04 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigieron las métricas que faltaban en Android 10 y NoSuchElementException que causaban los nombres de procesos que no se capturaban, de manera correcta, en los seguimientos (Ib4c17, b/218668335).

  • Se usó PowerManager para la detección de modelos térmicos en Q (API 29) y versiones posteriores. Esto reduce significativamente la frecuencia de los falsos positivos en la detección de modelos térmicos (reintento de comparativas después del enfriamiento de 90 segundos) y acelera las comparativas de manera considerable en compilaciones de usuarios. También proporciona detección de modelos térmicos incluso cuando los relojes están bloqueados (si están bloqueados demasiado alto para el entorno físico del dispositivo) (I9c027, b/217497678, b/131755853).

  • Se filtró la generación de perfiles de muestra de simpleperf para el subproceso measureRepeated a fin de simplificar la inspección (Ic3e12, b/217501939).

  • Se admitieron métricas de subprocesos de la IU con nombre en apps de varios procesos (Ice6c0, b/215988434).

  • Se filtraron las reglas del perfil de Baseline para orientarlas a Android 9 (SDK 28) (aosp/1980331 b/216508418).

  • Se omite la instalación de perfiles cuando se usa Compilation.None(). Además, se informan advertencias cuando la app use una versión anterior de androidx.profileinstaller y del complemento de Android para Gradle (aosp/1977029).

Versión 1.1.0-beta03

9 de febrero de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-beta03. La versión 1.1.0-beta03 contiene estas confirmaciones.

Cambios en la API

  • Se agregó AudioUnderrunMetric a la biblioteca de macrobenchmarks en la marca experimental para permitir la detección de subdesbordamientos de audio (Ib5972).
  • BaselineProfileRule ya no acepta un bloque setup porque esto funcionaba igual que profileBlock (Ic7dfe, b/215536447).

    Por ejemplo:

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

Correcciones de errores

  • Se solucionó el problema por el que no se actualizaban los seguimientos del generador de perfiles de microbench en ejecuciones posteriores cuando se vinculaban en el resultado de Studio (I5ae4d, b/214917025).
  • Se impiden los comandos de shell de compilación en el nivel de API 23 (Ice380).
  • Se cambió el nombre de FrameCpuTime por FrameDurationCpu y FrameUiTime por FrameDurationUi para aclarar que son duraciones, no marcas de tiempo, y para que coincidan con los prefijos (I0eba3, b/216337830).

Versión 1.1.0-beta02

26 de enero de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-beta02. La versión 1.1.0-beta02 contiene estas confirmaciones.

Correcciones de errores

  • Los resultados de Microbenchmark Stack Sampling/Method Tracing Profile ahora están vinculados en el resultado de Studio, de manera similar a otras salidas de generación de perfiles, y no suprimen la métrica de asignación (Idcb65, b/214440748 y b/214253245).
  • Ahora, BaselineProfileRule imprime el comando adb pull en logcat y el resultado de Studio para extraer el archivo de texto de BaselineProfile generado (f08811).

Versión 1.1.0-beta01

12 de enero de 2022

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-beta01. La versión 1.1.0-beta01 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió la opción que habilitaba ignorar el argumento del generador de perfiles (I37373, b/210619998).
  • Se quitó el objeto CompliationModes obsoleto (I98186, b/213467659).
  • Se modificó el argumento del perfil del modelo de referencia de CompilationMode.Partial para aclarar la numeración (Id67ea).

Versión 1.1.0-alpha13

15 de diciembre de 2021

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-alpha13. La versión 1.1.0-alpha13 contiene estas confirmaciones.

Cambios en la API

  • Se agregó el Registro del sistema de baja sobrecarga a la salida de microbench en Android Q (nivel de API 29 o superior). Ten en cuenta que, actualmente, no se obtiene el seguimiento personalizado (a través de las APIs de android.os.Trace o androidx.tracing de Jetpack) para evitar que se vean afectados los resultados. Este seguimiento debería ser útil para diagnosticar inestabilidad, sobre todo desde fuentes que se encuentran fuera de las comparativas (I298be, b/205636583, b/145598917).
  • Se aclaró CompilationModes en tres clases: Completo, Ninguno y Parcial. Antes, se les asignaba un nombre inconsistente según argumentos de compilación (que ahora conocemos como detalles de implementación) y funciones. Esto permite que las compensaciones, las combinaciones potenciales y el comportamiento en las versiones de la plataforma sean más claras (I3d7bf, b/207132597).
  • La configuración y la medición ahora están siempre en pares y en orden. Ahora puedes consultar el nombre y la iteración del paquete (aunque la iteración puede ser null en algunas situaciones de preparación) (Id3b68, b/208357448, b/208369635).

Correcciones de errores

  • Se corrigió CompilationMode.Speed que se consideraba incorrectamente como None (I01137).

Versión 1.1.0-alpha12

17 de noviembre de 2021

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-alpha12. La versión 1.1.0-alpha12 contiene estas confirmaciones.

Nuevas funciones

  • Agrega TraceSectionMetric experimental para las mediciones de tiempo personalizadas basadas en seguimientos (I99db1, b/204572664).

Correcciones de errores

  • Activa el dispositivo en cada iteración para asegurarte de que se pueda probar la IU (se requiere que la pantalla de bloqueo esté inhabilitada) (Ibfa28, b/180963442).
  • Se corrigieron varias fallas en el modo de generación de perfiles de StackSampling en emuladores y dispositivos sin derechos de administrador (Icdbda, b/202719335).
  • Quitamos 0.5 segundos de suspensión al final de cada iteración. Si ves que faltan métricas con este cambio, informa un error (Iff6aa).
  • Disminuye las posibilidades de pérdida de datos y reducción de la sobrecarga de memoria del seguimiento (Id2544, b/199324831, b/204448861).
  • Reduce el tamaño de registro en aproximadamente un 40% si cambias al formato de almacenamiento programable compacto (Id5fb6, b/199324831).
  • Se actualizaron las implementaciones de métricas de inicio para que siempre terminen al final del procesamiento de subprocesos. Esto será más coherente en todas las versiones de la plataforma y se asignará más estrechamente a las mediciones dentro de la app (Ic6b55).

Versión 1.1.0-alpha11

3 de noviembre de 2021

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-alpha11. La versión 1.1.0-alpha11 contiene estas confirmaciones.

Cambios en la API

  • Macrobenchmark ahora tiene un minSdkVersion de 23 (If2655).
  • Se agrega un nuevo BaselineProfileRule experimental que es capaz de generar perfiles de referencia para el recorrido crítico del usuario de la app. Documentación detallada a continuación (Ibbefa, b/203692160).
  • Se quitó la variante de la interfaz measureRepeated, que se agregó para los emisores de Java, ya que causó ambigüedad al completar o resolver el método. Los emisores de Java deberán volver a mostrar Unit.Instance de measureRepeated. Si esto te resulta poco conveniente, informa un error y podemos volver a revisarlo en una versión futura (Ifb23e, b/204331495).

Versión 1.1.0-alpha10

27 de octubre de 2021

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-alpha10. La versión 1.1.0-alpha10 contiene estas confirmaciones.

Cambios en la API

  • Portabilidad a versiones anteriores de StartupTimingMetric para volver al nivel de API 23. Esta nueva implementación también controla mejor reportFullyDrawn() para esperar hasta que se procese el contenido correspondiente (If3ac9, b/183129298).
  • Se agregó JvmOverloads a varios métodos de MacrobenchmarkScope para emisores de Java (I644fe, b/184546459).
  • Proporciona la función alternativa MacrobenchmarkRule.measureRepeated que usa un Consumer<MacrobenchmarkScope> para el uso idiomático en Java (If74ab, b/184546459).

Correcciones de errores

  • Se corrigieron los seguimientos que no se iniciaron con anticipación y faltan datos de métricas. Se espera que esto solucione las excepciones "No se puede leer ninguna métrica durante las comparativas" que haya provocado la biblioteca (I6dfcb, b/193827052, b/200302931).
  • Se cambió el nombre de FrameNegativeSlack por FrameOverrun para aclarar su significado: por cuánto superó el marco su límite de tiempo (I6c2aa, b/203008701).

Versión 1.1.0-alpha09

13 de octubre de 2021

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-alpha09. La versión 1.1.0-alpha09 contiene estas confirmaciones.

Correcciones de errores

  • Se admite la eliminación de caché de la página del kernel sin raíz en el nivel de API 31/S+, lo que aumentará la exactitud de los inicios de StartupMode.COLD (Iecfdb, b/200160030).

Versión 1.1.0-alpha08

29 de septiembre de 2021

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-alpha08. La versión 1.1.0-alpha08 contiene estas confirmaciones.

Cambios en la API

  • Se habilitaron las macroscomparativas de desplazamiento para volver a la API 23 (If39c2, b/183129298).
  • Se agregó un nuevo tipo de métrica de muestra a la IU y el resultado de JSON que se centra en los percentiles de varias muestras por iteración (I56247, b/199940612).
  • Se cambió a las métricas de punto flotante en las bibliotecas comparativas (truncadas en la IU de Studio) (I69249, b/197008210).

Versión 1.1.0-alpha07

1 de septiembre de 2021

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-alpha07. La versión 1.1.0-alpha07 contiene estas confirmaciones.

Cambios en la API

  • Se aumentó la API mínima a 21 para reflejar el nivel de API más bajo que se admitirá en el futuro. La API mínima actual admitida (29) sigue transmitiéndose mediante RequiredApi() (I440d6, b/183129298).

Correcciones de errores

  • Se corrigió ProfileInstaller para facilitar que las apps que usan perfiles de referencia puedan ejecutar MacroBenchmarks mediante CompilationMode.BaselineProfile (I42657, b/196074999). NOTA: También se debe actualizar a androidx.profileinstaller:profileinstaller:1.1.0-alpha04 o una versión posterior.
  • Las comparativas de StartupMode.COLD + CompilationMode.None ahora son más estables (I770cd, b/196074999).

Versión 1.1.0-alpha06

18 de agosto de 2021

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-alpha06. La versión 1.1.0-alpha06 contiene estas confirmaciones.

Cambios en la API

  • Se agregó un argumento de instrumentación androidx.benchmark.iterations para permitir la anulación manual del recuento de iteraciones cuando se realizan pruebas o se generan perfiles a nivel local. (6188be, b/194137879).

Correcciones de errores

  • Se cambió a Simpleperf como generador de perfiles de muestras predeterminado en la API nivel 29 y versiones posteriores (Ic4b34, b/158303822).

Errores conocidos

  • CompilationMode.BaselineProfile está en mantenimiento. Evita usarlo para determinar qué tan buen perfil es por ahora.

Versión 1.1.0-alpha05

4 de agosto de 2021

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-alpha05. La versión 1.1.0-alpha05 contiene estas confirmaciones.

Se canceló 1.1.0-alpha04 antes del lanzamiento debido a una falla esporádica (b/193827052).

Cambios en la API

  • Se cambió startActivityAndWait para invocar el lanzamiento a través de am start, lo que reduce el tiempo de cada iteración de medición aproximadamente 5 segundos, a costa de ya no se admitan elementos parcelables de intent (I5a6f5, b/192009149).

Correcciones de errores

  • Reduce la agresividad de la detección de limitaciones térmicas y vuelve a calcular el modelo de referencia si se regulan con frecuencia (I7327b).
  • Se corrigió FrameTimingMetric para que funcione en la versión beta de Android S (Ib60cc, b/193260119).
  • Usa una EmptyActivity para sacar la app de destino de un estado de detención forzada a fin de admitir mejor CompilationMode.BaselineProfile (Id7cac, b/192084204).
  • Se cambió la extensión del archivo de registro a .perfetto-trace para que coincida con el estándar de la plataforma (I4c236, b/174663039).
  • StartupTimingMetric ahora genera la métrica "fullDrawnMs" para medir el tiempo que tarda tu app en completar la renderización. A fin de definir esta métrica para tu app, llama a Activity.reportFullyDrawn cuando el contenido inicial esté listo, por ejemplo, cuando los elementos de la lista inicial se carguen desde la base de datos o la red (método reportFullyDrawn disponible sin verificaciones de la versión de compilación en ComponentActivity). Ten en cuenta que tu prueba debe ejecutarse durante el tiempo suficiente para capturar la métrica (startActivityAndWait no espera a reportFullyDrawn) (If1141, b/179176560).
  • Se redujo el costo de agregar metadatos de IU a los seguimientos en más de 50 ms (Ic8390, b/193923003).
  • Se aumentó drásticamente la frecuencia de sondeo cuando se detiene el seguimiento, lo que puede reducir el tiempo de ejecución de comparativas de inicio en más de un 30% (Idfbc1, b/193723768).

Versión 1.1.0-alpha03

16 de junio de 2021

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-alpha03. La versión 1.1.0-alpha03 contiene estas confirmaciones.

Nuevas funciones

Correcciones de errores

  • Se actualizó el código de muestra de Gradle que suprime errores de comparativas para usar una API que no sea obsoleta con una sintaxis que también sea compatible con los usuarios de .gradle.kts.

    P. ej.:

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

Versión 1.1.0-alpha02

18 de mayo de 2021

La versión 1.1.0-alpha02 de Benchmark proporciona Macrobenchmarks, un gran componente para generar comparativas. Además de generar comparativas, lo que le permite medir los bucles de CPU, macrobenchmarks te permite medir interacciones completas de la aplicación, como inicio y desplazamiento, y capturar seguimientos. Para obtener más información, consulta la documentación sobre bibliotecas.

Lanzamiento de androidx.benchmark:benchmark-*:1.1.0-alpha02. La versión 1.1.0-alpha02 contiene estas confirmaciones.

Nuevas funciones

Se agregaron artefactos de macrobenchmarks (androidx.benchmark:benchmark-macro-junit4 y androidx.benchmark:benchmark-macro):

  • Captura de métricas de rendimiento de inicio, desplazamiento y animación desde tu app, de forma local o en IC
  • Captura e inspección de seguimientos desde Android Studio

Correcciones de errores

  • Se ideó una solución alternativa al problema de permisos de shell en el directorio de salida de Android 12 (Nota: Es posible que se tenga que actualizar el complemento de Android para Gradle a la versión canary 7.0.0 y Android Studio a Arctic Fox (2020.3.1) para continuar capturando archivos de salida en dispositivos afectados) (Icb039).
  • Compatibilidad de caché de configuración en BenchmarkPlugin (6be1c1, b/159804788).
  • Se corrigió la activación de forma predeterminada del archivo de salida simplificado en un directorio que no requiere requestLegacyExternalStorage=true (8b5a4d, b/172376362).
  • Se corrigieron las advertencias de impresión de logcat de la biblioteca cuando no encontraba subprocesos de JIT en versiones de la plataforma en las que no está presente (I9cc63, b/161847393).
  • Se corrigió la frecuencia máxima del dispositivo de lectura (I55c7a).

Versión 1.1.0-alpha01

10 de junio de 2020

Lanzamiento de androidx.benchmark:benchmark-common:1.1.0-alpha01, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01 y androidx.benchmark:benchmark-junit4:1.1.0-alpha01. La versión 1.1.0-alpha01 contiene estas confirmaciones.

Nuevas funciones de 1.1

  • Métrica de asignación: Las comparativas ahora ejecutan una fase adicional luego de la preparación y sincronización, y capturan los recuentos de asignación. Las asignaciones pueden causar problemas de rendimiento en versiones anteriores de la plataforma (los 140 ns en O se convirtieron en 8 ns en M, medidos en Nexus 5X con relojes bloqueados). Se muestra esta métrica en el resultado de la consola de Android Studio, así como en
  • Compatibilidad con la generación de perfiles: Ahora puedes capturar datos de generación de perfiles para obtener comparativas a fin de inspeccionar el motivo de la ejecución lenta de tu código. Benchmark admite la captura mediante seguimiento de métodos o muestreo de métodos desde ART. Estos archivos pueden inspeccionarse con el generador de perfiles de Android Studio mediante File > Open.
  • El complemento de Gradle para Benchmark ahora proporciona valores predeterminados para una configuración más sencilla:
    • Se establece testBuildType para lanzarse de forma predeterminada, a fin de evitar el uso de dependencias con cobertura de código incorporada. El buildType de lanzamiento es también el predeterminado, que permite que Android Studio seleccione automáticamente la variante de compilación correcta cuando abre un proyecto por primera vez (b/138808399).
    • Se usa signingConfig.debug como la configuración de firma predeterminada (b/153583269).

** Correcciones de errores **

  • Se redujo de forma significativa la sobrecarga de la transición de preparación, en la que la primera medición para cada comparativa fue artificialmente más alta que otras. Este problema era más evidente en comparativas muy pequeñas (1 microsegundo o menos) (b/142058671).
  • Se corrigió el error InstrumentationResultParser que se mostraba para cada comparativa cuando se ejecutaba desde la línea de comandos (I64988, b/154248456).

Errores conocidos

  • La línea de comandos y las invocaciones de Gradle de la biblioteca Benchmark no imprimen los resultados de forma directa. Para solucionar este problema, ejecuta el código mediante Studio o analiza el archivo de salida JSON a fin de obtener los resultados.
  • La función de informes de Benchmark no puede extraer informes de dispositivos que tengan una app instalada con un applicationID que termine en "android" o "download" (no distingue entre mayúsculas y minúsculas). Los usuarios que tengan este problema deberán actualizar el complemento de Gradle para Android a la versión 4.2-alpha01 o posterior.

Versión 1.0.0

Versión de Benchmark 1.0.0

20 de noviembre de 2019

Lanzamiento de androidx.benchmark:benchmark-common:1.0.0, androidx.benchmark:benchmark-gradle-plugin:1.0.0 y androidx.benchmark:benchmark-junit4:1.0.0 sin cambios desde la versión 1.0.0-rc01. La versión 1.0.0 contiene estas confirmaciones.

Funciones principales de la versión 1.0.0

La biblioteca de Benchmark te permite escribir comparativas de rendimiento del código de la app y obtener resultados rápidamente.

Evita problemas de compilación y configuración del tiempo de ejecución, y estabiliza el rendimiento del dispositivo para garantizar que las mediciones sean exactas y consistentes. Ejecuta las comparativas directamente en Android Studio o en integración continua para observar el rendimiento del código en el tiempo y evitar las regresiones.

Las funciones principales incluyen:

  • Estabilización del reloj
  • Priorización automática de subprocesos
  • Compatibilidad con las pruebas de rendimiento de IU, como en la muestra de RecyclerView
  • Repetición y calentamiento con JIT
  • Resultado de comparativa JSON para el posprocesamiento

Versión 1.0.0-rc01

23 de octubre de 2019

Lanzamiento de androidx.benchmark:benchmark-common:1.0.0-rc01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01 y androidx.benchmark:benchmark-junit4:1.0.0-rc01. La versión 1.0.0-rc01 contiene estas confirmaciones.

Nuevas funciones

  • Se agregó el seguimiento de systrace a las comparativas

Correcciones de errores

  • Se corrigió el problema de inestabilidad de métrica donde JIT no finalizaba antes del calentamiento debido a la falta de priorización (b/140773023).
  • Directorio de resultado de JSON unificado en el complemento de Gradle para Android 3.5 y 3.6

Versión 1.0.0-beta01

9 de octubre de 2019

Lanzamiento de androidx.benchmark:benchmark-common:1.0.0-beta01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01 y androidx.benchmark:benchmark-junit4:1.0.0-beta01. La versión 1.0.0-beta01 contiene estas confirmaciones.

Nuevas funciones

  • Ejecuta la recolección de elementos no utilizados antes de cada preparación para reducir la presión de memoria de una comparativa a otra (b/140895105).

Correcciones de errores

  • Se agregó la dependencia de androidx.annotation:android-experimental-lint para que el código de Java produzca correctamente los errores de lint cuando no se utiliza la API experimental, de forma similar a lo que proporciona la anotación experimental Kotlin para las llamadas a Kotlin.
  • Ahora detecta de manera correcta el uso del argumento de instrumentación additionalTestOutputDir para el resultado en el complemento de Gradle para Android 3.6, a fin de saber cuándo AGP procesará la copia de datos.
  • Se corrigió la frecuencia de reloj no detectada en JSON para imprimir correctamente -1 (b/141945670).

Versión 1.0.0-alpha06

18 de septiembre de 2019

Lanzamiento de androidx.benchmark:benchmark-common:1.0.0-alpha06, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06 y androidx.benchmark:benchmark-junit4:1.0.0-alpha06. La versión 1.0.0-alpha06 contiene estas confirmaciones.

Nuevas funciones

  • Se agregó una búsqueda del uso incorrecto del paquete anterior para el corredor de prueba, que ahora proporciona un mensaje de error más útil.

Cambios en la API

  • La anotación experimental ExperimentalAnnotationReport ahora es correctamente pública. El uso de la API experimental BenchmarkState#report ahora requiere esta anotación

Versión 1.0.0-alpha05

5 de septiembre de 2019

Lanzamiento de androidx.benchmark:benchmark-common:1.0.0-alpha05, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05 y androidx.benchmark:benchmark-junit4:1.0.0-alpha05. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Cambios en la API

  • La API de BenchmarkState.reportData ahora se marca como experimental

Correcciones de errores

  • Se corrigió la secuencia de comandos de bloqueo de reloj, que fallaba en los dispositivos a los que les faltaban las utilidades de shell cut o expr.
  • Se corrigió un problema con la tarea ./gradlew lockClocks que se bloqueaba en los dispositivos con permisos de administrador con una versión anterior de la utilidad su, que no era compatible con la marca -c.

Versión 1.0.0-alpha04

7 de agosto de 2019

Lanzamiento de androidx.benchmark:benchmark-common:1.0.0-alpha04, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04 y androidx.benchmark:benchmark-junit4:1.0.0-alpha04. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

También se agregó nueva documentación sobre cómo usar la biblioteca Benchmark sin Gradle, tanto para usarla con diferentes sistemas de compilación (como Bazel o Buck), como para cuando se ejecuta en CI. Para obtener más información, consulta Cómo compilar comparativas sin Gradle y Cómo ejecutar comparativas en la integración continua.

Nuevas funciones

  • Complemento de Gradle
    • Ahora inhabilita automáticamente la cobertura de la prueba y establece AndroidBenchmarkRunner de forma predeterminada (b/138374050).
    • Se agregó compatibilidad con la nueva copia de datos basada en AGP, para cuando se ejecutan comparativas y se usa AGP 3.6+.
  • Adiciones de formato JSON
    • Tiempo total de ejecución de prueba de comparativas (b/133147694).
    • Las comparativas @Parameterized que usan una string de nombre (por ejemplo, @Parameters(name = "size={0},depth={1}")) ahora muestran nombres y valores de parámetros por comparativa en el resultado de JSON ( b/132578772 ).
  • Modo de ejecución en seco (b/138785848)
    • Se agregó un modo de "ejecución en seco" para ejecutar cada bucle de comparativa solo una vez, a fin de verificar errores/fallas sin capturar mediciones. Esto puede ser útil, p. ej., para ejecutar comparativas con rapidez en el envío previo para verificar que no estén dañadas.

Cambios en la API

  • Se modificó la estructura del módulo y se dividió la biblioteca (b/138451391).
    • benchmark:benchmark-junit4 contiene clases con dependencia de JUnit: AndroidBenchmarkRunner y BenchmarkRule, que se movieron al paquete androidx.benchmark.junit4.
    • benchmark:benchmark-common contiene el resto de la lógica, incluida la API de BenchmarkState.
    • Esta división permitirá que la biblioteca admita comparativas sin las APIs de JUnit4 en el futuro.
  • Las advertencias de configuración ahora se tratan como errores y producen fallas en las pruebas (b/137653596).
    • Esto se hace para alentar aún más las mediciones precisas, especialmente en IC.
    • Estos errores se pueden volver a reducir a advertencias con un argumento de instrumentación. Por ejemplo: -e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"

Correcciones de errores

  • Los errores que se producen al escribir en el almacenamiento externo en dispositivos Q proporcionan mensajes más descriptivos, con sugerencias sobre cómo resolver el problema.
  • Las pantallas se encienden automáticamente durante las ejecuciones de comparativas, en lugar de fallar cuando la pantalla está apagada.

Contribuciones externas

  • ¡Gracias a Sergey Zakharov por contribuir con las mejoras de resultados de JSON y la solución para los problemas de apagado de la pantalla!

Versión 1.0.0-alpha03

2 julio de 2019

Lanzamiento de androidx.benchmark:benchmark:1.0.0-alpha03 y androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Nuevas funciones

  • Se expone la duración de la suspensión debido a la regulación térmica por comparativas en el informe de JSON completo.

Correcciones de errores

  • Ya no es necesario aplicar el complemento de Gradle después de los complementos de Android y el bloque Android.
  • Se agregó compatibilidad con informes de comparativas en dispositivos Android 10 que usan almacenamiento específico.

Versión 1.0.0-alpha02

6 de junio de 2019

Lanzamiento de androidx.benchmark:1.0.0-alpha02 y androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02. Para conocer las confirmaciones incluidas en esta versión, consulta este vínculo.

Ten en cuenta que tratamos el esquema JSON como una API. Planeamos seguir las mismas restricciones de estabilidad que otras APIs: estables (con excepciones muy raras) una vez en la versión beta y corregidas en la versión final, con solo adiciones en versiones menores y cambios o eliminaciones en las versiones principales.

Cambios en la API

  • Se revisó el esquema de JSON. Es probable que los próximos cambios en el esquema de JSON se limiten a adiciones:

    • Se reorganizó la estructura del objeto de resultado para admitir grupos de métricas adicionales en el futuro (b/132713021).
    • Se agregó información de contexto de ejecución de prueba, como información sobre el dispositivo y la compilación, y si los relojes están bloqueados, al objeto de nivel superior (b/132711920).
    • Los nombres de métrica de tiempo ahora incluyen "ns" (b/132714527).
    • Se agregaron estadísticas adicionales por métrica informada (máxima, media, mínima) y se quitó la estadística de resumen de "nanos" (b/132713851).
  • Se quitó el resultado de XML (b/132714414).

  • Se quitó la detección de regulador térmico de la API de BenchmarkState.reportData (b/132887006 ).

Correcciones de errores

  • Se corrigió un error por el que ./gradlew lockClocks no permanecía en algunos dispositivos recientes del SO (b/133424037).
  • Se inhabilitó la detección de regulación para el emulador (b/132880807).

Versión 1.0.0-alpha01

7 de mayo de 2019

Lanzamiento de androidx.benchmark:benchmark:1.0.0-alpha01. Las confirmaciones incluidas en esta versión están disponibles en este vínculo.