Oluşturma ve Görüntüleme metriklerini karşılaştırma

Jetpack Compose, kullanıcı arayüzü geliştirmeyi hızlandırıyor ve Android'i iyileştiriyor hakkında daha fazla bilgi edinin. Ancak bu risklerin Mevcut bir uygulamaya Compose'u eklemek bir uygulamanın APK boyutu, en iyi uygulamaları paylaşacağız.

APK boyutu ve derleme süreleri

Bu bölümde, Sunflower örnek uygulaması: En iyi uygulamaları gösteren bir uygulama bir görünüm tabanlı uygulamayı Compose'a taşımayı başardı.

APK boyutu

Projenize kitaplık eklemek projenizin APK boyutunu artırır. Aşağıdaki sonuçlar kaynak ve koda sahip her projenin küçültülmüş sürüm APK'sı içindir küçültme etkinken, R8 tam modu kullanılarak ve APK Analiz Aracı kullanılarak ölçülmüştür.

Yalnızca görüntüleme Karma Görünümler ve Oluşturma Yalnızca oluşturma
İndirme boyutu 2.252 KB 3.034 KB 2.966 KB

Compose'u Sunflower'a ilk kez eklediğinizde, APK boyutu 2.252 KB'tan 3.034 KB: 782 KB'lık artış. Oluşturulan APK, Görünümler ve Oluştur'un bir karışımı. Bu artışın ek olarak, bağımlılıkları Ayçiçeği’ne eklendi.

Buna karşılık, Sunflower yalnızca Compose özellikli bir uygulamaya taşındığında APK boyutu 3.034 KB'tan 2.966 KB'ye düşürüldü. Bu da 68 KB'lık bir düşüş. Bu düşüşün nedeni AppCompat ve ConstraintLayout.

Derleme zamanı

Compose'u eklemek, Compose derleyici olarak uygulamanızın derleme süresini artırır composable'ları yönetebilirsiniz. Aşağıdaki sonuçlar bağımsız gradle-profiler aracıdır. Bu araç, bir derlemeyi birkaç kez yürütür. hata ayıklama derleme süresi için ortalama derleme süresinin Ayçiçeği:

gradle-profiler --benchmark --project-dir . :app:assembleDebug
Yalnızca görüntüleme Karma Görünümler ve Oluşturma Yalnızca oluşturma
Ortalama derleme süresi 299,47 ms. 399,09 ms. 342,16 ms.

Oluştur'u ayçiçeğine ilk kez eklediğinizde, ortalama derleme süresi 299'dan yükseldi ms. - 399 ms.: 100 ms. artış. Bu süre Compose derleyicisinden kaynaklanmaktadır projede tanımlanan Compose kodunu dönüştürmek için ek görevler gerçekleştirme.

Bunun aksine, ortalama derleme süresi 342 ms'ye düşerken 57 ms. düşüş Sunflower'ın Compose'a taşıma işlemi tamamlandı. Bu azalma ilişkilendirilebilir toplu olarak derleme süresini azaltan verilerin kaldırılması gibi çeşitli faktörlere bağlama, kapt'ı KSP kullanan bağımlılıkları taşıma ve güncelleme bağımlılığı var.

Özet

Compose'u kullanmak uygulamanızın APK boyutunu etkili bir şekilde artırır ve derleme işlemi nedeniyle uygulamanızın derleme süresi performansını artırır bölümünü girin. Ancak bu tavizlerin, özellikle de Compose'un avantajları, özellikle de geliştirici üretkenliğini artırma açısından bazı ipuçları vereceğim. Örneğin Play Store ekibi şunları buldu: kullanıcı arayüzü yazmak çok daha az kod gerektirir ve bu şekilde Üretkenliği ve kodun sürdürülebilirliğini artırır.

Daha fazla örnek olayı Ekipler için Compose'u kullanmaya başlama bölümünde bulabilirsiniz.

Çalışma zamanı performansı

Bu bölümde, Jetpack Compose'daki çalışma zamanı performansıyla ilgili konular ele alınmaktadır. Jetpack Compose'un View sisteminin performansıyla karşılaştırmasını anlamanıza yardımcı olabilir. ölçebileceğinize bakalım.

Akıllı yeniden besteler

Kullanıcı arayüzünün bazı bölümleri geçersiz olduğunda Compose, bazı bölümleri kapsamalıdır. Bu konuyla ilgili daha fazla bilgi için Yaşam Döngüsü composables ve Jetpack Compose'u kullanabilirsiniz. belgelemelerini inceleyin.

