Cómo automatizar la medición con la biblioteca de Macrobenchmark

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Macrobenchmarks te permite controlar la compilación de medición previa a través de la API de CompilationMode, incluido el uso de BaselineProfile. Recomendamos usar Macrobenchmark para probar el rendimiento de una app cuando están habilitados los perfiles de Baseline y, luego, cotejar esos resultados con una comparativa con los perfiles de Baseline inhabilitados. Para ello, deberás configurar compilationMode en el valor correcto:

@RunWith(AndroidJUnit4ClassRunner::class)
class ColdStartupBenchmark : AbstractStartupBenchmark(StartupMode.COLD)
abstract class AbstractStartupBenchmark(private val startupMode: StartupMode) {
    @get:Rule
    val benchmarkRule = MacrobenchmarkRule()

    @Test
    fun startupNoCompilation() = startup(CompilationMode.None())

    @Test
    fun startupPartialCompilation() = startup(
        CompilationMode.Partial(
            baselineProfileMode = BaselineProfileMode.Disable,
            warmupIterations = 3
        )
    )

    @Test
    fun startupPartialWithBaselineProfiles() =
        startup(CompilationMode.Partial(baselineProfileMode = BaselineProfileMode.Require))

    @Test
    fun startupFullCompilation() = startup(CompilationMode.Full())

    private fun startup(compilationMode: CompilationMode) = benchmarkRule.measureRepeated(
        packageName = "com.example.macrobenchmark.target",
        metrics = listOf(StartupTimingMetric()),
        compilationMode = compilationMode,
        iterations = 10,
        startupMode = startupMode,
        setupBlock = {
            pressHome()
        }
    ) {
        startActivityAndWait()
    }
}

En la figura 2, se muestra un ejemplo de resultados de pruebas aprobadas:

Figura 2: Estos son los resultados de una pequeña prueba. Las apps más grandes se beneficiarán más de los perfiles de Baseline.

Ten en cuenta que, si bien en el ejemplo anterior se analiza StartupTimingMetric, hay otras métricas importantes que vale la pena tener en cuenta, como los Bloqueos (métricas de fotogramas), que se pueden medir con Jetpack Macrobenchmark.