Hero karşılaştırmaları, açık kaynak Pokedex uygulamasında uygulama başlatma veya kaydırma gibi üst düzey uygulama kullanıcı yolculuklarını kapsayan bir karşılaştırma grubudur.
- Başlangıç kahramanı karşılaştırmaları: Uygulamanın açılmasından içeriğin gösterilmesine kadar geçen süreyi izleme.
- Kaydırma kahramanı karşılaştırmaları: Resim içeren bir geç yüklenen ızgaranın kaydırma performansını ölçme.
Test kurulumu
- Uygulama seçimi: Bu testleri, açık kaynaklı Pokedex uygulamasını kullanarak gerçekleştirdik ve uygulamanın görünüm tabanlı ve Compose tabanlı sürümlerini karşılaştırdık. Uygulama, gerçek hayattaki senaryoları temsil etmek için seçilmiştir ve Compose ekibi tarafından geliştirilmemiştir.
- Donanım kurulumu: Karşılaştırmalar, Android 17 (API 37) yüklü bir Pixel 6'da kilitli CPU'lar ve GPU'lar ile çalıştırıldı. Compose 1.12'den önce karşılaştırmalar Pixel 3a'da yapılıyordu. Compose 1.12'den itibaren Pixel 6, ana karşılaştırmalar için standart performans referansı olarak kullanılmaktadır.
- Derleme ayarları: Karşılaştırmalarda, R8 etkinleştirilmiş olarak yayınlama modunda oluşturulan uygulama kullanılır. Uygulama, tam zamanında (JIT) derlemeden kaynaklanan kararsızlığı azaltmak için tamamen önceden derlenmiştir.
- Sonuç seçimi: En kötü durum analizini sağlamak için aşırı uç değerler ve temsili olmayan gürültü, karşılaştırma sonuçlarından hariç tutulmuştur. Ardından, üst sınır performans verilerinin ortanca değerleri seçilerek bir referans oluşturuldu.
Startup hero benchmarks
Başlatma süresini ölçmek için PokedexStartupBenchmark kullandık. PokedexStartupBenchmark, Pokedex uygulamasının kullanıcıya görünür hale gelmesi için geçen süreyi ölçer.
Uygulama başlatma, üç durumdan birinde gerçekleşebilir: baştan başlatma, hazır durumda başlatma veya çalışır durumda başlatma. Her durum, bir uygulamanın kullanıcıya görünür hale gelmesinin ne kadar süreceğini etkiler. Baştan başlatmada uygulama sıfırdan başlar. Bu karşılaştırmada, uygulamanın baştan başlatma durumundaki başlatma performansını ölçüyoruz. Uygulamayı her zaman soğuk başlatma varsayımına göre optimize etmenizi öneririz. Bu işlem, ılık ve sıcak başlatmaların performansını da artırabilir.
Uygulama başlatma süresini ölçmek için kullandığımız metrikler ilk ekrana görüntülenene kadar geçen süre ve tam ekrana görüntülenene kadar geçen süredir.
İlk ekrana görüntülenene kadar geçen süre
İlk görüntüleme süresi (TTID), bir uygulamanın ilk karesini oluşturması için geçen süreyi ölçer. Bu süreye soğuk başlatma sırasında işlem başlatma, soğuk veya sıcak başlatma sırasında etkinlik oluşturma ve ilk kareyi görüntüleme dahildir.
PokedexStartupBenchmark, Compose 1.12, soğuk başlatma ile TTID için Görünümler ile aynı seviyededir.
Tam görüntüleme süresi
Tam görüntüleme süresi (TTFD), uygulamanın etkileşimli hale gelmesine kadar geçen süreyi ölçer. Bu, tüm verilerin yüklendiği ve çizildiği anlamına gelir. Tam görüntüleme süresi hakkında daha fazla bilgi için Uygulama Başlatma Süresi başlıklı makaleyi inceleyin.
PokedexStartupBenchmark uygulamasında, Compose 1.12, yeni başlatma ile TTFD için Görünümler'den yaklaşık %2 daha yavaştır.
Kahraman karşılaştırmalarını kaydır
Kaydırma performansını ölçmek için PokedexScrollBenchmark'ı kullandık. Resimler içeren bir lazy grid için Pokedex uygulama ekranının kaydırma performansını ölçer. Bu karşılaştırmada, ekranın tamamı birden çok kez kaydırılır ve yeni öğeler yüklenir. Kaydırma performansı, takılma oranıyla ölçülür.
Takılma oranı
Android cihazlar saniyede 60 veya 120 kareye (FPS) kadar görüntü oluşturur. Bu, sistemin bir kare üretmek için katı bir son tarihi (örneğin, 60 fps için 16,6 ms) olduğu anlamına gelir. Uygulamanın işini yapması çok uzun sürerse bu durum, "duraklama" olarak adlandırdığımız görünür bir takılmaya neden olabilir.
PokedexScrollBenchmark, Compose 1.9.0 sürümünden itibaren Compose, %0 fazla takılma oranıyla Views performansıyla eşleşir. Pixel 6'da (Compose 1.11'den itibaren test edilmiştir) hem Compose hem de Görünümler %0 takılma oranına ulaşır.
Kahraman karşılaştırmalarını çalıştırma
Performans sonuçlarını doğrulamak ve karşılaştırmaları yerel olarak çalıştırmak için:
- Kaynak kodunu incelemek için AndroidX kılavuzunu inceleyin.
- Karşılaştırma ve hedef APK'ları (
pokedex-macrobenchmarkvepokedex-macrobenchmark-target) derlemek, bunları bir test cihazına yüklemek veadbveya Android Studio'yu kullanarakPokedexStartupBenchmarkvePokedexScrollBenchmarkpaketlerini çalıştırmak için Hero Benchmarks kaynak kodu README dosyasındaki talimatları uygulayın.
Bu karşılaştırmaları, uygulamanızı optimize ettiğiniz belirli bir cihaz gibi desteklenen herhangi bir cihazda çalıştırabilirsiniz. Ancak resmi sonuçları doğrulamak için aynı donanım kurulumunu kullanın.