Mikro Karşılaştırma

Jetpack Mikrobenchmark kitaplığı, Android yerel kodunuzu (Kotlin veya Java) Android Studio içinden karşılaştırmanıza olanak tanır. Kitaplık ısınmayı işler, kod performansınızı ve ayırma sayılarınızı ölçer ve daha ayrıntılı bir şekilde hem Android Studio konsolunda hem de bir JSON dosyasına karşılaştırma sonuçları verir.

Karşılaştırma yazmadan önce kodunuzun profilini çıkarmanızı öneririz. Bu sayede, optimize edilmeye değer pahalı işlemleri bulabilirsiniz. Ayrıca düşük öncelikli bir iş parçacığında çalışma, disk erişimi nedeniyle uyku veya beklenmedik bir şekilde bit eşlem kodu çözme gibi pahalı bir işlevi devreye sokma gibi çalışırken neler olduğunu göstererek işlemlerin neden yavaş olduğunu gösterebilir.

Mikro karşılaştırmalar, en çok uygulamanızda birçok kez çalıştırılan CPU çalışmaları için yararlıdır. Bunlar, ortak kod yolları olarak da bilinir. Her defasında bir öğenin gösterildiği RecyclerView kaydırma, veri dönüşümleri veya işleme ve tekrar tekrar kullanılan diğer kod parçaları buna iyi örneklerdir.

Diğer kod türlerinin Mikrobenchmark kitaplığıyla ölçülmesi daha zordur. Karşılaştırmalar bir döngü içinde çalıştığından, sık sık çalışmayan veya birden çok kez çağrıldığında farklı performans gösteren kodlar, karşılaştırma için uygun olmayabilir.

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 sayfasına göz atın.

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

Yalnızca önbelleği ölçmekten kaçınmaya çalışın. Örneğin, bir özel görünümün düzen karşılaştırması yalnızca düzen önbelleğinin performansını ölçebilir. Bunu önlemek için her döngüde farklı düzen parametreleri aktarabilirsiniz. Dosya sistemi performansını ölçme gibi diğer durumlarda, işletim sistemi döngü içinde dosya sistemini önbelleğe aldığından bu zor olabilir.

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

Mobil cihazlardaki saatler, güç tasarrufu sağlamak veya cihaz ısındığında dinamik olarak yüksek durumdan düşük duruma geçirilir. Bu değişen saatler, karşılaştırma sayılarınızın büyük ölçüde farklılık göstermesine neden olabilir. Bu nedenle kitaplık bu sorunla başa çıkmanın yollarını sunar.

Saatleri kilitle (Root erişimli cihaz gerekir)

Saatleri kilitlemek, istikrarlı bir performans elde etmenin en iyi yoludur. Saatin hiçbir zaman cihazı ısıtacak kadar yüksek veya bir karşılaştırma CPU'yu tam olarak kullanmıyorsa düşük olmasını sağlamaya yardımcı olur. Bir Gradle göreviyle (gradlew lockClocks) veya CI'de manuel olarak uygulanabilir. Bu yöntem, istikrarlı bir performans elde etmenize yardımcı olacak en iyi yöntem olsa da, rootlanmış Android destekli bir cihaz gerektirmesi nedeniyle çoğu cihazda desteklenmemektedir.

Uzun süreli performans modu

Window.setSustainedPerformanceMode(), uygulamaların daha düşük maksimum CPU frekansını seçmesini sağlayan, cihazlar tarafından desteklenen bir özelliktir. Desteklenen cihazlarda çalışırken Microbenchmark kitaplığı hem termal kısıtlamayı önlemek hem de sonuçları dengelemek için bu API'nin bir kombinasyonunu kullanır ve kendi etkinliğini başlatır.

Bu özellik, Android Gradle eklentisi tarafından ayarlanan testInstrumentationRunner tarafından varsayılan olarak etkinleştirilir. Özel koşucu kullanmak istiyorsanız AndroidBenchmarkRunner alt sınıfını oluşturup testInstrumentationRunner olarak kullanabilirsiniz.

Koşucu, karşılaştırmanın ön planda ve başka bir uygulama çizimi olmadan çalıştığından emin olmak için opak, tam ekran bir etkinlik başlatır.

Yürütmeyi otomatik olarak duraklatma

Saat kilidi veya sürekli performans kullanmıyorsanız kitaplık, otomatik termal kısıtlama algılama işlemi gerçekleştirir. Bu özellik etkinleştirildiğinde dahili karşılaştırma, cihaz sıcaklığının CPU performansını düşürecek kadar yüksek hale geldiği zamanı belirlemek için düzenli olarak çalıştırılır. Kitaplık, düşük CPU performansı algıladığında cihazın soğuması için yürütme işlemini duraklatır ve ardından geçerli karşılaştırmayı yeniden dener.

Sana Özel

GitHub deposunda aşağıdaki örneklere bakın:

Ek kaynaklar

Geri bildirim gönderme

Karşılaştırmaları kullanırken sorunları bildirmek veya özellik istekleri göndermek için herkese açık sorun izleyicisine bakın.