Mengotomatiskan pengukuran dengan library Macrobenchmark

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Menggunakan Jetpack Macrobenchmark adalah cara yang direkomendasikan untuk menguji performa aplikasi saat Profil Dasar Pengukuran diaktifkan, lalu membandingkan hasil tersebut dengan benchmark dengan Profil Dasar Pengukuran dinonaktifkan. Dengan cara ini, Anda dapat mengukur waktu startup aplikasi (waktu hingga tampilan awal dan penuh), atau performa rendering runtime (untuk melihat apakah frame yang dihasilkan dapat menyebabkan jank).

Macrobenchmark memungkinkan Anda mengontrol kompilasi pra-pengukuran melalui CompilationMode API. Untuk mengukur hasilnya, Anda harus menyetel parameter compilationMode ke nilai yang benar seperti yang ditunjukkan dalam cuplikan berikut:

@RunWith(AndroidJUnit4ClassRunner::class)
class ColdStartupBenchmark {
    @get:Rule
    val benchmarkRule = MacrobenchmarkRule()

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

    @Test
    fun startupBaselineProfile() = startup(CompilationMode.Partial())

    @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.COLD,
        setupBlock = {
            pressHome()
        }
    ) {
        // Waits for the first rendered frame, which represents time to initial display.
        startActivityAndWait()

        // Waits for content to be visible, which represents time to fully drawn.
        device.wait(Until.hasObject(By.res("my-content")), 5_000)
    }
}

Anda dapat melihat hasilnya langsung di Android Studio seperti ditunjukkan di screenshot berikut untuk aplikasi contoh Now in Android yang berjalan di Google Pixel 7. Dari hasil tersebut, Anda dapat melihat bahwa startup aplikasi tercepat saat menggunakan Profil Dasar Pengukuran (275,1 md) berbeda dengan tanpa kompilasi (378,6 md). Perhatikan bahwa kompilasi AOT lengkap ini dapat memerlukan waktu lebih lama (393 md), karena sistem perlu memuat file yang lebih besar dari disk.

Hasil ColdStartupBenchmark yang menampilkan waktu ke tampilan awal tanpa kompilasi = 393 md, kompilasi lengkap = 393 md, Profil Dasar Pengukuran = 275 md

Catatan, sementara contoh sebelumnya menampilkan hasil startup aplikasi yang diambil dengan StartupTimingMetric, ada metrik penting lainnya yang patut dipertimbangkan, seperti FrameTimingMetric. Anda bisa mendapatkan informasi lebih lanjut tentang semua jenis metrik di Merekam metrik.