Membuat profil Microbenchmark

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.

Catatan: Di beberapa versi Android OS dan ART, pelacakan metode dinonaktifkan secara default. Dalam kasus ini, Android Studio akan menampilkan peringatan.

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.