Konsep dan penerapan Jetpack Compose
Metrik adalah jenis informasi utama yang diekstrak dari benchmark Anda. Metrik
diteruskan ke fungsi measureRepeated sebagai List, yang memungkinkan Anda
menentukan beberapa metrik terukur sekaligus. Setidaknya satu jenis metrik diperlukan
agar benchmark dapat dijalankan.
Cuplikan kode 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"),
),
iterations = 5,
// ...
)
Java
benchmarkRule.measureRepeated(
TARGET_PACKAGE, // packageName
Arrays.asList( // metrics
new StartupTimingMetric(),
new TraceSectionMetric("RV CreateView"),
new TraceSectionMetric("RV OnBindView"),
),
5, // Iterations
// ...
);
Dalam contoh ini, RV CreateView dan RV OnBindView adalah ID
blok yang dapat dilacak dan ditentukan dalam RecyclerView. Kode sumber untuk metode createViewHolder()
adalah contoh cara menentukan blok
yang dapat dilacak dalam kode Anda sendiri.
StartupTimingMetric, TraceSectionMetric, dan
FrameTimingMetric akan dibahas secara mendetail nanti dalam dokumen ini. Untuk mengetahui daftar lengkap metrik, lihat subclass Metric.
Hasil benchmark adalah output ke Android Studio, seperti ditunjukkan pada Gambar 1. Jika beberapa metrik ditentukan, semuanya digabungkan dalam output.
TraceSectionMetric dan
FrameTimingMetric.StartupTimingMetric
StartupTimingMetric mengambil metrik pengaturan waktu startup aplikasi dengan
nilai berikut:
timeToInitialDisplayMs: Jumlah waktu sejak sistem menerima intent peluncuran hingga saat sistem merender frame pertamaActivitytujuan.timeToFullDisplayMs: Jumlah waktu sejak sistem menerima intent peluncuran hingga saat laporan aplikasi sepenuhnya digambar menggunakan metodereportFullyDrawn(). Pengukuran berhenti saat rendering frame pertama selesai setelah—atau berisi—panggilanreportFullyDrawn(). Pengukuran ini mungkin tidak tersedia di Android 10 (level API 29) dan yang lebih rendah.
StartupTimingMetric menghasilkan nilai minimum, median, dan maksimum dari iterasi
startup. Untuk menilai peningkatan startup, selalu berfokus pada nilai median, karena nilai median memberikan perkiraan terbaik dari waktu startup pengguna biasa. Untuk
mengetahui informasi selengkapnya tentang faktor yang memengaruhi waktu startup aplikasi, lihat Waktu startup
aplikasi.
StartupTimingMetric.FrameTimingMetric
FrameTimingMetric menangkap informasi pengaturan waktu dari frame yang dihasilkan oleh
benchmark, seperti scrolling atau animasi, dan menghasilkan nilai berikut:
frameOverrunMs: jumlah waktu ketika frame tertentu melewati batas waktu. Angka positif menunjukkan penurunan frame yang disertai jank atau ketersendatan yang terlihat. Angka negatif menunjukkan seberapa cepat penyelesaian frame dibandingkan dengan batas waktu hardware subsistem. Catatan: Metrik ini hanya tersedia di Android 12 (level API 31) dan yang lebih baru.frameDurationCpuMs: Jumlah waktu yang dibutuhkan frame untuk dihasilkan di CPU pada UI thread danRenderThread.
Pengukuran ini dikumpulkan dalam distribusi persentil ke-50, ke-90, ke-95, dan ke-99.
Untuk mengetahui informasi selengkapnya tentang cara mengidentifikasi dan meningkatkan kualitas frame lambat, lihat Rendering lambat.
FrameTimingMetric.TraceSectionMetric
TraceSectionMetric mencatat berapa kali kemunculan bagian rekaman aktivitas tertentu
dan jumlah waktu absolut yang diperlukan untuk dieksekusi. Untuk pelacakan waktu,
class ini menghasilkan waktu minimum, median, dan maksimum dalam milidetik.
Bagian rekaman aktivitas target ditentukan oleh panggilan fungsi
trace(sectionName) atau batas blok tingkat yang lebih rendah antara
Trace.beginSection(sectionName) dan Trace.endSection() atau
varian asinkronnya. Class ini selalu memilih instance pertama dari bagian rekaman aktivitas yang diambil
selama pengukuran. Class ini hanya menghasilkan bagian rekaman aktivitas dari paket Anda secara
default. Untuk menyertakan proses di luar paket Anda, setel targetPackageOnly =
false.
Untuk mengetahui informasi selengkapnya tentang rekaman aktivitas, lihat Ringkasan pelacakan sistem dan Menentukan peristiwa kustom.
TraceSectionMetric.Direkomendasikan untuk Anda
- Catatan: teks link ditampilkan saat JavaScript nonaktif
- Membuat Profil Dasar Pengukuran {:#creating-profile-rules}
- Menulis Macrobenchmark
- Analisis dan pengoptimalan startup aplikasi {:#app-startup-analysis-optimization}