Mengambil Metrik Macrobenchmark

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

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.

Hasil TraceSectionMetric dan FrameTimingMetric

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 metode reportFullyDrawn. Pengukuran berhenti saat rendering frame pertama selesai setelah (atau berisi) panggilan reportFullyDrawn(). 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.

Hasil StartupTimingMetric

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.

Hasil FrameTimingMetric

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.

Hasil TraceSectionMetric

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.

Hasil PowerMetric