Android Takvim ekibi, Temel Profiller sayesinde uygulama başlatma ve olumsuzlukları nasıl iyileştirdi?

Temel Profil, yaygın kullanıcı işlemlerinde yorumlayıcı ve tam zamanında (JIT) derleme adımlarını atlayarak kod yürütme hızını% 30'a kadar artırır. Temel Profiller, optimize etmek istediğiniz kullanıcı yolculuklarını seçmenize olanak tanır ve uygulama başlatma süresini iyileştirmeye, takılmayı azaltmaya yardımcı olabilir. Bu da kullanıcı elde tutma oranı ve puanlar gibi işletme metriklerinin iyileşmesini sağlar. Temel Profil hakkında daha fazla bilgi edinin.

Android Takvim ekibi, temel profilleri uyguladı ve uygulamanın başlatılma süresinde yaklaşık% 20 iyileşme, yavaş veya donmuş karelerde ise yaklaşık% 50 azalma gözlemledi. Referans Profilleri'ni kullanmaya karar vermelerinden etkiyi ölçme şekillerine kadar, bu performans artışlarını elde etmek için baştan sona neler yaptıklarını burada bulabilirsiniz.

Cloud profilleri ve temel profiller

Android Takvim ekibi, uygulamayla gerçek kullanıcı etkileşimlerine dayalı başka bir Profile Guided Optimization (PGO) yöntemi olan Cloud Profiles'ı zaten kullanıyordu. Cloud Profiles ile Baseline Profiles'ın karşılaştırması:

Profil türü Ayarla Kullanıcı yolculukları dahil En iyi sonucu şu durumlarda verir: Gerçekleşen etki Desteklenen Android sürümleri

Cloud Profilleri

Varsayılan olarak etkindir.

Gerçek dünya kullanıcı verilerine göre otomatik olarak seçilir.

Büyük

Birkaç gün içinde

Android 9 (API düzeyi 28) ve sonraki sürümler

Temel Profiller

Sizin tarafınızdan yapılandırılanlar

Sizin tarafınızdan seçilenler

Tüm boyutlar

Derhal

Android 7 (API düzeyi 24) ve sonraki sürümler

Android Takvim ekibinin, kod tabanına temel profilleri eklemeye karar vermesinin temel nedenlerinden biri, daha hızlı ve haftalık bir yayın döngüsüne geçiyor olmalarıydı. Cloud Profilleri önemli performans artışları sağlasa da gerçek dünya kullanıcı verilerinin toplanmasına bağlı oldukları için uygulama başlatıldıktan sonra en yüksek etki düzeyine ulaşmaları 1-2 gün sürer. Cloud Profilleri'ni Baseline Profilleri ile desteklemek, kullanıcılara bir sonraki uygulama sürümü kullanıma sunulmadan önce en yüksek performans iyileştirmelerini deneyimlemek için daha fazla zaman tanır.

Ayrıca, Android Takvim ekibi için hangi kritik kullanıcı yolculuklarının (CUJ'ler) profile dahil edileceğini seçebilmek önemliydi. Bunu, temel profilleri kullanarak yapabilirsiniz.

Genel olarak, en iyi performans sonuçları için varsayılan olarak etkinleştirilen Bulut Profillerine ek olarak Temel Profilleri kullanmanızı öneririz.

Kullanıcı yolculukları dahil

Android Takvim ekibi, temel profillerine iki CUJ eklemeyi tercih etti:

  • Uygulamayı program görünümünde açma: Başlangıçta varsayılan görünüm olduğundan, uygulamayı ilk kez kullanan veya varsayılan ayarları değiştirmeyen kullanıcılar için optimizasyon yapmak önemlidir.
  • Uygulamayı ay görünümünde açma: Kullanıcı verilerine göre birçok kullanıcının tercih ettiği görünüm. Kullanıcıların uygulamanızı nasıl kullandığını izlemek için Firebase gibi araçları kullanabilirsiniz.

Genel olarak, işletme için kârlı olan (uygunsa) ve en yaygın CUJ'leri eklemelisiniz. Hangi CUJ'lerin optimize edileceğini seçme hakkında daha fazla bilgi edinmek için Neler dahil edilmeli? başlıklı makaleyi inceleyin.

Uygulama

Android Takvim ekibi, dahili araçlarla kolay entegrasyon ve genel ölçeklenebilirlik için Jetpack Macrobenchmark kitaplığı'nın dahili bir sarmalayıcısını kullanarak temel profiller oluşturur.

Uygulamayı program görünümünde açmaya yönelik Macrobenchmark test yapılandırması aşağıda verilmiştir:

@Test
fun generateProfile() =
    baselineProfileRule.collect(PACKAGE_NAME, includeInStartupProfile = true) {
        uiAutomator {
            startApp(packageName = PACKAGE_NAME)
            // Verify pre-existing recurring events and tasks are shown.
            // onElement waits for the element by default
            onElement { textAsString() == "Recurring event" }
            onElement { textAsString() == "Recurring task" }

            // Open drawer and verify selected view.
            onElement { contentDescriptionAsString() == "Show Calendar List and Settings drawer" }.click()
            onElement { contentDescriptionAsString() == "Schedule view, Selected" }
        }
    }

Aşağıdakileri değiştirin:

  • PACKAGE_NAME: Temel profiller oluşturmak istediğiniz uygulamanın paket adı.

Kontrollü yayınları kullanarak etkiyi ölçme

Temel profiller, gönderildikleri APK ile sıkı bir şekilde bağlantılı olduğundan ve uygulamanız çalıştırılmadan önce dahil edildiğinden etkilerini anlamak için standart bir A/B denemesi çalıştırmak mümkün değildir. Ancak Android Takvim ekibi, kontrollü yayınlar kullanarak etkinin doğru bir ölçüsünü elde edebildi. Kontrollü yayınlarda, yeni uygulama sürümünü yalnızca bir kullanıcı alt kümesine yayınlayıp bu kullanıcıları önceki sürüme benzer bir sürümü kullanan kullanıcılarla karşılaştırırsınız.

Baseline Profiles ile birçok alanda aşağıdaki önemli iyileşmeler hemen görüldü. Bu istatistikler çok çeşitli cihazlarda ve tüm kullanıcılarda toplanır. Takvim'i program ve ay görünümünde açan kullanıcılar bu özellikten en çok yararlananlar olsa da paylaşılan işlemlerin (ör. veritabanından takvim verilerinin yüklenmesi) optimize edilmesi sayesinde diğer kullanıcılar da yararlanır.

  • Ortalama etkileşimli uygulama başlatma (en yaygın senaryo) gecikmesi 775 ms'den 644 ms'ye (%17) düştü.
  • Ortanca baştan başlatma gecikmesi 1.058 ms'den 901 ms'ye düştü (%15).
  • Ortanca hazır durumda başlatma gecikmesi 453 ms'den 378 ms'ye (%17) düştü.
  • Plan ve ay görünümlerinde ortalama titrek kare hızı% 42-60 oranında azaldı.

Cloud Profilleri'ni Temel Profil'lerle birlikte kullanırsanız Cloud Profilleri oluşturulurken ilk hafta içinde iyileştirmelerin biraz azalacağını unutmayın. Ancak, yine de diğer optimizasyonların yanı sıra temel profillerle önemli performans artışları elde edebilirsiniz.

Araçlar ve özellikler hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın: