Metrik adalah jenis informasi utama yang diekstrak dari benchmark Anda. Metrik ini
diteruskan ke fungsi measureRepeated
sebagai List
, yang memungkinkan Anda menentukan
beberapa metrik yang diukur sekaligus. Setidaknya satu jenis metrik diperlukan
agar benchmark dapat dijalankan.
Cuplikan berikut menangkap waktu render frame dan metrik bagian rekaman aktivitas kustom.
Kotlin
benchmarkRule.measureRepeated( packageName = TARGET_PACKAGE, metrics = listOf( FrameTimingMetric(), TraceSectionMetric("RV CreateView"), TraceSectionMetric("RV OnBindView"), ), // ... )
Java
benchmarkRule.measureRepeated( /* packageName */ TARGET_PACKAGE, /* metrics */ Arrays.asList( new StartupTimingMetric(), new TraceSectionMetric("RV CreateView"), new TraceSectionMetric("RV OnBindView"), ), /* iterations */ 5, // ... );
Hasil benchmark adalah output ke Android Studio, seperti yang ditampilkan dalam gambar berikut. Jika beberapa metrik ditentukan, semuanya digabungkan dalam output.
StartupTimingMetric
StartupTimingMetric
menangkap metrik pengaturan waktu startup aplikasi dengan nilai
berikut:
timeToInitialDisplayMs
– Waktu dari saat sistem menerima intent peluncuran hingga rendering frame pertama Aktivitas tujuan.timeToFullDisplayMs
– Waktu dari saat sistem menerima intent peluncuran sampai laporan aplikasi sepenuhnya digambar melalui metodereportFullyDrawn
. Pengukuran berhenti saat rendering frame pertama selesai setelah (atau berisi) panggilanreportFullyDrawn()
. Pengukuran ini mungkin tidak tersedia di Android 10 (API level 29) dan yang lebih rendah.
Untuk informasi selengkapnya tentang faktor yang memengaruhi waktu startup aplikasi, lihat halaman waktu startup aplikasi.
FrameTimingMetric
FrameTimingMetric
menangkap informasi pengaturan waktu dari frame yang dihasilkan oleh
benchmark, seperti scrolling atau animasi dan menghasilkan nilai berikut:
frameOverrunMs
– Berapa lama waktu frame tertentu melewati batas waktu. Angka positif menunjukkan penurunan frame dan jank/kondisi tersendat yang terlihat, angka negatif menunjukkan seberapa cepat frame dibandingkan dengan batas waktunya. Hanya tersedia di Android 12 (API level 31) dan yang lebih tinggi.frameDurationCpuMs
– Berapa lama waktu yang dibutuhkan frame untuk dihasilkan di CPU – di UI Thread, dan RenderThread.
Pengukuran ini dikumpulkan dalam distribusi: persentil ke-50, ke-90, ke-95, dan ke-99.
Untuk informasi selengkapnya tentang cara mengidentifikasi dan meningkatkan frame lambat, lihat Rendering lambat.
TraceSectionMetric (eksperimental)
TraceSectionMetric
menangkap waktu yang diambil oleh bagian rekaman aktivitas yang cocok
dengan sectionName
dan output yang disediakan: waktu minimum, median, dan maksimum dalam
milidetik. Bagian rekaman aktivitas ditentukan oleh panggilan fungsi
trace(sectionName){}
atau kode antara Trace.beginSection(sectionName)
dan
Trace.endSection()
(atau varian asinkronnya). Hal ini selalu memilih instance pertama
dari bagian rekaman aktivitas yang diambil selama pengukuran.
Untuk informasi selengkapnya tentang rekaman aktivitas, lihat Ringkasan pelacakan sistem dan Menentukan peristiwa kustom.
PowerMetric (eksperimental)
PowerMetric
merekam
perubahan daya atau energi selama durasi pengujian untuk
categories
yang diberikan. Setiap
kategori yang dipilih dibagi menjadi subkomponen terukur, sedangkan kategori yang tidak dipilih
ditambahkan ke metrik "unselected" (tidak dipilih). Perhatikan bahwa metrik
mengukur konsumsi seluruh sistem, bukan konsumsi per aplikasi, dan saat ini
dibatasi untuk perangkat Pixel 6 dan Pixel 6 Pro.
power<category>Uw
- Jumlah daya yang dikonsumsi selama durasi pengujian dalam kategori ini.energy<category>Uws
- Jumlah energi yang ditransfer per unit waktu selama durasi pengujian dalam kategori ini.
Kategori mencakup: CPU, DISPLAY, GPU, GPS, MEMORY, MACHINE_LEARNING, NETWORK, dan UNCATEGORIZED.
Dengan beberapa kategori, seperti CPU
, mungkin sulit untuk memisahkan pekerjaan yang dilakukan oleh proses
lain dari pekerjaan yang dilakukan oleh aplikasi Anda sendiri. Coba kurangi gangguan dengan
menghapus atau membatasi aplikasi dan akun yang tidak diperlukan.