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