Menjalankan benchmark untuk aplikasi

Benchmark adalah cara untuk memeriksa dan memantau performa aplikasi Anda. Anda dapat menjalankan benchmark secara rutin untuk menganalisis dan men-debug masalah performa serta membantu memastikan Anda tidak menyebabkan regresi dalam perubahan terbaru.

Android menawarkan dua library dan pendekatan benchmark untuk menganalisis serta menguji berbagai jenis situasi di aplikasi Anda: Macrobenchmark dan Microbenchmark.

Macrobenchmark

Library Macrobenchmark mengukur 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 dan memungkinkan Anda memulai dan menghentikan aplikasi untuk langsung mengukur startup atau scroll aplikasi yang sebenarnya.

Library Macrobenchmark ini memasukkan peristiwa dan memantau hasilnya secara eksternal dari aplikasi pengujian yang dibuat dengan pengujian Anda. Oleh karena itu, saat menulis benchmark, Anda tidak memanggil kode aplikasi secara langsung, melainkan menavigasi dalam aplikasi sebagai pengguna.

Microbenchmark

Library Microbenchmark memungkinkan Anda menjalankan benchmark kode aplikasi secara langsung dalam satu loop. Hal ini dirancang untuk mengukur kerja CPU yang menilai performa kasus terbaik—seperti pemanasan Just in Time (JIT) dan akses disk yang di-cache—yang mungkin Anda lihat dengan loop dalam atau fungsi hot tertentu. ​​Library ini hanya dapat mengukur kode yang dapat Anda panggil langsung secara terpisah.

Jika aplikasi Anda perlu memproses struktur data yang kompleks, atau memiliki algoritma komputasi berat tertentu yang dipanggil beberapa kali selama aplikasi berjalan, ini dapat menjadi contoh yang baik untuk menjalankan benchmark. Anda juga dapat mengukur bagian dari UI. Misalnya, Anda dapat mengukur biaya binding item RecyclerView, berapa lama waktu yang diperlukan untuk meng-inflate tata letak, atau seberapa sulit langkah tata letak dan pengukuran class View Anda dari perspektif performa.

Namun, Anda tidak dapat mengukur bagaimana kasus yang diukur berkontribusi pada keseluruhan pengalaman pengguna. Dalam beberapa skenario, menjalankan benchmark tidak dapat memberi tahu Anda apakah Anda memperbaiki bottleneck seperti jank atau waktu startup aplikasi. Oleh karena itu, penting untuk mengidentifikasi bottleneck tersebut terlebih dahulu dengan Android Profiler. Setelah menemukan kode yang ingin diselidiki dan dioptimalkan, loop yang diukur dapat berjalan berulang kali dengan cara yang cepat dan lebih mudah untuk menghasilkan tingkat noise yang lebih sedikit, yang memungkinkan Anda berfokus pada satu area peningkatan.

Library Microbenchmark hanya melaporkan informasi tentang aplikasi Anda, bukan tentang sistem secara keseluruhan. Oleh karena itu, sebaiknya library ini digunakan untuk menganalisis performa situasi khusus aplikasi, bukan situasi yang mungkin terkait dengan masalah sistem secara keseluruhan.

Perbandingan library benchmark

Macrobenchmark Microbenchmark
Versi API 23 dan yang lebih baru 14 dan yang lebih baru
Fungsi Mengukur titik masuk atau interaksi tingkat tinggi, seperti peluncuran aktivitas atau men-scroll daftar. Mengukur fungsi individual
Cakupan Pengujian di luar proses terhadap aplikasi lengkap Pengujian di dalam proses kerja CPU.
Kecepatan Kecepatan iterasi sedang, dapat berlangsung lebih dari satu menit. Kecepatan iterasi tinggi, sering berlangsung kurang dari 10 detik.
Perekaman Aktivitas Hasil dilengkapi dengan rekaman aktivitas pembuatan profil Pengambilan contoh dan perekaman aktivitas metode opsional