Automatiser les mesures avec la bibliothèque Macrobenchmark

Stay organized with collections Save and categorize content based on your preferences.

Les bibliothèques Macrobenchmark vous permettent de contrôler la compilation des mesures préalables via l'API CompilationMode et l'utilisation de BaselineProfile. Nous vous recommandons d'utiliser Macrobenchmark pour tester les performances d'une application lorsque les profils de référence sont activés, puis de comparer ces résultats à une analyse comparative avec les profils de références désactivés. Pour ce faire, vous devez définir compilationMode sur la valeur appropriée :

@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()
    }
}

L'image 2 illustre un exemple de réussite des tests :

Image 2. Voici les résultats d'un petit test. Les applications volumineuses bénéficieront de plus grands avantages avec les profils de référence.

Notez que, bien que l'exemple ci-dessus examine StartupTimingMetric, d'autres métriques importantes valent la peine d'être prises en compte, comme Jank (métriques de frame), qui peut être mesuré à l'aide de Jetpack Macrobenchmark.