Benchmark adalah cara untuk menguji performa aplikasi Anda. Anda dapat menjalankan benchmark secara rutin untuk membantu menganalisis dan men-debug masalah performa dan memastikan Anda tidak menyebabkan regresi dalam perubahan terbaru.
Android menawarkan dua library benchmark dan pendekatan untuk menganalisis serta menguji berbagai jenis situasi di aplikasi Anda: Microbenchmark dan Macrobenchmark.
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 (pemanasan Just in Time (JIT), 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
algoritme komputasi berat tertentu yang dipanggil beberapa kali selama aplikasi
berjalan, ini dapat menjadi contoh yang baik untuk benchmark. Anda juga dapat mengukur
bagian dari UI. Misalnya, Anda dapat mengukur biaya item bindingRecyclerView
, berapa lama waktu yang diperlukan untuk meng-inflate tata letak, atau seberapa menuntut
langkah tata letak dan pengukuran class View
Anda dari perspektif performa.
Namun, Anda tidak akan dapat mengukur bagaimana kasus yang diukur berkontribusi pada keseluruhan pengalaman pengguna. Dalam beberapa skenario, menjalankan benchmark tidak akan memberi tahu Anda apakah Anda meningkatkan bottleneck seperti jank atau waktu startup aplikasi. Oleh karena itu, sangat 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 mudah untuk menghasilkan tingkat noise yang lebih sedikit, yang memungkinkan Anda fokus pada satu area peningkatan.
Library Microbenchmark hanya melaporkan informasi tentang aplikasi Anda, bukan tentang sistem secara keseluruhan. Oleh karena itu, sebaiknya analisis performa situasi aplikasi tertentu, bukan situasi yang mungkin terkait dengan masalah sistem secara keseluruhan.
Macrobenchmark
Library Macrobenchmark mengukur interaksi pengguna akhir yang lebih besar, seperti startup, berinteraksi dengan UI, dan animasi. Tidak seperti library Microbenchmark, Macrobenchmark memberikan kontrol langsung atas lingkungan performa yang Anda uji. Hal ini memungkinkan Anda mengontrol kompilasi, memulai, dan menghentikan aplikasi untuk mengukur secara langsung startup atau scrolling aplikasi yang sebenarnya, bukan hanya fungsi hot jit tertentu, dengan semua akses disk dalam cache.
Library 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 seperti pengguna.
Perbandingan library benchmark
Microbenchmark | Macrobenchmark | |
---|---|---|
Fungsi | Mengukur fungsi individual | Mengukur titik masuk atau interaksi tingkat tinggi (misalnya, peluncuran aktivitas atau men-scroll daftar) |
Cakupan | Pengujian di dalam proses kerja CPU | Pengujian di luar proses terhadap aplikasi lengkap |
Kecepatan | Kecepatan iterasi tinggi (seringnya kurang dari 10 detik) | Kecepatan iterasi sedang (bisa lebih dari satu menit) |
Tracing | Pengambilan contoh dan perekaman aktivitas metode opsional | Hasil dilengkapi dengan rekaman aktivitas pembuatan profil |
Versi Min API | 14 | 23 |