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