1. Sebelum memulai
Dalam codelab ini, Anda akan mempelajari penggunaan library macrobenchmark. Anda akan mengukur waktu startup aplikasi, yang merupakan metrik utama untuk engagement pengguna, dan waktu render frame, yang menunjukkan lokasi munculnya jank di aplikasi Anda.
Yang akan Anda butuhkan
- Android Studio
- Pengetahuan tentang Kotlin
- Pemahaman dasar tentang pengujian di Android
- Perangkat Android fisik dengan Android 6 (API level 23) atau yang lebih baru
Yang akan Anda lakukan
- Menambahkan modul benchmark ke aplikasi yang sudah ada
- Mengukur waktu startup aplikasi dan waktu render frame
Yang akan Anda pelajari
- Mengukur performa aplikasi secara andal
2. Mempersiapkan
Untuk memulai, clone repositori GitHub dari command line dengan menggunakan perintah berikut:
$ git clone https://github.com/android/codelab-android-performance.git
Atau, Anda dapat mendownload dua file ZIP:
Membuka Project ke Android Studio
- Di jendela Welcome to Android Studio, pilih
Open an Existing Project - Pilih folder
[Download Location]/android-performance/benchmarking(tips: pastikan Anda memilih direktoribenchmarkingyang berisibuild.gradle) - Setelah Android Studio mengimpor project, pastikan Anda dapat menjalankan modul
appuntuk mem-build aplikasi contoh yang akan diukur dengan benchmark.
3. Pengantar Jetpack Macrobenchmark
Library Jetpack Macrobenchmark mengukur performa interaksi pengguna akhir yang lebih besar, seperti startup, berinteraksi dengan UI, dan animasi. Library ini menyediakan kontrol langsung atas lingkungan performa yang Anda uji. Hal ini memungkinkan Anda mengontrol kompilasi, memulai, dan menghentikan aplikasi untuk langsung mengukur startup aplikasi, waktu render frame, dan bagian kode yang dilacak.
Dengan Jetpack Macrobenchmark, Anda dapat:
- mengukur aplikasi beberapa kali dengan kecepatan scroll dan pola peluncuran deterministik
- menghaluskan varian performa dengan membuat rata-rata hasil pada beberapa pengujian
- mengontrol status kompilasi aplikasi – faktor utama dalam stabilitas performa
- memeriksa performa nyata dengan reproduksi lokal pengoptimalan waktu penginstalan yang dilakukan oleh Google Play Store
Instrumentasi yang menggunakan library ini tidak memanggil kode aplikasi Anda secara langsung, tetapi menavigasi aplikasi Anda seperti yang dilakukan pengguna – menyentuh, mengklik, menggeser, dll. Pengukuran terjadi di perangkat selama interaksi ini. Jika Anda ingin mengukur bagian-bagian kode aplikasi secara langsung, lihat Jetpack Microbenchmark.
Menulis benchmark sama seperti menulis pengujian berinstrumen, tetapi Anda tidak perlu memverifikasi status aplikasi Anda. Benchmark menggunakan sintaksis JUnit (@RunWith, @Rule, @Test, dll.), tetapi pengujian berjalan dalam proses terpisah untuk memungkinkan aplikasi Anda dimulai ulang atau dikompilasi terlebih dahulu. Ini memungkinkan kami menjalankan aplikasi Anda tanpa mengganggu status internalnya, seperti yang dilakukan pengguna. Kami melakukannya dengan menggunakan UiAutomator untuk berinteraksi dengan aplikasi target.
Aplikasi contoh
Dalam codelab ini, Anda akan menggunakan aplikasi contoh JetSnack. Ini adalah aplikasi pemesanan camilan virtual, menggunakan Jetpack Compose. Untuk mengukur performa aplikasi, Anda tidak perlu mengetahui detail cara aplikasi dirancang. Yang perlu Anda pahami adalah bagaimana aplikasi berperilaku dan struktur UI sehingga Anda dapat mengakses elemen UI dari benchmark. Jalankan aplikasi dan pahami layar dasarnya dengan memesan camilan pilihan Anda.

4. Menambahkan library Macrobenchmark
Macrobenchmark memerlukan penambahan modul Gradle baru ke project Anda. Cara termudah untuk menambahkannya ke project adalah dengan wizard modul Android Studio.
Buka dialog modul baru (misalnya, klik kanan project atau modul di panel Project, lalu pilih New > Module).

Pilih Benchmark dari panel Templates, pastikan Macrobenchmark dipilih untuk bagian Benchmark module type dan periksa apakah detailnya seperti yang Anda inginkan:

- Target application – aplikasi yang akan diukur dengan benchmark
- Module name – nama modul Gradle benchmark
- Package name – nama paket untuk benchmark
- Minimum SDK – setidaknya Android 6 (API level 23) atau yang lebih baru diperlukan
Klik Finish.
Perubahan yang dibuat oleh wizard modul
Wizard modul membuat beberapa perubahan pada project Anda.
Wizard ini menambahkan modul Gradle bernama macrobenchmark (atau nama yang Anda pilih pada wizard). Modul ini menggunakan plugin com.android.test, yang memberi tahu Gradle untuk tidak menyertakannya dalam aplikasi Anda, sehingga hanya dapat berisi kode pengujian (atau benchmark).
Wizard juga membuat perubahan pada modul aplikasi target yang Anda pilih. Secara khusus, wizard menambahkan jenis build benchmark baru ke modul :app build.gradle.kts, seperti dalam cuplikan berikut:
create("benchmark") {
initWith(buildTypes.getByName("release"))
matchingFallbacks += listOf("release")
isDebuggable = false
}
buildType ini harus mengemulasikan buildType release Anda sedekat mungkin. Perbedaan dengan buildType release adalah signingConfig ditetapkan ke debug yang diperlukan agar Anda dapat mem-build aplikasi secara lokal tanpa memerlukan keystore produksi.
Namun, karena flag debuggable dinonaktifkan, wizard akan menambahkan tag <profileable> ke AndroidManifest.xml Anda untuk memungkinkan benchmark membuat profil aplikasi dengan performa rilis.
<application>
<profileable
android:shell="true"
tools:targetApi="29" />
</application>
Untuk mendapatkan informasi selengkapnya tentang fungsi <profileable>, lihat dokumentasi kami.
Hal terakhir yang dilakukan wizard adalah membuat scaffold untuk menjalankan benchmark pada waktu startup (yang akan kita kerjakan pada langkah berikutnya).
Sekarang Anda siap untuk mulai menulis benchmark.
5. Mengukur startup aplikasi
Waktu startup aplikasi, atau waktu yang diperlukan pengguna untuk mulai menggunakan aplikasi, adalah metrik utama yang memengaruhi engagement pengguna. Wizard modul membuat class pengujian ExampleStartupBenchmark yang mampu mengukur waktu startup aplikasi Anda dan terlihat sebagai berikut:
@RunWith