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.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Uygulamanızı karşılaştırma
- Temel Profiller Oluşturma {:#create-profile-rules}
- JankStats Kitaplığı