Secara default, Microbenchmark memberi Anda informasi pengaturan waktu dan alokasi kode yang dieksekusi. Jika Anda ingin menyelidiki mengapa kode terukur berjalan lambat, periksa rekaman aktivitas metode—yang diambil secara default di versi OS yang didukung—atau pilih konfigurasi pembuatan profil lainnya.
Untuk memilih konfigurasi profiler, tambahkan argumen runner instrumentasi
androidx.benchmark.profiling.mode
dengan salah satu argumen
MethodTracing
(default),
StackSampling
, atau None
, seperti ditunjukkan dalam
cuplikan berikut.
Untuk informasi selengkapnya tentang opsi ini, lihat Merekam metode Java/Kotlin.
MethodTracing
setara dengan pelacakan, dan StackSampling
setara dengan sampling seperti yang ditentukan 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
Android Studio, pilih link Method Trace atau Stack Sampling Trace
dalam hasil microbenchmark.
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.
Pelacakan metode aktif secara default.
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 perilaku sampling seperti 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.
androidx.benchmark.profiling.skipWhenDurationRisksAnr
- Melewati pelacakan metode jika kemungkinan menyebabkan ANR. Anda harus terus mengaktifkannya untuk menjalankan CI, karena ANR dapat menyebabkan masalah selama CI berjalan lama.
- Jenis argumen: boolean
- Default-nya adalah
true
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