Mikro Karşılaştırma

Jetpack Microbenchmark kitaplığı, Android'deki yerel öğelerinizi karşılaştırmanıza olanak tanır kodu (Kotlin veya Java) girin. Kütüphane ısınma, kod performansınızı ve ayırma sayılarınızı ölçer, ayrıca karşılaştırma sonuçları hem Android Studio konsoluna hem de daha fazla bilgi içeren bir JSON dosyasına bolca fırsat sunuyor.

Karşılaştırma yazmadan önce kodunuzun profilini çıkarmanızı öneririz. Bu, kullanıcıların optimize etmeye değer pahalı işlemler bulduğunuzu düşünüyorsunuz. Ayrıca bu becerilerin İşlemler çalışırken neler olduğunu gösterdiği için işlemler yavaştır. Örneğin, düşük öncelikli iş parçacığında çalışıyor, disk erişimi nedeniyle uyuyor veya beklenmedik bir şekilde ve bit eşlem kod çözme gibi pahalı bir fonksiyona neden olabilir.

Mikro karşılaştırmalar en çok, uygulamanızda birçok kez çalıştırılan CPU işleri için faydalıdır. popüler kod yolları olarak da bilinir. İyi örnekler: RecyclerView veri dönüşümlerini veya işlemeyi, müşteriye gösterilen diğer verileri kodlar.

Diğer kod türlerinin Microbenchmark ile ölçülmesi daha zordur kitaplığını tanıtır. Karşılaştırmalar bir döngü içinde çalıştığından, sık çalıştırılmayan kodlar veya birden fazla kez çağrıldığında farklı bir performansa sahip olması, her şeyi öğrenebilirsiniz.

Kitaplığın Sürekli Entegrasyon (CI) ortamında nasıl kullanılacağını öğrenmek için Sürekli Entegrasyon'da karşılaştırmalar çalıştırma başlıklı makaleyi inceleyin.

Önbelleği ölçmekten kaçınma

Yalnızca önbelleği ölçmekten kaçınmaya çalışın. Örneğin, bir özel görünümün düzeni karşılaştırma yalnızca düzen önbelleğinin performansını ölçebilir. Bunu önlemek için her döngüde farklı düzen parametreleri aktarabilirsiniz. Örneğin, ölçüldüğünde bu zor olabilir çünkü işletim sistemi, dosya sistemini bir döngü içinde önbelleğe alır.

Tutarlı karşılaştırmalar elde edin

Mobil cihazlardaki saatler, performans için yüksek durumdan dinamik olarak düşük durum ayarını seçin. Değişen bu saatler karşılaştırma sayılarınızın büyük oranda farklılık göstermesini sağlayın; bu nedenle kitaplık, bu sorun hakkında daha fazla bilgi edinin.

Saatleri kilitle (rootlanmış cihaz gerektirir)

Saatleri kilitlemek, istikrarlı bir performans elde etmenin en iyi yoludur. Projenin ilerleyen zamanlarda saatler hiçbir zaman cihazı ısıtacak kadar yüksek olmaz veya karşılaştırma yeterli değilse düşük düşer. tam olarak kullanılmasıdır. Gradle göreviyle uygulanabilir (gradlew lockClocks) veya manuel olarak CI'da. Proje boyunca Bu özellik, istikrarlı bir performans sağlamaya yardımcı olur. Bu özellik, Android destekli bir cihaz gerektirir.

Uzun süreli performans modu

Window.setSustainedPerformanceMode(), cihazlar tarafından desteklenen bir özelliktir. uygulamanın daha düşük bir maks. CPU frekansını tercih etmesini sağlar. Desteklenen cihazlarda çalışırken kullanıyorsanız, Microbenchmark kitaplığı bu API'yi birlikte kullanarak hem termal sınırlamayı önlemek hem de sonuçları sabitlemek için kendi etkinliğini yapıyor.

Bu özellik, testInstrumentationRunner grubu tarafından varsayılan olarak etkindir. Android Gradle eklentisi tarafından sağlanıyor. Özel bir koşucu kullanmak isterseniz AndroidBenchmarkRunner alt sınıfına girer ve bunu testInstrumentationRunner.

Koşucu, karşılaştırmanın test edilmesini sağlamak için opak, tam ekran bir etkinlik başlatır. Ön planda ve başka bir uygulama çizimi olmadan çalışır.

Otomatik yürütme duraklatma

Saat kilidi veya sürekli performans kullanmazsanız kitaplık performans otomatik termal kısıtlama algılaması. Etkinleştirildiğinde, dahili karşılaştırma cihaz sıcaklığının ne zaman yükseleceğini belirlemek için düzenli aralıklarla daha düşük CPU performansı. Düşük CPU performansı algıladığında kitaplık cihazın soğuması için yürütme işlemini duraklatır, ardından mevcut çalıştırmayı yeniden dener karşılaştırma yapabilirsiniz.

AOT Derlemesi

Karmaşık mikro karşılaştırma noktalarının stabilizasyonu uzun sürebilir ve tespit edilmesi oldukça zordur. Hem tutarlı ölçüm hem de hızlı yineleme hızı en önemli öncelikler olduğundan androidx.benchmark eklentisi microbenchmark apk'nizi varsayılan olarak derler: Macrobenchmarks'ta CompilationMode.Full. Bu davranış için Karşılaştırma gerekir 1.3.0-beta01+ ve Android Gradle Eklentisi 8.4.0+. Bunu devre dışı bırakabilirsiniz androidx.benchmark.forceaotcompilation=false ayarlayarak gradle.properties dosya

Örnekler

GitHub deposunda aşağıdaki örneklere göz atın:

Ek kaynaklar

Geri bildirim gönder

Karşılaştırmayı kullanırken sorun bildirmek veya özellik isteği göndermek için herkese açık sorun İzleyici.