Cara tim Kalender Android meningkatkan startup aplikasi dan jank dengan Profil Dasar Pengukuran

Profil Dasar Pengukuran meningkatkan kecepatan eksekusi kode hingga 30% dengan menghindari penerjemah dan kompilasi tepat waktu (JIT) langkah untuk {i>user journey <i}secara umum. Profil Dasar Pengukuran memungkinkan Anda memilih perjalanan pengguna ingin mengoptimalkan dan dapat membantu meningkatkan startup aplikasi, mengurangi jank, dan banyak lagi—yang pada gilirannya akan menghasilkan metrik bisnis yang lebih baik, seperti retensi dan rating pengguna. Pelajari Dasar Pengukuran lebih lanjut Google Profil.

Tim Kalender Android menerapkan Profil Dasar Pengukuran dan mengamati ~20% aplikasi peningkatan waktu startup dan pengurangan ~50% dalam periode lambat atau frozen. Berikut apa yang mereka lakukan secara menyeluruh untuk mencapai keunggulan kinerja, berdasarkan alasan mereka memutuskan untuk menggunakan Profil Dasar Pengukuran untuk mengukur dampak.

Profil Cloud v. Profil Dasar Pengukuran

Tim Kalender Android telah menggunakan Cloud Google Profil, yang merupakan adalah metode Pengoptimalan yang Dipandu Profil (PGO) lain berdasarkan pengalaman pengguna interaksi Anda dengan aplikasi. Berikut cara Profil Cloud dan Profil Dasar Pengukuran bandingkan:

Jenis profil Penyiapan Termasuk perjalanan pengguna Berfungsi paling baik ketika basis pengguna Dampak direalisasikan Versi Android yang didukung

Profil Cloud

Diaktifkan secara default

Dipilih secara otomatis berdasarkan data pengguna di dunia nyata

Besar

Dalam beberapa hari

Android 9 (API level 28) dan yang lebih tinggi

Profil Dasar Pengukuran

Dikonfigurasi oleh Anda

Dipilih oleh Anda

Semua ukuran

Segera

Android 7 (level API 24) dan yang lebih baru

Salah satu alasan utama tim Kalender Android memutuskan untuk menambahkan Profil Dasar Pengukuran ke codebase mereka adalah karena mereka beralih ke siklus rilis mingguan yang lebih cepat. Meskipun Profil Cloud memberikan peningkatan performa yang signifikan, diperlukan waktu 1-2 hari setelah peluncuran aplikasi agar mereka dapat mencapai dampak puncak karena mereka mengandalkan menggabungkan data pengguna di dunia nyata. Melengkapi Profil Cloud dengan Dasar Pengukuran Profil memberi pengguna lebih banyak waktu untuk merasakan peningkatan performa maksimal sebelum versi aplikasi berikutnya diluncurkan.

Selain itu, penting bagi tim Kalender Android untuk dapat memilih perjalanan penting pengguna (CUJ) yang secara spesifik akan disertakan dalam profil, yang dapat Anda lakukan menggunakan Profil Dasar Pengukuran.

Secara umum, kami merekomendasikan penggunaan Profil Dasar Pengukuran selain Profil Cloud, diaktifkan secara {i>default<i}, untuk hasil performa terbaik.

Termasuk perjalanan pengguna

Tim Kalender Android memilih untuk menyertakan dua CUJ dalam Profil Dasar Pengukuran mereka:

  • Membuka aplikasi dalam tampilan jadwal: awalnya adalah tampilan default, sangat penting untuk mengoptimalkan bagi pengguna yang menggunakan aplikasi untuk pertama kalinya atau yang tidak mengubah setelan default.
  • Membuka aplikasi dalam tampilan bulan: tampilan yang dipilih untuk banyak pengguna, berdasarkan pengguna layanan otomatis dan data skalabel. Untuk melacak cara pengguna menggunakan aplikasi, Anda dapat menggunakan alat seperti Firebase.

Umumnya, Anda harus menambahkan CUJ yang menguntungkan bagi bisnis (jika yang berlaku) dan CUJ yang paling umum. Untuk mempelajari lebih lanjut tentang cara memilih CUJ yang akan dioptimalkan, lihat Apa yang sertakan.

Implementasi

Tim Kalender Android menggunakan wrapper internal untuk Library Jetpack Macrobenchmark untuk membuat Profil Dasar Pengukuran guna memudahkan integrasi dengan alat internal dan skalabilitas umum.

Berikut adalah konfigurasi pengujian Macrobenchmark untuk membuka aplikasi sesuai jadwal lihat:

@Test
fun generateProfile() =
    baselineProfileRule.collect(PACKAGE_NAME, includeInStartupProfile = true) {
        startActivityAndWait()
        // Verify pre-existing recurring events and tasks are shown.
        device.waitAndFindObject(By.text("Recurring event"), 20_000)
        device.waitAndFindObject(By.text("Recurring task"), 20_000)

        // Open drawer and verify selected view.
        device.findObject(By.desc("Show Calendar List and Settings drawer")).click()
        device.waitAndFindObject(By.desc("Schedule view, Selected"), 1_000)
    }

Ukur dampak menggunakan rilis terkontrol

Karena Profil Dasar Pengukuran dikaitkan erat dengan APK yang dikirimkan bersamanya dan digabungkan sebelum aplikasi berjalan, maka tidak mungkin menjalankan A/B standar bereksperimen untuk memahami dampaknya. Namun, tim Kalender Android bisa mendapatkan ukuran dampak yang akurat menggunakan rilis terkontrol, di mana Anda merilis versi aplikasi baru hanya untuk sebagian pengguna dan membandingkannya kepada pengguna yang menggunakan versi yang mirip dengan rilis sebelumnya.

Dengan Profil Dasar Pengukuran, mereka melihat hal berikut secara langsung dan signifikan di berbagai bidang. Statistik ini digabungkan dalam berbagai rentang perangkat dan di semua pengguna—pengguna yang memulai dengan tampilan jadwal dan bulan mungkin mendapatkan manfaat terbesar, tetapi pengguna lain juga diuntungkan karena pengoptimalan proses bersama seperti memuat data kalender dari di skrip untuk menyiapkan database.

  • Latensi startup aplikasi interaktif median (skenario paling umum) menurun dari 775 md hingga 644 md (17%)
  • Latensi cold start median menurun dari 1.058 md menjadi 901 md (15%)
  • Latensi warm start median menurun dari 453 md menjadi 378 md (17%)
  • Kecepatan frame jank median menurun sebesar 42-60% dalam tampilan jadwal dan bulan

Perlu diingat bahwa jika Anda menggunakan Profil Cloud bersama dengan Dasar Pengukuran Profil yang Anda mungkin akan melihat sedikit peningkatan selama di minggu pertama, saat Profil Cloud dibuat. Namun, Anda tetap harus mengamati peningkatan performa yang signifikan dengan Profil Dasar Pengukuran selain pengoptimalan yang telah Anda terapkan.

Untuk mempelajari alat dan fitur lebih lanjut, lihat referensi berikut: