Secara default, Microbenchmark memberi Anda informasi pengaturan waktu dan alokasi kode yang dieksekusi. Jika Anda ingin menyelidiki mengapa kode terukur berjalan lambat, Anda dapat menjalankan benchmark dengan CPU profiler terlampir.
Untuk memilih konfigurasi profiler, tambahkan argumen runner
instrumentasi androidx.benchmark.profiling.mode
dengan salah satu argumen
MethodTracing
, StackSampling
, atau
None
, seperti ditunjukkan dalam cuplikan berikut.
Untuk informasi
selengkapnya tentang opsi ini, lihat Memilih konfigurasi perekaman.
MethodTracing
setara dengan "Trace Java Methods", dan StackSampling
setara dengan "Sample Java Methods", seperti ditetapkan dalam dokumen tersebut.
Groovy
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"]= 'StackSampling' } }
Kotlin
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"] = "StackSampling" } }
Saat Anda membuat profil benchmark, file .trace
output akan disalin ke host di
direktori bersama hasil JSON. Untuk memeriksa hasil pembuatan profil di
CPU Profiler di Android Studio, pilih File > Open. Untuk mempelajari lebih lanjut
cara membaca dan memahami rekaman aktivitas, lihat Memeriksa Rekaman Aktivitas.
MethodTracing
Pelacakan metode berguna saat Anda mencoba mengoptimalkan kode karena pelacakan tersebut dapat membantu mengidentifikasi metode yang memerlukan waktu lebih lama untuk dijalankan daripada yang lain. Kemudian, Anda dapat berfokus pada pengoptimalan metode yang memiliki dampak terbesar pada performa.
Pembuatan profil terjadi secara berurutan setelah pengukuran kode, sehingga pengujian Anda akan menghasilkan hasil pengaturan waktu dan pembuatan profil yang akurat.
StackSampling
Pelacakan sampel juga dapat membantu mengidentifikasi metode yang mahal tanpa overhead performa pelacakan metode. Namun, jika aplikasi Anda memasuki metode setelah stack panggilan direkam dan metode keluar sebelum perekaman berikutnya, panggilan metode tidak akan dicatat dalam log. Untuk melacak metode dengan benar menggunakan siklus proses yang singkat, gunakan pelacakan metode, bukan pelacakan sampel.
Dengan pengambilan sampel stack, benchmark mengambil sampel stack panggilan setelah pemanasan selesai. Anda dapat mengontrol frekuensi sampel dan durasi pengambilan sampel menggunakan argumen instrumentasi.
Di Android 10 (API 29) dan yang lebih tinggi, pengambilan sampel stack menggunakan Simpleperf untuk mengambil sampel
callstack aplikasi, termasuk kode C++. Di Android 9 (API 28) dan yang lebih rendah, sistem menggunakan
Debug.startMethodTracingSampling
untuk mengambil sampel stack.
Anda dapat mengonfigurasi mode pembuatan profil ini dengan menambahkan argumen instrumentasi lain:
androidx.benchmark.profiling.sampleFrequency
- Jumlah sampel stack yang diambil per detik.
- Jenis argumen: bilangan bulat
- Defaultnya adalah 1.000 sampel per detik.
androidx.benchmark.profiling.sampleDurationSeconds
- Durasi benchmark untuk dijalankan.
- Jenis argumen: bilangan bulat
- Defaultnya adalah 5 detik.
Tidak ada
Argumen ini tidak merekam file pembuatan profil. Informasi tentang pengaturan waktu dan alokasi masih diukur.
Direkomendasikan untuk Anda
- Catatan: teks link ditampilkan saat JavaScript nonaktif
- Argumen Instrumentasi Microbenchmark
- Menjalankan benchmark dalam Continuous Integration