Temel Profiller

Temel Profiller, kullanıcı yolculuklarını hızlandırmanın mükemmel bir yolu. Referans Değer Ekleme Uygulamanızda profil, kod yürütme hızını ilk andan itibaren yaklaşık% 30 oranında artırabilir ve tam zamanında derleme adımlarından kaçınarak dahil edilen tüm kod yollarıdır.

Jetpack Compose kütüphanesi kendi Temel Profili'ni içerir ve uygulamanızda Oluştur'u kullandığınızda bu optimizasyonları otomatik olarak alın. Ancak, bu optimizasyonlar yalnızca Compose kitaplığındaki kod yollarını etkiler. Bu nedenle, sayfanıza bir Temel Profil eklemenizi uygulamasını kullanarak Compose'un dışındaki kod yollarını ele alacağız.

View sistemiyle karşılaştırma

Jetpack Compose'da, View sistemine göre birçok iyileştirme yapıldı. Bu iyileştirmeler aşağıdaki bölümlerde açıklanmıştır.

Görünüme her şey dahildir

Ekranda çizim yapan her View, örneğin TextView, Button veya ImageView, bellek ayırmaları, açık durum izleme ve çeşitli işlemler gerektirir geri arama özelliğini kullanabilirsiniz. Ayrıca, özel View sahibinin şunları yapması gerekir: yeniden çizmeyi önlemek için açık bir mantık uygulamak Örneğin, yinelenen veri işleme için.

Jetpack Compose, bu sorunu birkaç farklı şekilde ele alıyor. Oluşturma kodu uygunsuz yükseltilebilir nesnelerden kaçının. Kullanıcı arayüzü öğeleri basit composable işlevlerdir Böylece bilgileri tekrar oynatılabilir şekilde besteye yazılır. Bu, kullanıcıların açık durum izlemeyi, bellek ayırmalarını ve geri çağırmaları yalnızca composable'lar, söz konusu özellikleri gerektiren, ancak diğer tüm kullanıcıların belirli bir View türünün uzantıları.

Ayrıca Compose, akıllı yeniden besteler sağlar. daha önce çizilen sonucu tekrar oynatabilirsiniz.

Birden fazla düzen kartı

Geleneksel ViewGroups ölçümleri ve düzenlerini çok sayıda ifade eder Birden fazla düzen geçişine açık olan API'ler. Bu çoklu düzen geçişler, görünümdeki iç içe yerleştirilmiş belirli noktalarda yapılırsa üstel işe neden olabilir hiyerarşik olarak düzenlenmiştir.

Jetpack Compose, tek düzen geçişini zorunlu kılar . Bu sayede, verimli bir şekilde yazmak için kullanabileceğiniz kullanıcı arayüzü ağaçlarını nasıl işlediğini konuştuk. Birden fazla ölçüm gerekiyorsa Compose'da doğal ölçümler hakkında daha fazla bilgi edinin.

Başlangıç performansını göster

View sisteminin, belirli bir düzeni gösterirken XML düzenlerini şişirmesi gerekiyor ilk kez yapıyor. Düzenler doğru şekilde yapıldığından bu maliyet Jetpack Compose'a kaydedilir. ve uygulamanızın geri kalanı gibi derlenir.

Karşılaştırma Oluşturma

Jetpack Compose 1.0'da performansı ile diğer platformlar arasında debug ve release modlarında bir uygulama. Temsili zamanlamalar için her zaman Uygulamanızın profilini oluştururken debug yerine release derlemesini kullanın.

Jetpack Compose kodunuzun performansını kontrol etmek için Jetpack Macrobenchmark kitaplığı. Nasıl yapıldığını daha fazla bilgi edinmek için MacrobenchmarkSample projesi.

Jetpack Compose ekibi aynı zamanda Makrobenchmark'ı kullanarak en iyisi. Örneğin, geç sütun için karşılaştırma değerine bakın ve kontrol paneli ve regresyonları izlemelisiniz.

Profil oluşturma

Jetpack Compose, bağımsız bir kitaplık olduğundan View sisteminin UI Toolkit dersleri ve çizimleri. Jetpack Compose 1.0 profil kullanıyor sürüm derlemeleri için yükleme. Profil yükleyiciler, uygulamaların aşağıdaki işlemler için kritik kod belirtmesine olanak tanır: önceden derlenmiş olması gerekir. Kargo profili oluştur Compose uygulamalarında başlatma süresini ve olumsuzlukları azaltan yükleme kuralları oluşturun.

ziyaret edin.