Karşılaştırma
Son Güncelleme | Kararlı Sürüm | Serbest Bırakma Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
20 Mart 2024 | 1.2.3 | - | - | 1.3.0-alpha02 |
Bağımlılıkları bildirme
Karşılaştırma için bir bağımlılık eklemek üzere projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.
MakroKarşılaştırma
Projenizde Makrobenchmark'ı kullanmak istiyorsanız macrobenchmark modülünüz için build.gradle
dosyanıza aşağıdaki bağımlılıkları ekleyin:
Modern
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.2.3" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.2.3") }
Mikro karşılaştırma
Projenizde Microbenchmark'ı kullanmak için microbenchmark modülünüz için build.gradle
dosyanıza aşağıdaki bağımlılıkları ekleyin:
Modern
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.2.3" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.2.3") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Microbenchmark kitaplığı, mikrobenchmark modülünüzle kullanabileceğiniz bir Gradle eklentisi de sağlar.
Bu eklenti, modül için derleme yapılandırması varsayılanları belirler, karşılaştırma çıkış kopyasını ana makineye ayarlar ve
./gradlew lockClocks
görevini sağlar.
Eklentiyi kullanmak için üst düzey build.gradle
dosyanızdaki "eklentiler" bloğuna aşağıdaki satırı ekleyin:
Modern
plugins { id 'androidx.benchmark' version '1.2.3' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.2.3" apply false }
Ardından eklentiyi karşılaştırma modülünüzün build.gradle
dosyasına uygulayın
Modern
plugins { id 'androidx.benchmark' }
Kotlin
plugins { id("androidx.benchmark") }
Geri bildirim
Geri bildiriminiz Jetpack'i daha iyi hale getirmemize yardımcı oluyor. Yeni sorunlar keşfederseniz veya bu kitaplığı nasıl geliştirebileceğimizle ilgili fikirleriniz varsa bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerine bakın.
Sürüm 1.3
Sürüm 1.3.0-alpha02
20 Mart 2024
androidx.benchmark:benchmark-*:1.3.0-alpha02
yayınlandı. 1.3.0-alpha02 sürümü bu kayıtları içerir.
Yeni Özellikler
Gömülü ProGuard kuralları aracılığıyla mikrobench'te deneysel R8 desteği. Bu desteğin deneysel olduğunu ve kitaplık modülü testlerinin küçültülmesi için AGP 8.3 gerektiğini unutmayın. Karşılaştırma modülünüzün
build.gradle
ürününde R8 küçültme/optimizasyonunu etkinleştirmek için aşağıdakileri kullanın. Bu işlem, iş yüküne bağlı olarak önemli bir performans artışı sağlayacaktır. (I738a3, b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
Hata Düzeltmeleri
- Yöntem izleme uyarısını mikrobench çıkışından ayrı bir satırda olacak şekilde düzeltir. (I0455c, b/328308833)
Sürüm 1.3.0-alpha01
21 Şubat 2024
androidx.benchmark:benchmark-*:1.3.0-alpha01
yayınlandı. Sürüm 1.3.0-alpha01 bu kayıtları içerir.
API Değişiklikleri
- Gereksiz "gerekir" kelimesini önlemek için
MicrobenchmarkConfig
boole parametreleri yeniden adlandırıldı (Ia8f00, b/303387299) - Ana iş parçacığı karşılaştırmalarının (ör. Görünümler veya Oluşturma kullanıcı arayüzlerine dokunanlar) özellikle CI'daki büyük süitlerde ANR'lerin tetiklenmesini önleyebilmesi için
BenchmarkRule.measureRepeatedOnMainThread
eklendi. (I5c86d) FrameTimingMetric
ürününün, Perfetto izinden çıkartılmak yerine doğrudan platformdan gelen ölçümlerin kullanıldığı deneysel bir alternatif uygulama olanFrameTimingGfxInfoMetric
eklendi. (I457cb, b/322232828)- Bağımsız
warmUp
yinelemeleri sırasında ART profili dökümü yapma özelliği ekleyin. (I17923) TraceSectionMetric
API'de yapılan çeşitli değişiklikler:Mode.Min
,Mode.Max
ekle- Bölüm adını metrik etiketi olarak geçersiz kılmak için etiket bağımsız değişkeni ekleyin
- Metrik anlamını netleştirmek için çıkışa mod adı eklendi
- Bu metriğin kullanımının çoğu tekrarlanan etkinlikler için geçerli olduğundan, varsayılan değer toplam olarak değiştirildi. Süreksizlikler veya ayrı ayrıştırmalara neden olabileceğinden CI kullanımındaki bu değişikliklere dikkat edin. (Ic1e82, b/301892382, b/301955938)
Hata Düzeltmeleri
- Belirtilen yönetilen cihaz mevcut olmadığında referans profil gradle eklentisindeki hata mesajı iyileştirildi (Idea2b, b/313803289)
- AGP 8.3.0-alpha15'ten (I1d2af, b/313992099) önceki AAR'deki kitaplık temel çizgisi profillerini dahil etmeyle ilgili düzeltme
- Oluşturma görevinin sonundaki referans değer ve başlangıç profili çıkış URL'si düzeltildi (I802e5, b/313976958)
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)]
sorununu düzeltmeye çalışmak için veri kaynağı zaman aşımları düzenlendi (I8dc7d, b/323601788)ProfileInstaller
1.3'ü içermeyen uygulamaları karşılaştırırken yaşanan geçici kilitlenmelere karşı gölgelendirici bırakma davranışını geçersiz kılmak için iki araç bağımsız değişkeni ekleyin:androidx.benchmark.dropShaders.enable=true/false
: Özellikle henüz profil yükleyici 1.3'ü kullanmayan uygulamaları karşılaştırırken, tüm gölgelendirici bırakma işlemlerini (StartupMode.Cold
lansmanlarında yapılanlar dahil) atlamak için kullanılabilirandroidx.benchmark.dropShaders.throwOnFailure=true/false
: Gölgelendirici bırakmaya çalışırken oluşabilecek hataları telafi etmek için kullanılabilir. Örneğin, profil yükleyici 1.3 (I4f573) yüklü olmayan uygulamaları karşılaştırırken kullanılabilir.
- Birkaç saniyeden uzun sürmesi beklendiğinde kullanıcı arayüzü iş parçacığında yöntem izlemeyi ve aktarma sırasında temizleme yöntemi izlerini atlayın. (I6e768)
- Dosyalar yazılırken veya işlenirken ortaya çıkabilecek kilitlenmeleri önlemek için dosya adları 200 karakterden uzun olduğunda ekleyin. (I4a5ab)
- İzlemenin başındaki ve sonundaki sonlandırılmamış karelerin birlikte eşlenebilmesi sorununu düzeltir. Bu durum, yanlış bir şekilde çok uzun tek bir kare olarak rapor oluşturur. (I39353, b/322232828)
- Kullanıcı derlemelerinde ART profillerini temizlemek için API 30-33'te bir paketi yeniden yüklerken API 30 ve sonraki sürümlerde
--skip verification
kullanın. Bu, bazı cihaz sınıflarında hatalara neden olan Play Protect uyarılarının atlanmasına yardımcı olur. (Ic9e36) - Sistem Kullanıcı Arayüzü veya Başlatıcı gibi bir sistem uygulaması değilken uygulamaları kapatmak için
am force-stop
kullanın. (I5e028) - Makrobenchmark, şu anda hedef uygulamanın bir ART profilini temizlemesi için
1 second
beklemektedir (önceden500 ms
bekliyordu). (I85a50, b/316082056) - Kareler oluşturulmadığında
FrameTimingMetric
hatasını iyileştirin ve sorunun teşhis edilmesine yardımcı olmak için, metrik ayrıştırma işlemi başarısız olduğunda her zaman iz bağlantısı için çıkış oluşturun. (I956b9) - Özellikle belirli OEM cihazlarda,
FrameTimingMetric
ürününde kare kimliğini ayrıştıramayan kilitlenme düzeltildi. (Ia24bc, b/303823815, b/306235276) FrameMetrics
hesabındaki kontrollerin güvenlik düzeyi gevşetildi ve hata mesajlarına daha fazla ayrıntı eklendi. (iadede)
Sürüm 1.2
Sürüm 1.2.3
24 Ocak 2024
androidx.benchmark:benchmark-*:1.2.3
yayınlandı. 1.2.3 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- AGP sürümü 8.3.0 veya üstü olduğunda Baseline Profile Gradle Eklentisi'nin istisnası kaldırıldı.
- AGP 8.3.0-alpha15'ten önceki AAR'de kitaplık temel çizgisi profillerini dahil etmeyle ilgili düzeltme.
Sürüm 1.2.2
1 Aralık 2023
androidx.benchmark:benchmark-*:1.2.2
yayınlandı. 1.2.2 sürümü bu kayıtları içerir.
Temel Profiller
- Yürütme günlükleri, referans profil çıkış dosyası yolunu yerel dosya URI'si olarak gösterir (aosp/2843918, aosp/2853665, b/313976958)
Sürüm 1.2.1
15 Kasım 2023
androidx.benchmark:benchmark-*:1.2.1
yayınlandı. 1.2.1 sürümü bu kayıtları içerir.
Yeni Özellikler
- Kullanıcı test varyantlarını devre dışı bıraktığında gösterilen hata mesajı iyileştirildi (b/307478189)
- AS test çalıştırması entegrasyonunu desteklemek için özellikler eklendi (b/309805233), (b/309116324)
Sürüm 1.2.0
18 Ekim 2023
androidx.benchmark:benchmark-*:1.2.0
yayınlandı. 1.2.0 sürümü bu kayıtları içerir.
1.1.0'dan sonraki önemli değişiklikler
Temel Profiller
- Yeni Baseline Profile Gradle Plugin, temel profilleri yakalamayı ve test ve derleme iş akışınıza dahil etmeyi otomatik hale getirir.
BaselineProfileRule.collect
artık kararlı, önceki deneyselBaselineProfileRule.collectBaselineProfile
API'nin basitleştirilmiş ve basitleştirilmiş bir sürümü.packageName
ürününü belirtip uygulamanızı çalıştırın
- Temel profil oluşturan kitaplıklar için artık kodda (
BaselineProfileRule.collect
bağımsız değişkeni) veya daha basit bir şekilde gradle eklentisinde oluşturulan kuralları filtreleyebilirsiniz - Düzeltmeler
- Android U+ sürümünde temel profil koleksiyonu düzeltildi (Id1392, b/277645214)
MakroKarşılaştırma
- Derleme
- Makrobenchmark artık her derleme için derleme durumunu doğru şekilde tamamen sıfırlıyor. Bu işlem için APK'nın Android 14'ten önce yeniden yüklenmesi gerekiyor. Bu nedenle, ölçülenin durumunu (kullanıcı girişi gibi) korumak istiyorsanız Android 14 ve sonraki sürümlerde karşılaştırma yapmanız önemle tavsiye edilir.
- Bu sorunu çözmek için uygulama derlemesini ayrı olarak kontrol edebilir ve derlemeyi
CompilationMode.Ignore()
veya araçlama bağımsız değişkeniyle atlayabilirsiniz
Araç Bağımsız Değişkenleri
- Daha hızlı doğrulama çalıştırmaları için (ör. karşılaştırma oluştururken veya gönderim öncesi sırasında)
androidx.benchmark.dryRunMode.enable
enstrümantasyon bağımsız değişkeni desteği (zaten mikro karşılaştırmada mevcuttur) androidx.benchmark.profiling.mode=StackSampling
veMethodTracing
için destek.- Çalışma zamanı filtreleme temel profili ile makro karşılaştırma kuralı testlerinin karşılaştırmasına izin vermek için
androidx.benchmark.enabledRules
eklendi - Trace-perfetto ile izlemeyi etkinleştirmek için
androidx.benchmark.perfettoSdkTracing.enable
argümanı eklendi (ör. Yeniden oluşturma izleme).StartupMode.COLD
ile birlikte kullanıldığında, uygulama başlatılırken izleme kitaplığı yüklenip etkinleştirildiği için zamanlamanın önemli ölçüde etkileneceğini unutmayın.
- Daha hızlı doğrulama çalıştırmaları için (ör. karşılaştırma oluştururken veya gönderim öncesi sırasında)
Şartlar
- Makrobenchmark, profil yakalama / sıfırlama ve gölgelendirici önbellek temizlemeyi etkinleştirmek için hedef uygulamada artık
ProfileInstaller
1.3.0 veya sonraki bir sürümü gerektiriyor.
- Makrobenchmark, profil yakalama / sıfırlama ve gölgelendirici önbellek temizlemeyi etkinleştirmek için hedef uygulamada artık
Yeni Deneysel Metrik API'leri
- Uygulamanızdaki
trace("") {}
bloklarından basit zamanlamaları çıkarmanızı sağlayan deneyselTraceSectionMetric
veya PerfettoTraceProcessor
'un tam sorgu özelliğinden yararlanmak için TraceMetric eklendi. - Güç kullanım bilgilerini yakalamak için deneysel
PowerMetric
eklendi - Sayfa hatalarını saymak için deneysel
MemoryCountersMetric
eklendi - Sistem izlerinden (diğer adıyla Perfetto izleri) metrikleri çıkarmak için dahili olarak kullanılan deneysel
PerfettoTraceProcessor
API'si eklendi
- Uygulamanızdaki
Düzeltmeler
- Birden fazla APK'dan (ör. uygulama paketinden) yüklenen bir uygulamadan profil çıkarırken veya yüklerken yaşanan kilitlenmeler düzeltildi.
FrameTimingMetric
işlevinin tutarsız çerçeve kimliklerine sahip kareleri yoksayması (genellikle API 31 ve sonraki sürümlerde dalgalar sırasındaki kareler) düzeltildi (I747d2, b/279088460)- 64 MB'tan büyük izlerdeki ayrıştırma hataları düzeltildi (Ief831, b/269949822)
- Cihaz (özellikle emülatör) işletim sistemi görüntüsü izleme veya derleme için doğru şekilde yapılandırılmadığında karşılaşılan hatalar açıklandı
- Pil bulunmayan cihazlar için pil düzeyi kontrolünü atla (mikro ve makro)
- Geçersiz çıkış dizinleri için daha açık hatalar ve daha güvenli varsayılanlar ile iyileştirilmiş dosya çıkışı
- Gölgelendirici önbelleği sürekli olarak bırakılarak
StartupMode.COLD
kararlılığı iyileştirildi (MacrobenchmarkScope.dropShaderCache
üzerinden de açığa çıkarılır) startActivityAndWait
için Leanback yedeği düzeltildi.
Mikro Karşılaştırma
- Özellikler
- Profil oluşturma, diğer metriklerden sonra ayrı bir aşamaya taşınmıştır. Bu sayede, bir test çalıştırmasında hem doğru zamanlama hem de profil oluşturma sonuçları görüntülenebilir.
- Deneysel API'ler
- Özel metrikleri tanımlamak, izleme ve profil oluşturmayı yapılandırmak için deneysel
MicrobenchmarkConfig
API'si eklendi. Yöntem izlerini yakalamak veya iz noktalarını yakalamak için kullanılabilir (ancak ek yük izlemeyi unutmayın). BenchmarkState
'iBenchmarkRule
ürününden ayrı olarak kontrol etmek için, JUnit olmadan deneysel API'ler eklendi- Perfetto izlerinin, karşılaştırma API'lerinden ayrı olarak özel yapılandırmaya sahip şekilde yakalanmasını sağlamak için deneysel
PerfettoTrace
kaydı eklendi.
- Özel metrikleri tanımlamak, izleme ve profil oluşturmayı yapılandırmak için deneysel
- Düzeltmeler
- Geçici çözümde, Android Studio karşılaştırma çıktısında başta beyaz alanlar eksik.
- Android Studio karşılaştırma çıktısında uyarıların yazdırılamamasına yol açan sorun düzeltildi.
- Android 13 (API 33) ve sonraki sürümlerdeki
SampledProfiling
kilitlenmesi düzeltildi. IsolationActivity
ve Perfetto izlemeyi atlayarakdryRunMode
performansı büyük ölçüde iyileştirildi (eski OS sürümlerinde 10 kata kadar daha hızlı prova modu).
Sürüm 1.2.0-rc02
6 Ekim 2023
androidx.benchmark:benchmark-*:1.2.0-rc02
yayınlandı. 1.2.0-rc02 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
BaselineProfile
Eklenti dosyası kopyalama işleminin kesintiye uğramaması için Karşılaştırma dosyası çıkışını düzeltin. Dosyalar cihazdan oluşturulup kopyalanmıştır ancak gradle eklentisi tarafından görülmeyecek şekilde yeniden adlandırılmıştır. (I8dbcc, b/303034735, b/296453339)- Makrobenchmark modülünden hedef uygulamaya eklenirken
tracing-perfetto
yükleme hatası mesajları açıklandı.
Sürüm 1.2.0-rc01
20 Eylül 2023
androidx.benchmark:benchmark-*:1.2.0-rc01
yayınlandı. 1.2.0-rc01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Bir Karşılaştırma'da Perfetto SDK izlemesi başlatılamadığında artık bir istisna (çözüm talimatlarıyla birlikte) bildirilir. (I6c878, b/286228781)
- ART yöntemi izleme -> perfetto biçimine dönüştürülürken gerçekleşen OOM kilitlenmesi düzeltildi. (I106bd, b/296905344)
- (Makrobenchmark) Studio test çıktısında bağlandığında yöntem izleme etiketi ve cihaz/ana makinede benzersiz olacak yöntem izleme dosya adları düzeltildi. Böylece birden fazla karşılaştırma çalıştırıldığında bunların üzerine yazılmayacak. (I08e65, b/285912360)
- Referans profili kaydederken cihazın uyanık olmasını sağlar. (I503fc)
Sürüm 1.2.0-beta05
30 Ağustos 2023
androidx.benchmark:benchmark-*:1.2.0-beta05
yayınlandı. 1.2.0-beta05 sürümü bu kayıtları içerir.
Yeni Özellikler
- Baseline Profile Gradle Plugin artık Android Gradle Plugin 8.3'ü destekliyor. (aosp/2715214)
Sürüm 1.2.0-beta04
23 Ağustos 2023
androidx.benchmark:benchmark-*:1.2.0-beta04
yayınlandı. 1.2.0-beta04 sürümü bu kayıtları içerir.
Yeni Özellikler
- Baseline Profiles Gradle eklentisi artık Android Gradle Eklentisi 8.3'ü destekliyor. (aosp/2715214)
Hata Düzeltmeleri
- Dosyaların yazma / taşıma ve çekme sırasında karşılaşılan (özellikle parametreleştirilmiş testlerdekiler) hataları, çıkış dosyası adlarında "=" ve ":" işaretlerini kaldırarak, çıktı dosyası adlarını daha fazla temizleyerek düzeltin. (I759d8)
Sürüm 1.2.0-beta03
9 Ağustos 2023
androidx.benchmark:benchmark-*:1.2.0-beta03
yayınlandı. 1.2.0-beta03 sürümü bu kayıtları içerir.
API Değişiklikleri
TraceSectionMetric
filtresi için varsayılan olarak açık, yalnızca hedef pakete bağımsız değişken eklendi (Ia219b, b/292208786)
Hata Düzeltmeleri
- Yapı adı ve diğer referanslarla tutarlılık sağlamak için
fullTracing.enable
araç bağımsız değişkeniperfettoSdkTracing.enable
olarak yeniden adlandırıldı.fullTracing.enable
, yedek olarak çalışmaya devam eder. (I7cc00) - Karşılaştırma kitaplığı dahili iz noktaları (mikro karşılaştırma döngüsü/aşama izleme dahil) artık Studio sistem izleme görüntüleyicisinde gösterilecek ve Perfetto'da doğru süreç altında yer alacak. (I6b2e7, b/293510459)
- API 31 ve sonraki sürümlerde makro karşılaştırmalı DEĞİL hatası kaldırıldı ve mühendis/kullanıcı hata ayıklaması root erişimli cihazlarda profillenebilir kontrol atlandı. (I2abac, b/291722507)
- Dex Düzeni Optimizasyonları kullanılırken başlangıç profili kuralları da artık temel profil kuralları olarak kabul edilir. (aosp/2684246, b/293889189)
Sürüm 1.2.0-beta02
26 Temmuz 2023
androidx.benchmark:benchmark-*:1.2.0-beta02
yayınlandı. 1.2.0-beta02 sürümü bu kayıtları içerir.
API Değişiklikleri
- Mikrobench özel metrikleri ve yapılandırması (ör. profil oluşturucu ve izleme) için deneysel API'ler eklendi. (I86101, b/291820856)
Hata Düzeltmeleri
- Kısa süre önce API 26/28 ARM64 emülatörlerinde düzeltildiği gibi, işletim sistemi izleme için yanlış yapılandırıldığında makrobench'te hata bildirin. (I0a328, b/282191686)
- Bazı emülatörler bu sorunu yakın zamanda düzelttiğinden, emülatörün güncellenmesini önermek için derleme sıfırlama hatasına ayrıntı eklendi. (I8c815, b/282191686)
androidx.test.uiautomator:uiautomator:2.2.0
öğesiniimplementation
bağımlılığı yerineapi
yapın. (I1981e)
Sürüm 1.2.0-beta01
18 Temmuz 2023
androidx.benchmark:benchmark-*:1.2.0-beta01
yayınlandı. 1.2.0-beta01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Studio'daki Karşılaştırma çıktısında bazen atlanan uyarılar ve Studio'da (Ia61d0, b/227205461, b/286306579, b/285912360) Karşılaştırma çıkışındaki geçici boşlukların önde gelen boşlukları düzeltildi
FrameTimingMetric
için yapılan yorum düzeltildi. Alt metrikframeDurationCpuMs
olarak adlandırılmıştır. (Ib097f, b/288830934).
Sürüm 1.2.0-alfa16
21 Haziran 2023
androidx.benchmark:benchmark-*:1.2.0-alpha16
yayınlandı. Sürüm 1.2.0-alpha16 bu kayıtları içerir.
API Değişiklikleri
BaselineProfileRule.collectBaselineProfile()
API'sinin adıBaselineProfileRule.collect()
olarak değiştirildi. (I4b665)
Hata Düzeltmeleri
androidx.benchmark.profiling.mode = MethodTracing
için makro karşılaştırma desteği. (I7ad37, b/285912360)- Mikro karşılaştırma profili oluşturma ayrı bir aşamaya taşındı. Bu nedenle, değişiklik değil, ölçümden sonra sırayla gerçekleştirilir. Yakalanan Perfetto izine (varsa) artık
MethodTracing
iz bölümü de dahil ediliyor. (I9f657, b/285014599) Mode.Sum
ileTraceSectionMetric
öğesine sayım ölçümü ekleyin. (Ic121a, b/264398606)
Sürüm 1.2.0-alfa15
7 Haziran 2023
androidx.benchmark:benchmark-*:1.2.0-alpha15
yayınlandı. Sürüm 1.2.0-alpha15 bu kayıtları içerir.
Yeni Özellikler
- Hedef uygulamanın bellek kullanımını izlemek için deneysel
MemoryUsageMetric
eklendi. (I56453, b/133147125, b/281749311) PerfettoTrace.record
ile tamamen özel Perfetto yapılandırmaları için destek ekleyin (If9d75, b/280460183)- Temel profil oluşturma adımını atlamak için özellik eklendi. Kullanım:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration
. (I37fda, b/283447020)
API Değişiklikleri
collectBaselineProfile
API her zaman kararlı temel profiller oluşturur.collectStableBaselineProfile
API kaldırıldığı için bunun yerinecollectBaselineProfile
kullanılmalıdır. (I17262, b/281078707)- Dokümanlarda varsayılan filtre davranışının daha net olması için
BaselineProfileRule
öğesininfilterPredicate
bağımsız değişkeni, null olmayan bir değer olacak şekilde değiştirildi. Bu değer, eşdeğer bir varsayılan değerle değiştirildi. (I3816e)
Hata Düzeltmeleri
- Çalışma zamanının büyük çoğunluğunu oluşturduğu için performansı önemli ölçüde artırmak amacıyla
dryRunMode
içindeIsolationActivity
ve Perfetto izlemeyi devre dışı bırakın. (Ie4f7d) - Araç testi bağımsız değişkenleri
androidx.benchmark.profiling.mode=StackSampling
veandroidx.benchmark.profiling.sampleFrequency
kullanılarak Makrobenchmark'larda çağrı yığını örnekleme desteği. (I1d13b, b/282188489) - Android U'da (API 34) gölgelendiriciler bırakılırken ve emülatörlerde yaşanan kilitlenme düzeltildi. (I031ca, b/274314544)
Sürüm 1.2.0-alfa14
3 Mayıs 2023
androidx.benchmark:benchmark-*:1.2.0-alpha14
yayınlandı. Sürüm 1.2.0-alpha14 bu kayıtları içerir.
Hata Düzeltmeleri
- Tutarsız kare kimliklerine sahip kareleri yoksayarak
FrameTimingMetric
düzeltildi. Bu durum, son platform sürümlerindeki (API 31+) bazı animasyonların,RenderThread
animasyon yapılırken (ör. dalga sırasında) çok sayıda kareyi yoksaymasına neden olur. (I747d2, b/279088460) - 64 Mb'tan büyük izler için iz işlemcisi ayrıştırması düzeltildi. (Ief831, b/269949822)
- Android U'da temel profil oluşturma işleminin, farklı
pm dump-profiles
komutu çıkışı nedeniyle başarısız olması düzeltildi. (Id1392, b/277645214) - Dizeleri doğru karşılaştırmak için GPU saat kilitleme komut dosyasını düzeltin (I53e54, b/213935715)
Sürüm 1.2.0-alfa13
5 Nisan 2023
androidx.benchmark:benchmark-*:1.2.0-alpha13
yayınlandı. Sürüm 1.2.0-alpha13 bu kayıtları içerir.
API Değişiklikleri
- Yaklaşan başlangıç profili özelliğini desteklemek için temel profiller oluşturulurken profil türü parametresi eklendi (Ie20d7, b/275093123)
- Perfetto izinlerinin içeriğine göre tamamen özel metrikler tanımlamak için yeni deneysel
TraceMetric
API'si eklendi. (I4ce31, b/219851406) - Karşılaştırma sırasındaki sayfa hatalarının sayısını belirlemek için deneysel bir metrik ekleyin. (I48db0)
Sürüm 1.2.0-alfa12
22 Mart 2023
androidx.benchmark:benchmark-*:1.2.0-alpha12
yayınlandı. Sürüm 1.2.0-alpha12 bu kayıtları içerir.
Yeni Özellikler
- Yeni temel profil gradle eklentisi alfa sürümde yayınlandı. Bu sayede, referans profil oluşturmak kolaylaştı ve geliştirici iş akışı basitleştirildi.
API Değişiklikleri
- Hem Microbenchmark'ları hem de deneysel
PerfettoTrace
API'lerini içeren API 21 ve 22'deki Perfetto izleme desteği kaldırıldı. Bu sürümden önce bazı cihazlardaUiAutomation
bağlantıları güvenilir değildi. (I78e8c) - İz içeriğinin ayrıştırılmasını etkinleştirmek amacıyla
PerfettoTraceProcessor
için herkese açık deneysel API eklendi. Bu, Perfetto iz verilerine dayalı tamamen özel metriklere yönelik bir adımdır. (I2659e, b/219851406)
Sürüm 1.2.0-alfa11
8 Mart 2023
androidx.benchmark:benchmark-*:1.2.0-alpha11
yayınlandı. Sürüm 1.2.0-alpha11 bu kayıtları içerir.
Hata Düzeltmeleri
- Birden fazla APK içeren uygulama paketindeki profilleri yeniden yüklerken veya çıkarırken yaşanan
MacrobenchmarkRule
veBaselineProfileRule
kilitlenmeleri düzeltildi. (I0d8c8, b/270587281)
Sürüm 1.2.0-alfa10
22 Şubat 2023
androidx.benchmark:benchmark-*:1.2.0-alpha10
yayınlandı. Sürüm 1.2.0-alpha10 bu kayıtları içerir.
Yeni Özellikler
- Makrobenchmark, Android 14 ve sonraki sürümlerde yeni bir platform özelliği sayesinde artık hedef uygulamaları derleme durumunu sıfırlamak için yeniden yüklemez. Daha önce, root erişimli bir cihaza sahip olmak veya her karşılaştırma çalıştırılmadan önce kaldırılan tüm uygulama durumlarını (ör. kullanıcı girişi) ele almak gerekiyordu. (I9b08c, b/249143766)
Hata Düzeltmeleri
- Derlemenin atlanması nedeniyle,
DryRunMode
öğesinin artık boş profille kilitlenmesini önleyecek şekilde düzeltme yapıldı. Bunun yerine, tek bir iterasyon yapar ve bir şeyin yakalandığından emin olmak için profili çıkarır. (I2f05d, b/266403227) - Eski API düzeylerinde güç istatistikleri varlığı kontrol edilirken
PowerMetric
kilitlenmesi düzeltildi. (5faaf9, b/268253898)
Sürüm 1.2.0-alpha09
11 Ocak 2023
androidx.benchmark:benchmark-*:1.2.0-alpha09
yayınlandı. Sürüm 1.2.0-alpha09 bu kayıtları içerir.
Hata Düzeltmeleri
- Tüm karşılaştırmaları / referans profil oluşturmayı devre dışı bırakmak için
None
ilaandroidx.benchmark.enabledRules
araç bağımsız değişkeninin geçirilmesi etkinleştirildi. (I3d7fd, b/258671856) - Uygulama modüllerinde
PerfettoTrace
yakalamayı düzeltin (ör. kendi kendine enstrümantasyon içermeyen test APK'ları) (I12cfc) - Studio çıkışında referans profil adb pull bağımsız değişkeni sırası (I958d1, b/261781624) düzeltildi
- Arm emulator api 33, artık bir makro karşılaştırma çalıştırmaya çalışırken olduğu gibi doğru şekilde tanınıyor ve uyarıyı doğru bir şekilde yazdıracak. (69133b,b/262209591)
- Makrobenchmark'ta (fe4114, b/232448937) pil bulunmayan cihazlarda pil seviyesi kontrolünü atla
Sürüm 1.2.0-alpha08
7 Aralık 2022
androidx.benchmark:benchmark-*:1.2.0-alpha08
yayınlandı. Sürüm 1.2.0-alpha08 bu kayıtları içerir.
API Değişiklikleri
- Test davranışını ve performansını incelemek amacıyla test kapsamında Perfetto izlerini (Sistem İzleri olarak da bilinir) yakalamak için
PerfettoTrace.record {}
vePerfettoTraceRule
adlı deneysel yeni API'ler eklendi. (I3ba16) BaselineProfileRule
artık paket önekleri listesi yerine bir filtre koşulunu kabul ediyor. Bu, teste filtreleme üzerinde tam denetim sağlar. (I93240)- Temel profil N yinelemede kararlı hale gelene kadar bekleyen deneysel bir API (
BaselineProfileRule.collectStableBaselineProfile
) ekleyin. (I923f3) BaselineProfileRule
kullanarak referans profil oluştururken çıkış dosyası adı öneki belirtme özelliği ekleyin. (I7b59f, b/260318655)
Hata Düzeltmeleri
- Özellikle API 21 / 22'de çıkış dosyalarının sessizce yazılmamasını/eklenmemesini sağlayacak dosya çıkışı yazma güvenliğini iyileştirin. (If8c44, b/227510293)
- Dosyayı doğru şekilde oluşturup yerleştirmek için
simpleperf
izleme çıkışını düzeltin. Bu, bir dosyanın gradle tarafından başarısız bir şekilde çekilmesiyle ilgili sorunları daha genel olarak düzeltecektir. (I12a1c, b/259424099) - Profil yükleyici çok eski olduğunda yazdırılan "profil yükleyiciyi iyileştir" hata mesajı. Bu, artık API 31 ile 33 arasındaki temel profilleri ölçmek için profil yükleyici sürümünü (1.2.1) güncellemenizi gerektirir. (Ia517f, b/253519888)
- "Yazdırma gerekli API <=23" mesajındaki birkaç kabuk komutu hatasını düzeltme (ör. başarısız performans ikili program kurulumu ve izleme yakalama hataları dahil) (Ib6b87, b/258863685)
- Oluşturulan profil kurallarını, zamanla değiştikçe değişiklik sayısını en aza indirmek için otomatik olarak sıralayın (profil kurallarını kaynak kontrolüne geçirirken). (Ie2509)
- Android 13'ün (API 33) altındaki rootlanmamış derlemelerde
Expected no stderr from echo 3 > /proc/sys/vm/drop_caches
iletisiyle (I6c245, b/259508183) kilitlenme düzeltildi
Bilinen Sorunlar
- MacrobenchmarkScope.dropShaderCache()
, profil yükleyicisinin manifest dosyasında henüz yayınlanmamış bir yayın kayıt defterinin eksik olması nedeniyle kilitlenebilir. (I5c728, b/258619948) profileinstaller:1.3.0-alpha02
ürününde bu sorunu geçici olarak çözmek için uygulamanızın (karşılaştırmanızın değil) AndroidManifest.xml dosyasına aşağıdakileri ekleyin:
<!-- workaround bug in profileinstaller 1.3.0-alpha02, remove when updating to alpha03+ -->
<receiver
android:name="androidx.profileinstaller.ProfileInstallReceiver"
android:permission="android.permission.DUMP"
android:exported="true">
<intent-filter>
<action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
</intent-filter>
</receiver>
Sürüm 1.2.0-alpha07
9 Kasım 2022
androidx.benchmark:benchmark-*:1.2.0-alpha07
yayınlandı. Sürüm 1.2.0-alpha07 bu kayıtları içerir.
API Değişiklikleri
- Makrobenchmark'larda enerji ve gücü ölçmek için
PowerMetric
API'sini ekler. (Ife601, b/220183779) MacrobenchmarkScope.dropShaderCache()
değeri, gölgelendirici önbelleğini gerçekten bırakacak şekilde düzeltildi. Gölgelendiriciler artık her iterasyonda tutarlı bir şekilde temizlendiği için bu işlem,StartupMode.COLD
karşılaştırmalarından yaklaşık 20 ms'lik gürültüyü kaldırır. Önceden, ısınma yinelemelerini kullananPartial
derlemesi, ısınma sırasında gölgelendirici önbelleğe alma işleminin gerçekleşme olasılığı daha yüksek olduğundan hatalı bir şekilde hızlı sayılar raporluyordu. Bu düzeltme, root erişimli cihaz veya hedef uygulamadaprofileinstaller:1.3.0-alpha02
kullanılmasını gerektirir.ProfileInstaller
kitaplığının API değişiklikleri için lütfen ProfileInstaller 1.30-alpha02 sayfasına bakın. (Ia5171, b/231455742)- Aynı etikete sahip birden fazla iz bölümünde harcanan toplam sürenin ölçülmesine olanak tanıyan
TraceSectionMode("label", Mode.Sum)
özelliği eklendi. ÖrneğinTraceSectionMetric("inflate", Mode.Sum)
, enflasyona harcanan bir makro karşılaştırmada toplam süre için birinflateMs
metriği bildirir. AyrıcaTraceSectionMetric
, hedef uygulamadaforceEnableAppTracing
kullanımıyla daha düşük API seviyelerine dönmek içinandroidx.tracing.Trace
ile birlikte çalıştığından API 29 gereksinimi de kaldırılmıştır. (Id7b68, b/231455742)
Hata Düzeltmeleri
- Tüm çıkış/hatalar doğrulanarak tüm dahili kabuk komutlarının güvenliği iyileştirildi. (I5984d, b/255402908, b/253094958)
- Cihazı temel profil
adb pull
komutunda belirtin. Böylece pull komutu, birden fazla cihaz bağlıysa (en fazla bir emülatör) kopyalanabilir (I6ac6c, b/223359380) - Makrobenchmark testi apk, kendi kendine enstrümantasyon olarak ayarlanmadıysa hata ekleyin. Bu hata, hedef uygulamanın işlemi içinden makro karşılaştırmayı engeller. İşlem sırasında makrobench, uygulamayı derleyemez/sonlandıramaz/baştan başlatamaz veya kendi izinlerini kontrol edemez (I4279b)
measureRepeated()
özelliğinde,setupBlock
sonrasındaStartupMode.COLD
öğesinin hedef işlemi sonlandırmaması sorunu giderildi. Uygulamayla etkileşimde bulunansetupBlock
, uygulama işlemini çalışır durumda bırakmaz ve geçersiz bir baştan başlatma ölçümü. (I8ebb7)
Sürüm 1.2.0-alpha06
24 Ekim 2022
androidx.benchmark:benchmark-*:1.2.0-alpha06
yayınlandı. Sürüm 1.2.0-alpha06 bu kayıtları içerir.
API Değişiklikleri
BaselineProfileRule
artık Android 13'te (API 33) root gerektirmiyor ve artık deneysel değil. (Ie0a7d, b/250083467, b/253094958)- Bu değişiklik, root olmayan cihazlarda bir uygulamadaki profillerin diske boşaltılma biçimini de düzeltir ancak hedef uygulamanın profil yükleyici bağımlılığının güncellenmesini gerektirir.
BaselineProfileRule
veyaCompilationMode.Partial(warmupIterations)
uygulamasını rootlanmamış bir cihazda kullanmak için hedef uygulamanızı daandroidx.profileinstaller.profileinstaller:1.3.0-alpha01
kullanacak şekilde güncellemeniz gerekir. Bu, derlenebilmesi/çıkarılabilmesi için profilin diske doğru şekilde boşaltılmasını sağlar.
Hata Düzeltmeleri
- API 33 ve sonraki sürümlerdeki
SampledProfiling
kilitlenmesi düzeltildi. (I40743, b/236109374)
Sürüm 1.2.0-alpha05
5 Ekim 2022
androidx.benchmark:benchmark-*:1.2.0-alpha05
yayınlandı. Sürüm 1.2.0-alpha05 bu kayıtları içerir.
Hata Düzeltmeleri
- Karşılaştırma tarafından yakalanan izler için Studio sistem izleme görüntüleyicideki kare dökümünü düzeltin (I3f3ae, b/239677443)
FrameOverrun
öğesini 29 yerine API 31 gerektirecek şekilde listelemek içinFrameTimingMetric
politikasını düzeltin (I716dd, b/220702554)- Yinelemeyi
BaselineProfileRule
içinde ayarlayın ve hedef paket yüklü değilse (MakrobenchmarkRule için önceden yapılmışsa) bunu açıkça belirtin. (Ic09a3, b/227991471)
Sürüm 1.2.0-alpha04
21 Eylül 2022
androidx.benchmark:benchmark-*:1.2.0-alpha04
yayınlandı. Sürüm 1.2.0-alpha04 bu kayıtları içerir.
Yeni Özellikler
Daha hızlı yerel geliştirme yapmak ve uygulama otomasyonunu doğrulamak (ör. gönderim öncesinde) için makro karşılaştırmaya (zaten mikroda mevcuttur)
dryRunMode.enable
enstrümantasyon argümanı desteği ekleyin. Bu, yinelemeleri 1'e geçersiz kılar, derlemeyi atlar, tüm yapılandırma hatalarını gizler ve ölçüm .json dosyası çıkışını devre dışı bırakır. (Ib51b4, b/175149857)Gradle komut satırında:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=true
build.gradle dosyasında:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true' } }
Hata Düzeltmeleri
StartupTimingMetric
işlevinin, ölçülen EtkinliklerinMacrobenchmarkScope.startActivityAndWait()
üzerinden başlatılmasını artık gerektirmemesi düzeltildi. Bu, metriğin örneğin bildirimler,Context.startActivity()
, uygulama içi Etkinliğe dayalı gezinme veya kabuk komutlarından başlatmaları alabileceği anlamına gelir. (Ia2de6, b/245414235)- Kare algılamanın güvenlik düzeyini azaltarak emülatörlerde başlatmanın tamamlanmasını beklemeye çalışırken
startActivityAndWait
ürününün zaman aşımına uğramasına neden olan hata düzeltildi. (Ibe2c6, b/244594339, b/228946895)
Sürüm 1.2.0-alpha03
7 Eylül 2022
androidx.benchmark:benchmark-*:1.2.0-alpha03
yayınlandı. Sürüm 1.2.0-alpha03 bu kayıtları içerir.
Yeni Özellikler
BenchmarkState
kullanımı içinBenchmarkRule
/JUnit4
değerinden ayrı olarak bağımsız olarak kullanılan deneysel API'ler eklendi. (Id478f, b/228489614)
Hata Düzeltmeleri
startActivityAndWait
için Leanback yedeği eklendi. (01ed77, b/242899915)
Sürüm 1.2.0-alpha02
24 Ağustos 2022
androidx.benchmark:benchmark-*:1.2.0-alpha02
yayınlandı. Sürüm 1.2.0-alpha02 bu kayıtları içerir.
API Değişiklikleri
- Temel Profil oluşturma sırasında, root erişimli olsa bile
MacrobenchmarkScope.killProcess()
için varsayılan olarakam force stop
değerine ayarlanır. Bu, isteğe bağlı bir boole bağımsız değişkeniyle geçersiz kılınabilir. (02cce9, b/241214097)
Hata Düzeltmeleri
- Sistem uygulamaları için temel profil oluşturmayı destekleyin. (I900b8, b/241214097)
- Rootlanmamış cihazlarda ODPM güç metriklerinin kontrol edilmesi desteği. (a38c78, b/229623230)
Sürüm 1.2.0-alpha01
27 Temmuz 2022
androidx.benchmark:benchmark-*:1.2.0-alpha01
yayınlandı. Sürüm 1.2.0-alpha01 bu kayıtları içerir.
Yeni Özellikler
- Perfetto SDK izlemeyi ortaya çıkaran bir uygulamada Perfetto SDK izlemeyi etkinleştirme araçları sağlayan yeni izleme-perfetto-ortak bileşeni (I2cc7f)
Makro karşılaştırma çalıştırmalarının yalnızca karşılaştırmalara göre filtrelenmesi veya yalnızca referans profil oluşturulması için
androidx.benchmark.enabledRules
enstrümantasyon bağımsız değişkeni eklendi. Yalnızca bir tür test çalıştırmak için (örneğin, bir emülatörde yalnızcaBaselineProfiles
oluştururken) "Makrobenchmark" veya "BaselineProfile" testini geçin. Virgülle ayrılmış liste de Desteklenir. (I756b7, b/230371561)Ör. makrobenchmark'ınızın build.gradle dosyasında:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
Veya Gradle komut satırından:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
API Değişiklikleri
- Karşılaştırmalarda enerji ve enerji görevlerinin ölçülmesi için yeni
PowerMetric
eklendi. (I9f39b, b/220183779) - Profil sıfırlama ve derlemeyi atlamak için yeni bir derleme modu (
CompilationMode.Ignore
) eklendi. (Ibbcf8, b/230453509) - Çıkış dosyasını paket adlarına göre filtrelemek için
BaselineProfileRule#collectBaselineProfile
öğesine yeni bir parametre eklendi (If7338, b/220146561) - Geliştiricinin, güç tüketimini ölçmek için cihazı boşaltabilmesini sağlar. (I6a6cb)
MacrobenchmarkScope
içindeki gölgelendirici önbelleğini temizleme özelliği eklendi. (I32122)- Geliştiricinin, metrik türü ve istenen alt sistem kategorilerinin görüntülenmesini yapılandırmasını sağlar. (I810c9)
- Önceden, desteklenmeyen bir cihazda çalıştırıldığında karşılaştırmada
UnsupportedOperationException
hatası atılıyordu. Artık UOE yalnızca metrik desteklenmeyen cihazda kullanılıyorsa gerçekleşiyor (ör.PowerMetric.configure
). (I5cf20, b/227229375) - Makro karşılaştırmalarda her sistem kategorisinde toplam güç ve enerjiyi ölçmek için
TotalPowerMetric
veTotalEnergyMetric
eklendi. (I3b26b, b/224557371)
Hata Düzeltmeleri
- Köklenmemiş derlemelerdeki her makro karşılaştırmaları arasında derlenen yöntemlerin doğru şekilde sıfırlanmamasına neden olan sorun düzeltildi. Maalesef bu işlem apk'nin her iterasyonunda yeniden yüklenmesini gerektirir. Bu işlem, her makro karşılaştırmanın uygulama verilerini siler. (I31c74, b/230665435)
- API 21/22'deki iz kaydı kilitlenmesi düzeltildi (If7fd6, b/227509388, b/227510293, b/227512788)
- Başlangıç makro karşılaştırmalarındaki "Hiçbir metrik okunamadı" istisnasını düzeltmek için etkinlik başlatma tamamlanma algılamasını revize edin. (Ia517c)
Sürüm 1.1.1
Sürüm 1.1.1
9 Kasım 2022
androidx.benchmark:benchmark-*:1.1.1
yayınlandı. 1.1.1 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Bazı Android11 (API 30) ve sonraki sürümlerin yüklü olduğu cihazlarda meydana gelen
android.system.ErrnoException: open failed: EACCES
sorunlarını giderir. Bu,1.2.0-alpha01
tarafından özenle seçilmiş bir düzeltmedir. (aosp/2072249)
Sürüm 1.1.0
Sürüm 1.1.0
15 Haziran 2022
androidx.benchmark:benchmark-*:1.1.0
yayınlandı. 1.1.0 sürümü bu kayıtları içerir.
- Bu sürüm,
androidx.benchmark:benchmark-*:1.1.0-rc03
ile aynı.
1.0.0'dan sonraki önemli değişiklikler
Başlatma ve kaydırma gibi tüm uygulama etkileşimlerini ölçmenizi sağlayan Jetpack Makrobenchmarks desteği, izleri yakalama ve iz bölümlerini ölçme olanağı sunar.
Temel Profiller için destek
- Temel Profillerin etkinliğini ölçmek için
CompilationMode.Partial
. - Belirli bir kritik kullanıcı yolculuğu için otomatik olarak Temel profiller oluşturmak üzere
@BaselineProfileRule
.
- Temel Profillerin etkinliğini ölçmek için
Mikro karşılaştırma çalıştırmaları sırasında Ayırma metrikleri ve profil oluşturma desteği.
Sürüm 1.1.0-rc03
1 Haziran 2022
androidx.benchmark:benchmark-*:1.1.0-rc03
yayınlandı. 1.1.0-rc03 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
Hedef paketi her karşılaştırma yinelemesinde yeniden yüklemekten kaçının. ( aosp/2093027, b/231976084)
pressHome()
üzerinden300ms
gecikmeyi kaldırın. (aosp/2086030, b/231322975)Gelişmiş seçeneklerde kullanılan Kabuk komutlarını optimize ederek Makrobenchmark yineleme hızını iyileştirin. (aosp/2086023, b/231323582)
Makrobenchmarks ile Temel Profiller oluştururken Yönetilen Gradle Cihazları için destek. (aosp/2062228, b/228926421)
Sürüm 1.1.0-rc02
11 Mayıs 2022
androidx.benchmark:benchmark-*:1.1.0-rc02
yayınlandı. 1.1.0-rc02 sürümü bu kayıtları içerir.
- Uygulamalar artık doğru ölçümler sağlamak için her karşılaştırma arasında tamamen yeniden yüklendiğinden bu sürümde bir davranış değişikliği yapıldığını unutmayın.
Hata Düzeltmeleri/Davranış Değişiklikleri
Uygulama derlemesinin, makro karşılaştırmalar arasında doğru şekilde sıfırlanmamasına ve rootlanmamış derlemelerde hiç sıfırlanmamasına neden olan sorun düzeltildi. Bu, birden fazla test çalıştırmanın,
CompilationMode
ürününün ölçümler üzerinde çok az etkisi olması veya hiç etkisi olmamasıyla sonuçlanacağı çoğu durumu düzeltir. Bu sorunu geçici olarak çözmek için hedef uygulama, her test yöntemini tam olarak yeniden yüklüyor ve böylece her makro karşılaştırma arasındaki uygulama verileri temizlenecek. (I31c74, b/230665435)Bu durum uygulamaların testlerden önceki durumu ayarlamasını engellediğinden, bu sorunu gidermek için artık derleme / yeniden yüklemeyi atlayabilirsiniz. Örneğin,
cmd package compile -f -m speed <package>
kabuk komutuyla hedefi tamamen derleyebilir ve ardından makrobenchmark'ın derleme adımını atlayabilirsiniz.Ör. makrobenchmark'ınızın build.gradle dosyasında:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }
Veya Gradle komut satırından:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
androidx.benchmark.enabledRules
enstrümantasyon argümanı eklenerek, makro karşılaştırmalar ile referans profil oluşturma testleri arasında bir modülün paylaşılması mümkün hale getirildi. Yalnızca bir test türü çalıştırmak için (ör. bir emülatördeBaselineProfiles
oluştururken) "Makrobenchmark" veya "BaselineProfile" testini geçin. (I756b7, b/230371561)Ör. makrobenchmark'ınızın build.gradle dosyasında:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
Veya Gradle komut satırından:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
Sürüm 1.1.0-rc01
20 Nisan 2022
androidx.benchmark:benchmark-*:1.1.0-rc01
yayınlandı. 1.1.0-rc01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Android Studio'daki temel profil çıkış bağlantıları artık benzersiz bir dosya adı kullanıyor. Bu şekilde, çıkış her zaman
BaselineProfileRule
kullanımına ilişkin en son sonuçları yansıtır. ( aosp/2057008, b/228203086 )
Sürüm 1.1.0-beta06
6 Nisan 2022
androidx.benchmark:benchmark-*:1.1.0-beta06
yayınlandı. 1.1.0-beta06 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- API 21/22'deki iz kaydı kilitlenmesi düzeltildi (If7fd6, b/227509388)
- Başlangıç makro karşılaştırmalarındaki "Hiçbir metrik okunamadı" istisnasını düzeltmek için etkinlik başlatma tamamlanma algılamasını revize edin. (Ia517c)
CompilationMode.None()
kullanıldığında Makrobenchmarks için başlangıç metriklerini düzeltin. Bu değişiklikten önceCompilationMode.Partial()
,Compilation.None()
adlı cihaza göre daha yavaş görünüyordu. (611ac9).
Sürüm 1.1.0-beta05
23 Mart 2022
androidx.benchmark:benchmark-*:1.1.0-beta05
yayınlandı. 1.1.0-beta05 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
CompilationMode.None
kullanılırken profil yüklemesini atladıktan sonra paketi sonlandır. (aosp/1991373)StartupMode.COLD
kullanılırken Makrobenchmarks'ın başlangıç metriklerini toplayamaması sorunu giderildi. (aosp/2012227 b/218668335)
Sürüm 1.1.0-beta04
23 Şubat 2022
androidx.benchmark:benchmark-*:1.1.0-beta04
yayınlandı. 1.1.0-beta04 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
Android 10'da ve işlem adlarının izlerde doğru şekilde yakalanmamasından kaynaklanan
NoSuchElementException
metrikleri düzeltildi. (Ib4c17, b/218668335)Q (API 29) ve sonraki sürümlerde termal kısıtlama algılama için
PowerManager
kullanın. Bu sayede, termal kısıtlama algılamada yanlış pozitif durum sıklığı önemli ölçüde azaltılır (90 saniyelik bekleme süresinden sonra karşılaştırma denemesi) ve kullanıcı derlemelerindeki karşılaştırmalar önemli ölçüde hızlanır. Ayrıca saatler kilitli olduğunda bile gaz gazı algılama özelliği sağlar (cihazın fiziksel ortamına göre çok yukarıda kilitlenmişlerse). (I9c027, b/217497678, b/131755853)Denetlemeyi basitleştirmek için Simpleperf örneklenmiş profil çıkarmayı yalnızca
measureRepeated
iş parçacığına filtreleyin (Ic3e12, b/217501939)Çok işlemli uygulamalardaki adlandırılmış kullanıcı arayüzü alt işlemlerinden elde edilen metrikler için destek (Ice6c0, b/215988434)
Temel Profil kurallarını Android 9'u (SDK 28) hedefleyecek şekilde filtreleyin. aosp/1980331 b/216508418
Compilation.None()
kullanılırken Profil Yükleme işlemini atla. Ayrıca, uygulamaandroidx.profileinstaller
'in eski bir sürümünü ve Android Gradle Eklentisini kullandığında uyarı bildiriminde bulunun. aosp/1977029
Sürüm 1.1.0-beta03
9 Şubat 2022
androidx.benchmark:benchmark-*:1.1.0-beta03
yayınlandı. 1.1.0-beta03 sürümü bu kayıtları içerir.
API Değişiklikleri
- Ses eksikliğinin algılanmasına olanak tanımak için
AudioUnderrunMetric
, deneme işareti altında makro karşılaştırma kitaplığına eklendi (Ib5972) profileBlock
ile aynı işlevi gördüğü içinBaselineProfileRule
artıksetup
bloğu kabul etmiyor. (Ic7dfe, b/215536447)Örneğin,
@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, setupBlock = { startActivityAndWait() }, profileBlock = { // ... } ) }
@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, profileBlock = { startActivityAndWait() // ... } ) }
Hata Düzeltmeleri
- Studio çıkışına bağlantı verildiğinde, mikrobench profil aracı izlerinin sonraki çalıştırmalarda güncellenmemesi sorunu düzeltildi (I5ae4d, b/214917025)
- API 23'te (Ice380) derleme kabuk komutlarını engelle
- Bunların zaman damgası değil süre olduğunu ve önekleri eşleştireceğini netleştirmek için
FrameCpuTime
->FrameDurationCpu
,FrameUiTime
->FrameDurationUi
yeniden adlandırıldı. (I0eba3, b/216337830)
Sürüm 1.1.0-beta02
26 Ocak 2022
androidx.benchmark:benchmark-*:1.1.0-beta02
yayınlandı. 1.1.0-beta02 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Mikro karşılaştırma Yığın Örnekleme / Yöntem İzleme Profil sonuçları artık diğer profil oluşturma çıkışlarına benzer şekilde Studio çıkışına bağlanmıştır ve ayırma metriğini engellemez. (Idcb65, b/214440748, b/214253245)
- BaselineProfileRule, oluşturulan BaselineProfile metin dosyasını almak için artık logcat'te ve Studio çıkışında
adb pull
komutunu yazdırıyor. (f08811)
Sürüm 1.1.0-beta01
12 Ocak 2022
androidx.benchmark:benchmark-*:1.1.0-beta01
yayınlandı. 1.1.0-beta01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Profil oluşturucu bağımsız değişkenini etkinleştirmenin yoksayılmasını düzeltir. (I37373, b/210619998)
- Kullanımdan kaldırılan
CompliationModes
(I98186, b/213467659) kaldırıldı - Daha net olması için
CompilationMode.Partial
olan referans profil bağımsız değişkeni değeri enum olarak değiştirildi. (Id67ea)
Sürüm 1.1.0-alfa13
15 Aralık 2021
androidx.benchmark:benchmark-*:1.1.0-alpha13
yayınlandı. Sürüm 1.1.0-alpha13 bu kayıtları içerir.
API Değişiklikleri
- Android Q'da (API 29+) mikrobench çıkışına düşük genel yük Sistem İzleme ekleyin. Bunun, sonuçları etkilememesi için şu anda özel izlemeyi (
android.os.Trace
veyaandroidx.tracing
Jetpack API'leri üzerinden) yakalamadığını unutmayın. Bu izleme, özellikle karşılaştırma dışındaki kaynaklardan gelen kararsızlıkların teşhis edilmesinde faydalı olmalıdır. (I298be, b/205636583, b/145598917) CompilationModes
konusunu üç sınıfa ayırın: Tam, Hiçbiri, Kısmi. Önceden, derleme bağımsız değişkenlerine (artık uygulama ayrıntıları olarak ele alıyoruz) ve özelliklere göre tutarsız bir şekilde adlandırılmışlardı. Bu, platform sürümlerindeki dengeleri, olası kombinasyonları ve davranışları daha net hale getirir. (I3d7bf, b/207132597)- Artık kurulum ve ölçümler her zaman çiftler halinde sırayla yapılıyor. Artık paket adını ve yinelemeyi sorgulayabilirsiniz (ancak bazı ısınma senaryolarında yineleme
null
olabilir). (Id3b68, b/208357448, b/208369635)
Hata Düzeltmeleri
- Yanlış bir şekilde
None
olarak değerlendirilenCompilationMode.Speed
düzeltildi (I01137)
Sürüm 1.1.0-alfa12
17 Kasım 2021
androidx.benchmark:benchmark-*:1.1.0-alpha12
yayınlandı. Sürüm 1.1.0-alpha12 bu kayıtları içerir.
Yeni Özellikler
- İze dayalı özel zamanlama ölçümleri için deneysel TraceSectionMetric özelliğini ekleyin. (I99db1, b/204572664)
Hata Düzeltmeleri
- Kullanıcı arayüzünün test edilebildiğinden emin olmak için her iterasyonda cihazı uyandırın. Kilit ekranının devre dışı bırakılması gerekir. (Ibfa28, b/180963442)
- Emülatörlerde ve rootlanmamış cihazlarda StackSampling profil oluşturma modunda birden fazla kilitlenmeyi düzeltir (Icdbda, b/202719335)
- Her iterasyonun sonunda 0, 5 saniyelik uyku modu kaldırıldı.Bu değişiklikle birlikte bazı metriklerin eksik olduğunu görürseniz lütfen hata bildiriminde bulunun. (Iff6aa)
- Veri kaybı olasılığını ve izlemeden kaynaklanan bellek ek yükünü azaltın (Id2544, b/199324831, b/204448861)
- Kompakt planlanmış depolama biçimine geçerek iz boyutunu yaklaşık% 40 azaltın. (Id5fb6, b/199324831)
- Başlangıç metriklerinin uygulamaları, her zaman oluşturma iş parçacığının sonunda sona erecek şekilde güncellendi. Bu yöntem, platform sürümleri arasında daha tutarlı olacak ve uygulama içi ölçümlerle daha uyumlu olacaktır. (Ic6b55)
Sürüm 1.1.0-alfa11
3 Kasım 2021
androidx.benchmark:benchmark-*:1.1.0-alpha11
yayınlandı. Sürüm 1.1.0-alpha11 bu kayıtları içerir.
API Değişiklikleri
- Makrobenchmark'ın
minSdkVersion
değeri şu anda23
. (If2655) - Uygulamanın kritik kullanıcı yolculuğu için temel profiller oluşturabilecek yeni bir deneme amaçlı
BaselineProfileRule
ekler. Ayrıntılı dokümanlar aşağıda verilmiştir. (İbbefa, b/203692160) - Yöntemin tamamlanması/çözünürlüğünde belirsizliğe neden olduğu için Java çağrılarını yapan kişi için eklenen measureTekrared arayüz varyantını kaldırır. Java çağrılarını yapan kullanıcıların yine measurementRepeated öğesinden Unit.Instance değerini döndürmesi gerekir. Bu bir sorun ise lütfen hata bildiriminde bulunun. Bunu gelecekteki bir sürümde tekrar gözden geçirebiliriz. (Ifb23e, b/204331495)
Sürüm 1.1.0-alfa10
27 Ekim 2021
androidx.benchmark:benchmark-*:1.1.0-alpha10
yayınlandı. Sürüm 1.1.0-alpha10 bu kayıtları içerir.
API Değişiklikleri
- Backport StartupTimingMetric'i API 23'e geri döndüreceksiniz. Ayrıca bu yeni uygulama, ilgili içerik oluşturulana kadar beklemek için reportFullyDrawn() işlevini daha iyi işler. (If3ac9, b/183129298)
- Java arayanları için birden fazla MakrobenchmarkScope yöntemine JvmOverloads eklendi. (I644fe, b/184546459)
- Java dilinde deyimsel kullanım için
Consumer<MacrobenchmarkScope>
kullanan alternatif MakrobenchmarkRule.measureRepeated işlevi sağlayın. (If74ab, b/184546459)
Hata Düzeltmeleri
- Yeterince erken başlamayan ve metrik verilerinin eksik olduğu izler için düzeltme uygulandı. Bunun, kitaplığın kendisinden kaynaklanan "Karşılaştırma sırasında hiçbir metrik okunamadı" istisnalarını düzeltmesi beklenir. (I6dfcb, b/193827052, b/200302931)
- FrameNegatifSlack, anlamını (karenin zaman bütçesini ne kadar aştığını) netleştirmek için FrameOverrun olarak yeniden adlandırıldı. (I6c2aa, b/203008701)
Sürüm 1.1.0-alpha09
13 Ekim 2021
androidx.benchmark:benchmark-*:1.1.0-alpha09
yayınlandı. Sürüm 1.1.0-alpha09 bu kayıtları içerir.
Hata Düzeltmeleri
- API 31/S+ sürümünde, Kernel sayfa önbelleğinin kök olmadan bırakılması desteği (StartupMode.COLD başlatmaların doğruluğunu artırır). (Iecfdb, b/200160030)
Sürüm 1.1.0-alpha08
29 Eylül 2021
androidx.benchmark:benchmark-*:1.1.0-alpha08
yayınlandı. Sürüm 1.1.0-alpha08 bu kayıtları içerir.
API Değişiklikleri
- API 23'e geri dönmek için makro karşılaştırmalarını kaydırmayı etkinleştirin (If39c2, b/183129298)
- Yineleme başına birden fazla örneğin yüzdelik dilimlerine odaklanarak kullanıcı arayüzü ve JSON çıkışına yeni örneklenmiş metrik türü ekleyin. (I56247, b/199940612)
- Karşılaştırma kitaplıklarında kayan nokta metriklerine geçiş yapın (Studio kullanıcı arayüzünde kısaltılır). (I69249, b/197008210)
Sürüm 1.1.0-alpha07
1 Eylül 2021
androidx.benchmark:benchmark-*:1.1.0-alpha07
yayınlandı. Sürüm 1.1.0-alpha07 bu kayıtları içerir.
API Değişiklikleri
- Gelecekte desteklenmesi amaçlanan en düşük API düzeyini yansıtmak için minimum API 21'e yükseltildi. Şu anda 29 (I440d6, b/183129298) olmak üzere gerekli API'lar aracılığıyla aktarılmaya devam eden mevcut minimum API desteği
Hata Düzeltmeleri
- Referans profilleri kullanan uygulamaların
CompilationMode.BaselineProfile
kullanarak MakroKarşılaştırmaları çalıştırmasını kolaylaştırmak içinProfileInstaller
sorunlarını giderir. (I42657, b/196074999) NOT:androidx.profileinstaller:profileinstaller:1.1.0-alpha04
veya sonraki bir sürüme de güncellenmesi gerekir. StartupMode.COLD
+CompilationMode.None
karşılaştırmaları artık daha istikrarlı. (I770cd, b/196074999)
Sürüm 1.1.0-alpha06
18 Ağustos 2021
androidx.benchmark:benchmark-*:1.1.0-alpha06
yayınlandı. 1.1.0-alpha06 sürümü bu kayıtları içerir.
API Değişiklikleri
- Yerel olarak test/profil çıkarma işlemi sırasında yineleme sayısının manuel olarak geçersiz kılınmasına olanak tanımak için
androidx.benchmark.iterations
araç bağımsız değişkeni eklendi. (6188be, b/194137879)
Hata Düzeltmeleri
- API 29 ve sonraki sürümlerde varsayılan örnekleme profil aracı olarak Simpleperf'e geçildi. (Ic4b34, b/158303822)
Bilinen Sorunlar
CompilationMode.BaselineProfile
ile ilgili çalışmalar devam ediyor. Bir profilin şimdilik ne kadar iyi olduğunu belirlemek için kullanmaktan kaçının.
Sürüm 1.1.0-alpha05
4 Ağustos 2021
androidx.benchmark:benchmark-*:1.1.0-alpha05
yayınlandı. Sürüm 1.1.0-alpha05 bu kayıtları içerir.
1.1.0-alpha04
, yayınlanmadan önce sporatik bir kilitlenme nedeniyle iptal edildi. b/193827052
API Değişiklikleri
- Başlatmayı
am start
aracılığıyla çağırmak için startActivityAnd Wait, her ölçüm yinelemesinin süresini yaklaşık 5 saniye azaltarak, amaç ayrıştırılabilir öğeleri artık desteklemeyecek şekilde değiştirilmiştir. (I5a6f5, b/192009149
Hata Düzeltmeleri
- Termal kısıtlama algılamanın agresifliğini azaltın ve sık sık algılanırsa referans değeri hesaplayın. (I7327b)
- FrameTimingMetric'i Android S beta'da çalışacak şekilde düzeltiyor (Ib60cc, b/193260119)
CompilationMode.BaselineProfile
özelliğini daha iyi desteklemek amacıyla, hedef uygulamayı zorla durdurulmuş durumdan çıkarmak için birEmptyActivity
kullanın. (Id7cac, b/192084204)- İzleme dosyası uzantısı, platform standardıyla eşleşmesi için
.perfetto-trace
olarak değiştirildi. (I4c236, b/174663039) - StartupTimingMetric artık uygulamanızın oluşturulması tamamlanana kadar geçen süreyi ölçmek için "fullDrawnMs" metriğini üretiyor. Uygulamanız için bu metriği tanımlamak üzere, ilk içeriğiniz hazır olduğunda (ör. ilk liste öğeleriniz DB veya ağdan yüklendiğinde) Activity.reportFullyDrawn öğesini çağırın. (reportFullyDrawn yöntemi, ComponentActivity'de derleme sürümü kontrolleri olmadan kullanılabilir). Testinizin metriği yakalayacak kadar uzun süre çalışması gerektiğini unutmayın (startActivityAnd Wait, reportFullyDrawn için beklemez). (If1141, b/179176560)
- Ui meta verilerini izlere ekleme maliyetini 50 ms'den fazla azaltın (Ic8390, b/193923003)
- İzleme durdurulurken yoklama sıklığı önemli ölçüde arttı. Bu durum, örneğin başlangıç karşılaştırma çalışma zamanını %30'un üzerinde azaltabilir (Idfbc1, b/193723768)
Sürüm 1.1.0-alpha03
16 Haziran 2021
androidx.benchmark:benchmark-*:1.1.0-alpha03
yayınlandı. Sürüm 1.1.0-alpha03 bu kayıtları içerir.
Yeni Özellikler
- Jetpack ProfileInstaller kitaplığı kullanılarak yüklenen profilleri desteklemek için yeni bir
CompilationMode.BaselineProfile
eklendi. (aosp/1720930)
Hata Düzeltmeleri
Karşılaştırma hatalarının engellenmesi için örnek Gradle kodu, .gradle.kts kullanıcılarını da destekleyen bir söz dizimine sahip, kullanımdan kaldırılmamış API'yi kullanacak şekilde güncellendi.
Örnek:
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
Sürüm 1.1.0-alpha02
18 Mayıs 2021
Karşılaştırma sürümü 1.1.0-alpha02, karşılaştırmaya büyük bir bileşen getiriyor: Makrobenchmark. macrobenchmark, CPU döngülerini ölçmenize olanak tanıyan karşılaştırmanın yanı sıra başlatma ve kaydırma gibi tüm uygulama etkileşimlerini ölçmenize ve izleri yakalamanıza olanak tanır. Daha fazla bilgi için kitaplık dokümanlarına bakın.
androidx.benchmark:benchmark-*:1.1.0-alpha02
yayınlandı. Sürüm 1.1.0-alpha02 bu kayıtları içerir.
Yeni Özellikler
Makrobenchmark yapıları eklendi (androidx.benchmark:benchmark-macro-junit4
ve androidx.benchmark:benchmark-macro
)
- Başlatma, kaydırma/animasyon performansı metriklerini uygulamanızdan yerel olarak veya CI içinde kaydedin
- Android Studio içinden izleri yakalayın ve denetleyin
Hata Düzeltmeleri
- Android 12'deki çıkış diziniyle ilgili geçici kabuk izinleri sorunu (Not: Etkilenen cihazlarda çıkış dosyaları yakalamaya devam etmek için Android Gradle Eklentisi'nin 7.0.0 canary ve Android Studio'nun Arctic Fox'a (2020.3.1) güncellenmesi gerekebilir. (Icb039)
- Comparison Plugin'de yapılandırmayı önbelleğe alma desteği (6be1c1, b/159804788)
- Basitleştirilmiş dosya çıkışı:
requestLegacyExternalStorage=true
gerektirmeyen bir dizinde varsayılan olarak etkindir (8b5a4d, b/172376362) - Mevcut olmayan platform sürümlerinde JIT iş parçacığının bulunamamasıyla ilgili kitaplık yazdırma logcat uyarılarını düzeltir. (I9cc63, b/161847393)
- Okuma cihazı maksimum sıklığı için düzeltme uygulandı. (I55c7a)
Sürüm 1.1.0-alpha01
10 Haziran 2020
androidx.benchmark:benchmark-common:1.1.0-alpha01
, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01
ve androidx.benchmark:benchmark-junit4:1.1.0-alpha01
yayınlandı. Sürüm 1.1.0-alpha01 bu kayıtları içerir.
1.1'deki Yeni Özellikler
- Ayırma Metriği - Karşılaştırmalar artık, hazırlık ve zamanlamadan sonra ek bir aşamada çalışarak ayırma sayılarını yakalıyor. Ayırmalar, platformun eski sürümlerinde performans sorunlarına neden olabilir (O'da 140 ns, M'de 8ns'e karşılık gelmektedir. Saatler kilitli olan Nexus5X'te ölçülmüştür). Bu metrik, Android Studio konsolu çıkışının yanı sıra
- Profil oluşturma desteği: Kodunuzun neden yavaş çalışıyor olabileceğini incelemek için artık karşılaştırma çalıştırması için profil oluşturma verilerini yakalayabilirsiniz. Karşılaştırma, ART'tan yöntem izlemeyi veya yöntem örneklemeyi destekler. Bu dosyalar, Android Studio'daki Dosya > Aç seçeneği kullanılarak Profiler ile incelenebilir.
- Comparison Gradle eklentisi artık daha basit kurulum için varsayılanlar sağlıyor:
testBuildType
, kod kapsamının yerleşik olduğu bağımlılıkları kullanmaktan kaçınmak için varsayılan olarak kullanıma sunulacak şekilde ayarlanmıştır. buildType sürümü, varsayılan buildType olarak da yapılandırılmıştır. Bu sayede, Android Studio bir projeyi ilk kez açarken otomatik olarak doğru derleme varyantını seçebilir. (b/138808399)signingConfig.debug
, varsayılan imzalama yapılandırması olarak kullanılır (b/153583269)
** Hata Düzeltmeleri **
- Her karşılaştırma için ilk ölçümün yapay olarak diğerlerinden yüksek olduğu ısınma geçiş ek yükü önemli ölçüde azaltıldı. Bu sorun, çok küçük karşılaştırmalarda (1 mikrosaniye veya daha kısa) daha belirgin oldu. (b/142058671)
- Komut satırından çalıştırılırken her karşılaştırma için yazdırılan
InstrumentationResultParser
hatası düzeltildi. (I64988, b/154248456)
Bilinen Sorunlar
- Komut satırı ve Karşılaştırma'nın gradle çağrıları sonuçları doğrudan yazdırmaz. Bu sorunu Studio'da çalıştırarak veya sonuçlar için JSON çıkış dosyasını ayrıştırarak giderebilirsiniz.
- Karşılaştırma raporu, "android" veya "download" ile biten bir applicationId'ye sahip uygulamanın yüklü olduğu cihazlardan rapor alamaz (büyük/küçük harfe duyarlı değildir). Bu sorunla karşılaşan kullanıcıların Android Gradle Eklentisi'ni 4.2-alpha01 veya sonraki bir sürüme yükseltmeleri gerekir.
Sürüm 1.0.0
Karşılaştırma Sürümü 1.0.0
20 Kasım 2019
androidx.benchmark:benchmark-common:1.0.0
, androidx.benchmark:benchmark-gradle-plugin:1.0.0
ve androidx.benchmark:benchmark-junit4:1.0.0
, 1.0.0-rc01 sürümünden herhangi bir değişiklik yapılmadan yayınlandı. Sürüm 1.0.0 bu kayıtları içerir.
1.0.0'ın temel özellikleri
Karşılaştırma kitaplığı, uygulama kodu için performans karşılaştırmaları yazmanıza ve hızlı bir şekilde sonuç almanıza olanak tanır.
Bu çözüm, derleme ve çalışma zamanı yapılandırması sorunlarını önler, ölçümlerin doğru ve tutarlı olmasını sağlamak için cihaz performansını dengeler. Zaman içindeki kod performansını gözlemlemek ve regresyonları önlemek için karşılaştırmaları doğrudan Android Studio'da veya Sürekli Entegrasyon'da çalıştırın.
Başlıca özellikler şunlardır:
- Saat sabitleme
- Otomatik ileti dizisi önceliklendirme
- RecyclerView Örneği gibi kullanıcı arayüzü performans testi desteği
- JIT uyumlu ısınma ve döngü
- İşleme sonrası için JSON karşılaştırma çıkışı
Sürüm 1.0.0-rc01
23 Ekim 2019
androidx.benchmark:benchmark-common:1.0.0-rc01
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01
ve androidx.benchmark:benchmark-junit4:1.0.0-rc01
yayınlandı. 1.0.0-rc01 sürümü bu kayıtları içerir.
Yeni özellikler
- Karşılaştırmalara sistem izleme özelliği eklendi
Hata düzeltmeleri
- JIT'in önceliklendirme nedeniyle hazırlıktan önce tamamlanmaması sorunu düzeltildi (b/140773023)
- Android Gradle Plugin 3.5 ve 3.6'da birleştirilmiş JSON çıkış dizini
Sürüm 1.0.0-beta01
9 Ekim 2019
androidx.benchmark:benchmark-common:1.0.0-beta01
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01
ve androidx.benchmark:benchmark-junit4:1.0.0-beta01
yayınlandı. 1.0.0-beta01 sürümü bu kayıtları içerir.
Yeni özellikler
- Bir karşılaştırmadan diğerine sızıntı yapmak üzere bellek basıncını azaltmak için her ısınma işleminden önce atık toplama işlemi çalıştırın (b/140895105)
Hata düzeltmeleri
androidx.annotation:android-experimental-lint
bağımlılığı eklendi. Böylece, Kotlin arayanları için Kotlin deneysel ek açıklaması tarafından sağlanana benzer şekilde, deneysel API kullanılmadığında Java kodunun doğru şekilde lint hataları üretmesi sağlandı.- Artık Android Gradle Plugin 3.6'da çıkış için
additionalTestOutputDir
araçları bağımsız değişkeninin kullanımını doğru bir şekilde algılayarak AGP'nin veri kopyasını ne zaman işleyeceğini biliyor. -1
öğesini doğru şekilde yazdırmak için JSON'daki algılanmayan saat frekansı düzeltildi (b/141945670).
Sürüm 1.0.0-alpha06
18 Eylül 2019
androidx.benchmark:benchmark-common:1.0.0-alpha06
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06
ve androidx.benchmark:benchmark-junit4:1.0.0-alpha06
yayınlandı. Sürüm 1.0.0-alpha06 bu kayıtları içerir.
Yeni özellikler
- Test çalıştırıcı için eski paketin yanlış kullanılıp kullanılmadığına dair bir kontrol eklendi. Bu sayede artık daha faydalı bir hata mesajı sağlandı.
API değişiklikleri
ExperimentalAnnotationReport
deneysel ek açıklaması artık doğru şekilde herkese açık. Deneysel BenchmarkState#report API'nin kullanımı için artık bu ek açıklama gerekir
Sürüm 1.0.0-alpha05
5 Eylül 2019
androidx.benchmark:benchmark-common:1.0.0-alpha05
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05
ve androidx.benchmark:benchmark-junit4:1.0.0-alpha05
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
API değişiklikleri
BenchmarkState.reportData
API artık deneysel olarak işaretlendi
Hata düzeltmeleri
cut
veyaexpr
kabuk yardımcı programları eksik olan cihazlarda başarısız olan saat kilidi komut dosyası için düzeltme yapıldı../gradlew lockClocks
göreviyle ilgili, su yardımcı programının-c
işaretini desteklemeyen eski bir sürümüne sahip rootlanmış cihazlarda takılı kalması sorunu giderildi.
Sürüm 1.0.0-alpha04
7 Ağustos 2019
androidx.benchmark:benchmark-common:1.0.0-alpha04
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04
ve androidx.benchmark:benchmark-junit4:1.0.0-alpha04
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
Karşılaştırma kitaplığının Gradle olmadan hem farklı derleme sistemleriyle (ör. Bazel veya Buck) hem de CI'da çalışırken nasıl kullanılacağına dair yeni dokümanlar da eklendi. Daha fazla bilgi için Gradle olmadan karşılaştırmalar oluşturma ve Sürekli Entegrasyon'da karşılaştırmaları çalıştırma bölümlerine bakın.
Yeni özellikler
- Gradle eklentisi
- Artık test kapsamını otomatik olarak devre dışı bırakır ve
AndroidBenchmarkRunner
değerini varsayılan olarak ayarlar (b/138374050) - Karşılaştırmalar çalıştırırken ve AGP 3.6+ kullanırken yeni AGP tabanlı veri kopyalama desteği eklendi
- Artık test kapsamını otomatik olarak devre dışı bırakır ve
- JSON biçimi eklemeleri
- Çıkış toplam karşılaştırma testi çalışma süresi (b/133147694)
- Ad dizesi kullanan
@Parameterized
karşılaştırmaları (ör.@Parameters(name = "size={0},depth={1}")
) artık JSON çıktısında (b/132578772) karşılaştırma başına parametre adları ve değerleri oluşturuyor.
- Prova modu (b/138785848)
- Ölçümleri yakalamadan hataları/kilitlenmeleri kontrol etmek amacıyla her karşılaştırma döngüsünün yalnızca bir kez çalıştırılması için "prova" modu eklendi. Örneğin, ön gönderimde karşılaştırmaları hızlı bir şekilde çalıştırarak bozuk olup olmadıklarını kontrol etmek için bu özellik yararlı olabilir.
API değişiklikleri
- Modül yapısı değişti, kitaplık bölündü (b/138451391)
benchmark:benchmark-junit4
, JUnit bağımlılığı olan sınıflar içeriyor:AndroidBenchmarkRunner
veBenchmarkRule
(her ikisi deandroidx.benchmark.junit4
paketine taşınmış)benchmark:benchmark-common
, BenchmarkState API'si dahil olmak üzere mantığın geri kalanını içerir- Bu ayrım, kitaplığın gelecekte JUnit4 API'leri olmadan karşılaştırmayı desteklemesini sağlayacaktır
- Yapılandırma uyarıları artık hata olarak değerlendiriliyor ve testin çökmesine neden oluyor (b/137653596)
- Bu, özellikle CI'de doğru ölçümleri daha da teşvik etmek için yapılır
- Bu hatalar, bir araç bağımsız değişkeniyle tekrar uyarılara indirgenebilir. Örneğin:
-e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"
Hata düzeltmeleri
- Q cihazlarda harici depolama alanına yazarken oluşan hatalar, sorunun nasıl çözüleceğine ilişkin önerilerle birlikte daha açıklayıcı mesajlar sağlar
- Ekranlar, karşılaştırma çalıştırmaları sırasında otomatik olarak açılır, ekran kapalıyken hata verir
Harici katkılar
- JSON çıkışıyla ilgili iyileştirmelere ve ekran kapatma sorunlarının düzeltilmesine katkıda bulunduğu için Sergey Zakharov'a teşekkür ederiz.
Sürüm 1.0.0-alpha03
2 Temmuz 2019
androidx.benchmark:benchmark:1.0.0-alpha03
ve androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
Yeni özellikler
- Tam JSON raporunda, karşılaştırmaya göre termal kısıtlamadan dolayı uyku süresini açığa çıkarın
Hata düzeltmeleri
- Android eklentileri ve Android engellemesinden sonra Gradle eklentisinin uygulanmasına gerek kalmaz
- Kapsamlı depolamayı kullanan Android 10 cihazlarda karşılaştırma raporları için destek eklendi
Sürüm 1.0.0-alpha02
6 Haziran 2019
androidx.benchmark:1.0.0-alpha02
ve
androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02
yayınlandı. Bu sürümdeki taahhütleri burada bulabilirsiniz.
JSON şemasını API olarak değerlendirdiğimizi unutmayın. Diğer API'lerle aynı kararlılık kısıtlamalarını uygulamayı planlıyoruz: Beta sürümünde bir kez kararlı (çok nadir istisnalar dışında), son sürümde ise yalnızca küçük sürümlerdeki eklemeler ve ana sürümlerdeki değişiklikler/kaldırmalar olacak şekilde sabittir.
API değişiklikleri
JSON şeması gözden geçirildi. JSON şemasında yapılacak diğer değişiklikler muhtemelen eklemelerle sınırlı olacaktır:
- Sonuç nesnesi yapısı, gelecekte ek metrik gruplarını destekleyecek şekilde yeniden düzenlendi (b/132713021)
- Üst düzey nesneye cihaz, derleme bilgisi ve saatlerin kilitli olup olmadığı gibi test çalıştırma bağlam bilgileri eklendi (b/132711920)
- Zaman metriği adlarının adlarında artık "ns" ifadesi bulunmaktadır (b/132714527)
- Bildirilen metrik başına eklenen ek istatistikler (maksimum, ortanca değer, minimum) ve kaldırılan basitleştirilmiş "nano" özet istatistiği (b/132713851)
XML çıkışı kaldırıldı (b/132714414)
Termal kısıtlama algılama,
BenchmarkState.reportData
API'den kaldırıldı (b/132887006)
Hata düzeltmeleri
./gradlew lockClocks
uygulamasının son işletim sistemindeki bazı cihazlarda takılmaması sorunu düzeltildi (b/133424037)- Emülatör için kısıtlama algılama devre dışı bırakıldı (b/132880807)
Sürüm 1.0.0-alpha01
7 Mayıs 2019
androidx.benchmark:benchmark:1.0.0-alpha01
yayınlandı. Bu sürümde yer alan kaydetme işlemlerine buradan ulaşabilirsiniz.