Memeriksa kecepatan rendering

Android menyertakan beberapa opsi developer di perangkat yang membantu Anda memvisualisasikan di mana aplikasi Anda mungkin mengalami masalah saat merender UI-nya, misalnya saat melakukan lebih banyak pekerjaan rendering daripada yang diperlukan, atau mengeksekusi thread yang panjang dan operasi GPU. Halaman ini menjelaskan cara men-debug overdraw GPU dan membuat profil rendering GPU.

Untuk mempelajari opsi developer di perangkat lebih lanjut, termasuk cara mengaktifkannya, baca Mengonfigurasi opsi developer di perangkat.

Kecepatan rendering GPU Profil

Alat Rendering GPU Profil menampilkan representasi visual sebagai histogram scroll berapa banyak waktu yang diperlukan untuk merender frame jendela UI yang relatif terhadap benchmark 16,67 md per frame.

Pada GPU yang kurang bertenaga, rasio pengisian yang tersedia (kecepatan GPU mengisi buffer frame) bisa jadi sangat rendah. Seiring bertambahnya jumlah piksel yang diperlukan untuk menggambar frame, GPU mungkin memerlukan waktu lebih lama untuk memproses perintah baru, sehingga sistem lainnya harus menunggu hingga GPU dapat menyelesaikan prosesnya.

Alat pembuatan profil ini membantu Anda mengidentifikasi kapan GPU kewalahan saat mencoba menggambar piksel atau terbebani oleh overdraw yang berat.

Mengaktifkan profiler

Sebelum memulai, pastikan Anda menggunakan perangkat yang menjalankan Android 4.1 (API level 16) atau yang lebih tinggi, dan mengaktifkan opsi developer. Untuk memulai profiling rendering GPU perangkat saat menggunakan aplikasi Anda, lakukan hal berikut:

  1. Di perangkat, buka Settings lalu ketuk Developer Options.
  2. Di bagian Monitoring, pilih Profile GPU Rendering atau Profile HWUI rendering, bergantung pada versi Android yang berjalan di perangkat.
  3. Dalam dialog Profile GPU Rendering, pilih On screen as bars untuk menempatkan grafik di layar perangkat Anda.
  4. Buka aplikasi yang ingin dibuat profilnya.

Memeriksa output

Dalam gambar grafik Rendering GPU Profil yang diperbesar seperti dalam gambar 1, Anda dapat melihat bagian yang diberi warna, seperti yang ditampilkan pada Android 6.0 (API level 23).

Gambar 1. Grafik Profil Rendering GPU yang diperbesar.

Berikut adalah beberapa hal yang perlu diperhatikan tentang outputnya:

  • Untuk setiap aplikasi yang terlihat, fitur akan menampilkan sebuah grafik.
  • Setiap batang vertikal di sepanjang sumbu horizontal menyatakan sebuah frame, dan tinggi setiap batang vertikal menyatakan jumlah waktu yang dibutuhkan untuk merender frame (dalam milidetik).
  • Garis hijau horizontal menyatakan 16,67 milidetik. Untuk mencapai 60 frame per detik, batang vertikal untuk setiap frame harus tetap berada di bawah garis ini. Setiap kali batang melewati garis ini, akan ada jeda dalam animasi.
  • Fitur akan menandai frame yang melebihi batas 16,67 milidetik dengan membuat batang terkait menjadi lebih lebar dan kurang transparan.
  • Setiap batang memiliki komponen berwarna yang dipetakan ke suatu tahap dalam pipeline rendering. Jumlah komponen bervariasi, bergantung pada level API perangkat.

Tabel berikut ini menyediakan deskripsi dari setiap segmen batang vertikal dalam output profiler saat menggunakan perangkat yang menjalankan Android 6.0 dan yang lebih tinggi.

Komponen BatangTahap RenderingDeskripsi
Buffer Pertukaran Menyatakan waktu yang digunakan CPU untuk menunggu GPU menyelesaikan pekerjaannya. Jika batang ini menjadi lebih tinggi, artinya aplikasi melakukan terlalu banyak pekerjaan di GPU.
Pengeluaran Perintah Menyatakan waktu yang dihabiskan oleh perender 2D Android untuk mengeluarkan perintah ke OpenGL untuk menggambar dan menggambar ulang daftar tampilan. Tinggi batang ini sebanding dengan jumlah waktu yang diperlukan untuk mengeksekusi setiap daftar tampilan; semakin banyak daftar tampilan, semakin tinggi batang berwarna merah.
Sinkronisasi & Upload Menyatakan waktu yang diperlukannya untuk mengupload informasi bitmap ke GPU. Segmen besar menunjukkan bahwa aplikasi membutuhkan waktu yang cukup lama untuk memuat grafik dalam jumlah besar.
Gambar Mewakili waktu yang digunakan untuk merekam perintah gambar, seperti drawLine. Di Compose, fase ini terkadang mencakup operasi pengukuran dan tata letak. Jika kolom ini tinggi, rekam aktivitas sistem dan periksa menggunakan Perfetto untuk melihat perincian mendetail.
Mengukur / Tata Letak Mewakili jumlah waktu yang dihabiskan untuk memposisikan dan menentukan ukuran komponen UI selama fase tata letak, yang mencakup pelaksanaan pengubah pengukuran dan penempatan. Segmen besar menunjukkan penghitungan yang kompleks dalam pengubah ini atau hierarki tata letak yang terlalu dalam sehingga memerlukan penghitungan ulang yang sering.
Penanganan & Animasi Input Menyatakan jumlah waktu yang diperlukan untuk mengevaluasi panggilan API animasi atau untuk menangani input penunjuk dan callback-nya. Jika segmen ini besar, hal itu dapat menunjukkan bahwa animasi yang disesuaikan atau callback input menghabiskan terlalu banyak waktu untuk memproses. Penghitungan status dan pemetaan data saat men-scroll LazyColumn atau LazyRow biasanya juga terjadi selama segmen ini dan merupakan sumber pelambatan yang lebih umum di segmen ini.
Waktu Lain-Lain / Penundaan VSync Menyatakan waktu yang dihabiskan aplikasi untuk mengeksekusi operasi di antara dua frame berturut-turut. Hal ini dapat menjadi indikator atas terlalu banyaknya pemrosesan yang terjadi di thread UI yang dapat dialihkan bebannya ke thread lain.

Tabel 1. Batang komponen di Android 6.0 dan yang lebih tinggi.

Untuk mengetahui informasi selengkapnya tentang cara menafsirkan informasi yang disediakan oleh alat pembuatan profil, baca Menganalisis dengan Profil Rendering GPU.