Karşılaştırma
Son Güncelleme | Kararlı Sürüm | Yayın Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
21 Ağustos 2024 | 1.3.0 | - | - | - |
Bağımlılıkları bildirme
Karşılaştırma'ya bağımlılık eklemek için Google Maven deposunu akılda kalıcı bir yolunu sunar. Okunanlar Daha fazlası için Google'ın Maven deposu ekleyebilirsiniz.
Makrobenchmark
Macrobenchmark'ı kullanmak için
projenizde yer alan aşağıdaki bağımlılıkları build.gradle
dosyanıza
sizin
macrobenchmark modülü:
Eski
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.3.0" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.3.0") }
Mikro Karşılaştırma
Mikrobenchmark'ı kullanmak için
projenizde yer alan aşağıdaki bağımlılıkları build.gradle
dosyanıza
sizin
microbenchmark modülü:
Eski
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.3.0" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.3.0") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Microbenchmark kitaplığı, microbenchmark modülünizle birlikte kullanabileceğiniz bir Gradle eklentisi de sunar.
Bu eklenti, modül için derleme yapılandırması varsayılanlarını ayarlar,
karşılaştırma çıkış kopyasını ana makineye kopyalama,
ve
./gradlew lockClocks
görev.
Eklentiyi kullanmak için üst düzey sitenizin "eklentiler" bloğuna aşağıdaki satırı ekleyin
build.gradle
dosyası:
Eski
plugins { id 'androidx.benchmark' version '1.3.0' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.3.0" apply false }
Ardından, eklentiyi karşılaştırma modülünüzün build.gradle
dosyasına uygulayın.
Eski
plugins { id 'androidx.benchmark' }
Kotlin
plugins { id("androidx.benchmark") }
Geri bildirim
Geri bildiriminiz Jetpack'i iyileştirmemize yardımcı olacaktır. Yeni sorunlarla karşılaşırsanız veya fikir edinebilirsiniz. Daha fazla bilgi için lütfen mevcut sorunlar tıklayın. Oyunuzu mevcut bir soruna eklemek için yıldız düğmesini tıklayın.
Sorun İzleyici dokümanlarına bakın konulu videomuzu izleyin.
Sürüm 1.3
Sürüm 1.3.0
21 Ağustos 2024
androidx.benchmark:benchmark-*:1.3.0
yayınlandı. Sürüm 1.3.0 bu taahhütleri içerir.
1.2.0'dan bu yana mikrobenchmark değişiklikleri
- Çoğu cihazda çalıştırıldığında, mikro karşılaştırmalarda yöntem izleme varsayılan olarak açıktır
- Yöntem izleme, ölçümlerden sonra ayrı bir aşama olarak çalışır
- Bazı platformlar ve ART sürümlerinde yöntem izleme, daha sonraki ölçüm aşamalarını etkiler. Bu sürümlerde, yöntem izleme varsayılan olarak kapalıdır ve Studio çıkışına bir uyarı yazdırılır.
- Ana iş parçacığı karşılaştırmaları ve ANR'ler
- Çok saniye boyunca çalıştırıldığında ANR'leri önlemek amacıyla kullanıcı arayüzü ileti dizisi karşılaştırmaları (ör. Oluşturma/Görüntüleme kullanıcı arayüzleriyle etkileşimde bulunanlar) için
measureRepeatedOnMainThread
eklendi. - ANR'den kaçınma son tarihini aşması bekleniyorsa yöntem izleri atlanır. Bu davranışı devre dışı bırakmak için
androidx.benchmark.profiling.skipWhenDurationRisksAnr
politikasını false (yanlış) olarak ayarlayın (CI çalıştırmaları için önerilmez).
- Çok saniye boyunca çalıştırıldığında ANR'leri önlemek amacıyla kullanıcı arayüzü ileti dizisi karşılaştırmaları (ör. Oluşturma/Görüntüleme kullanıcı arayüzleriyle etkileşimde bulunanlar) için
- Küçültme
- Küçültme etkinken mikro karşılaştırmayı iyileştirmek için yerleştirilmiş uzman koruma kuralları
- Kitaplık modülündeki küçültme/R8, AGP 8.3 gerektirir ve
build.gradle
üzerindeandroid.buildTypes.release.androidTest.enableMinification
üzerinden etkinleştirilebilir - Geçersiz kodların kaldırılmasını önlemek için deneysel
BlackHole.consume()
API'si eklendi (If6812, b/286091643)
- Metrikler
- Deneysel CPU etkinliği sayacı özelliği (platformun çoğu sürümünde root erişimi gerektiren
perf_event_open
metrikleri),InstrumentationArgument
androidx.benchmark.cpuEventCounter.enable
(true
olarak ayarlanabilir) veandroidx.benchmark.cpuEventCounter.events
üzerinden erişim (ör. alıcı (Instructions,CpuCycles
). Bu, bazı kullanıcı hata ayıklama emülatörlerinde desteklenmelidir ancak
- Deneysel CPU etkinliği sayacı özelliği (platformun çoğu sürümünde root erişimi gerektiren
1.2.0'dan bu yana MACRObenchmark değişiklikleri
- Makro karşılaştırmalar için yöntem izleme revizyonu.
- Artık yöntem izleri
measureBlock
süresini kapsamaktadır ve süreç birden fazla kez başlarsa birden fazla oturumu yakalayabilir. - Daha önce, yöntem izleme yalnızca
StartupMode.COLD
karşılaştırma için çalışıyordu vemeasureBlocks
için hedef süreci yeniden başlatmayan hiçbir şey kaydetmedi - Yavaş cihazlarda bile yöntem izlerinin tam olarak yakalanması ve geçerli olması için makro karşılaştırmada yöntem izlerinin boşaltılması düzeltildi. (I6349a, b/329904950)
- Artık yöntem izleri
CompilationMode.Partial(warmup=N)
ölçümlerinin daha doğru olması için, işlem sonlandırıldığında herwarmUp
yinelemesi sırasında ART profilini doğru şekilde dökümü alın. (I17923)- Gölgelendirici yayın hatası mesajı
- Gölgelendirici yayın hatası mesajına hata ayıklama önerileri eklendi
ProfileInstaller
1.3 olmadan uygulamalar karşılaştırılırken geçici çözüm kilitlenmelerine yönelik olarak 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 profil yükleyici 1.3 sürümünü kullanmayan uygulamalar karşılaştırılırken (StartupMode.Cold
lansmanlarında yapılanlar da dahil olmak üzere) tüm gölgelendirici atlamalarını atlamak için kullanılabilir.androidx.benchmark.dropShaders.throwOnFailure=true/false
: Gölgelendiricileri bırakmaya çalışırken karşılaşılan hataları telafi etmek için kullanılabilir (örneğin, Profileloader 1.3 (I4f573) olmadan uygulamaları karşılaştırırken)
- Tamamen özelleştirilmiş Perfetto iz kaydı için özel bir
PerfettoConfig
alan deneyselMacrobenchmarkRule#measureRepeated
varyantı eklendi. Yanlış yapılandırılmış yapılandırmaların, yerleşik Metrik sınıflarının başarısız olmasına yol açabileceğini unutmayın. (Idfd3d, b/309841164, b/304038384) - Paraziti azaltmak için Macrobenchmark çalıştırmadan önce arka plan dexopt işlerini iptal edin. (I989ed)
- Macrobenchmark artık hedef uygulamanın bir ART profilini temizlemesi için 1 saniye (daha önce 500 ms bekliyordu) bekliyor. (I85a50, b/316082056)
- TraceSectionMetric revizyonu
- Not: Aşağıdaki
TraceSectionMetric
değişiklikleri CI kullanımındaki çıkışları etkileyebilir, süreksizliklere neden olabilir veya ayrıştırmayı bozabilir - Bu metriğin çoğu tekrarlanan etkinlikler için olduğundan ve öncelikle bu gibi durumlarda verileri siler. Bu nedenle, toplam artık varsayılan değerdir
- Daha fazla kullanılabilir mod ile daha özelleştirilebilir olacak şekilde değiştirildi
- Mod adları artık metrik çıkış adına yerleştirilmiş (Studio ve JSON'de)
- Artık
Trace.{begin|end}AsyncSection
kullanılarak oluşturulan dilimleri destekliyor.
- Not: Aşağıdaki
- Metrikler
- Güç -
PowerMetric.deviceSupportsHighPrecisionTracking
,PowerMetric.deviceBatteryHasMinimumCharge()
vePowerMetric.deviceSupportsPowerEnergy()
özellikleri eklendi Metric.getResult
, iade türüyle eşleşecek şekildegetMeasurements
olarak yeniden adlandırıldı- Tüm başlatma algılama hatalarına log.w / istisna etiketleri eklendi. Bu, mevcut davranışı değiştirmez (dolayısıyla bazı hatalar ortaya çıkar, bazılarıysa başlatmayı sessiz bir şekilde algılayamaz). Yalnızca daha anlaşılır hale gelir. Genellikle
Log.w()
başlangıç metriklerini raporlayıp raporlamayanlar, çerçeve dışı etkinliklerin eksik olduğu etkinliklerdir. Başlatma algılandığında, kare zamanlama bilgileri (UI/RT dilimlerinden) hariç olmak üzere istisnalar dikkate alınır. (Id240f, b/329145809) - Üretilen kare sayısının değişmesi (yeni animasyonlar eklendi, geçersiz kılma sorunları düzeltildi) nedeniyle ölçümlerin değiştiği senaryoların keşfedilmesine yardımcı olmak için
FrameTimingMetric
ürününeframeCount
ölçümü eklendi. (I1e5aa) - Dokümanlarda sunulduğunda izleme için tercih edilen metriğin
frameOverrunMs
olduğu ve bunun nedeni netleştirildi. (I18749, b/329478323) - İzin başındaki ve sonundaki sonlandırılmayan karelerin birlikte eşlenmesine neden olan sorun düzeltildi. Bu durum hatalı şekilde tek bir çok uzun kare olarak rapor ediliyor. (I39353, b/322232828)
- Çerçeveler 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ını çıkarın. (I956b9) FrameTimingMetric
ürününün, özellikle belirli OEM cihazlarda çerçeve kimliğinin ayrıştırılamamasıyla ilgili kilitlenme düzeltildi. (Ia24bc, b/303823815, b/306235276)FrameMetrics
hizmetindeki kontrollerin güvenlik düzeyi gevşetildi ve hata mesajlarına daha fazla ayrıntı eklendi. (Iadede)
- Güç -
1.2.0'dan bu yana temel profil yakalama / gradle eklentisi değişiklikleri
- Önerilen maksimum AGP sürümü 9.0.0-alpha01'e yükseltildi.
mergeArtProfile
vemergeStartupProfile
görevlerinin her zaman temel profil oluşturmak için beklediğinden emin olun. (I623d6, b/343086054)- Başarıyla bir temel profil oluşturmak, nelerin değiştiğine dair bir özet sunar (I824c8, b/269484510)
- Uyarıları devre dışı bırakmak için DSL eklendi (Ic4deb, b/331237001)
automaticGenerationDuringBuild
kapalıyken karşılaştırmaların oluşturulan referans profilleri kullanmasını sağlamak için sorunları giderin (Ic144f, b/333024280)nonMinified
veya karşılaştırma derleme türünü özelleştirirken referans profil oluşturma ve karşılaştırmayı etkinleştirmek içinBaselineProfile
gradle eklentisi özelliği geçersiz kılma sorunlarını düzeltin. (Ib8f05, b/324837887)- AGP 8.3.0-alfa15 sürümünden önce AAR'ye kitaplık referans profillerinin dahil edilmesiyle ilgili düzeltme uygulandı. (I1d2af, b/313992099)
- Oluşturma görevinin sonundaki referans değer ve başlangıç profili çıkış URL'si düzeltildi. (I802e5, b/313976958)
1.2.0'dan bu yana diğer önemli değişiklikler
- İz yakalama
- Perfetto başlatılırken hatadan günlüğe kaydedilen uyarıya azaltılmış ExitCODE 2 hatası
- Karşılaştırmalarda AIDL izlemeyi varsayılan olarak etkinleştir(API 28 gerekir) (Ia0af2, b/341852305)
- Karşılaştırmalarda porter etiket izlemeyi varsayılan olarak etkinleştirin. Bu, örneğin uyanık kalma kilidi izleme noktalarını yakalar. (Icfe44, b/286551983)
- Yavaş cihazlarda izlemeyi başlatırken kilitlenmeleri önlemek için iz yakalama başlangıç zaman aşımı artırıldı (I98841, b/329145808)
- JSON, textproto ve proto ikili program (kodu çözmez) varyantlarına sahip, herkese açık API
PerfettoTraceProcessor.Session.queryMetrics
API'leri eklendi. Bunlar,TraceProcessor
ürününde yerleşik olarak bulunan metrikleri sorgulamanıza olanak tanır (I54d7f, b/304038382) - İz başlangıcında eksik veri riskini azaltmak için Perfetto iz kaydında engellemeyi başlatmayı etkinleştirin. Yalnızca API 33 ve sonraki sürümlerde desteklenir. (Ie6e41, b/310760059)
- JSON çıkışı
- Karşılaştırma bağlamında JSON çıkışına ek bilgiler eklendi:
context.artMainlineVersion
- Resim ana hat modülünün tam sayı sürümü (cihazda mevcutsa-1
)context.build.id
- Eşittir android.os.Build.IDcontext.build.version.codename
- Eşittir: android.os.Build.VERSION.CODENAMEcontext.build.version.abbreviatedCodename
- yayın öncesi kod adının ilk harfine (sürüm derlemeleri dahil) karşılık gelir (Ie5020)
- Profil oluşturma izlemelerinde (ör. Perfetto, Yöntem izleri) daha kolay araç kurmak için JSON çıkışına
profilerOutput
listesi eklendi (I05ddd, b/332604449) - Karşılaştırma modüllerinde Android Test Orchestrator kullanıldığında bir uyarı eklendi. Bu durum, modül başına çıkış JSON dosyalarının tekrar tekrar üzerine yazılmasına neden olacaktır. (Ia1af6, b/286899049)
- Dosyaları yazarken veya sonradan işleme koyarken net olmayan kilitlenmeleri önlemek için dosya adları 200 karakterden uzun olduğunda silin. (I4a5ab)
- Karşılaştırma bağlamında JSON çıkışına ek bilgiler eklendi:
Sürüm 1.3.0-rc01
7 Ağustos 2024
androidx.benchmark:benchmark-*:1.3.0-rc01
yayınlandı. Sürüm 1.3.0-rc01 bu kayıtları içerir.
Hata Düzeltmeleri
- Talimat dışı etkinlikler için bozuk değerler oluşturan
androidx.benchmark.cpuEventCounter
sorununu düzeltin (I7386a, b/286306579) - Metrik öncelik sırasına uymak ve düşük öncelikli metrik duraklatma/devam ettirme işleminin yüksek öncelikli metrik sonuçları üzerindeki etkisini önemli ölçüde azaltmak için
resumeTiming
/runWithTimingDisabled
sorunlarını düzeltin. Örneğin,cpuEventCounter.enable
araç bağımsız değişkeni aracılığıyla CPU perf sayaçları kullanılıyorsa duraklatma/devam ettirme gerçekleştiğinde süreN'ler artık önemli ölçüde azalmaz. (I39c2e, b/286306579, b/307445225) - Yığın örnekleme dönüşümü ana iş parçacığının dışına taşınarak
measureRepeatedOnMainThread
ürününün ana iş parçacığı sabit zaman aşımına uğramasına neden olma olasılığı azaldı. (I487a8, b/342237318) - Bu durum, AGP 7.3 veya sonraki bir sürümle R8 kullanılırken (ör. R8 sürüm 3.3) ve AGP 8.1 veya sonraki sürümler kullanılırken tüm derlemeler (ör. D8 sürümü 8.1) için API modellemesi aracılığıyla otomatik olarak gerçekleştirildiğinden, yeni platform API'lerine erişimin manuel olarak özetlenmesi kaldırıldı. AGP kullanmayan müşterilerin D8 sürümüne 8.1 veya daha yeni bir sürüme geçmeleri önerilir. Daha fazla bilgi için bu makaleyi inceleyin. (I9496c, b/345472586)
- Paket adını instr arg olarak göndermek için agp sürüm kontrolü eklendi. AGP 8.4.0'dan önceki sürümlerde hedef uygulama paketi adı, araç bağımsız değişkenleri aracılığıyla araç uygulamasına gönderilemez. (0c72a3f)
Sürüm 1.3.0-beta02
10 Temmuz 2024
androidx.benchmark:benchmark-*:1.3.0-beta02
yayınlandı. Sürüm 1.3.0-beta02 bu taahhütleri içerir.
Hata Düzeltmeleri
- Perfetto'yu başlatırken uyarı günlüğe kaydetmek için çıkışCODE
2
öğesini düzgün bir şekilde ele alın ancak devam edin.
Sürüm 1.3.0-beta01
12 Haziran 2024
androidx.benchmark:benchmark-*:1.3.0-beta01
yayınlandı. Sürüm 1.3.0-beta01 bu taahhütleri içerir.
API Değişiklikleri
- Tutarlılık için
MethodTracing.affectsMeasurementOnThisDevice
,AFFECTS_MEASUREMENT_ON_THIS_DEVICE
olarak yeniden adlandırıldı. (I1bdfa) - Mikro karşılaştırmalarda geçersiz kodların ortadan kaldırılmasını önlemek için deneysel
BlackHole.consume()
API'si eklendi. (If6812, b/286091643) - Mikrobenchmark, yöntem izlemenin ölçümleri etkilemesini önlemek için artık doğru şekilde hata verecek. Bu durum, yöntem izlemenin zorlandığı (araç bağımsız değişkenleri veya
MicrobenchmarkConfig
aracılığıyla) belirli cihazlarda ve yöntem izlemeden sonra ölçüm yapılmaya çalışıldığında ortaya çıkar. Etkilenen cihazlar bu parazitten etkilenen API 26-30 veya belirli ART ana hat modülü sürümlerini çalıştırıyordur ve çalışma zamanındaProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice
aracılığıyla tespit edilebilir. (Iafb92, b/303660864)
Hata Düzeltmeleri
- 9.0.0-alfa01'e yükseltilmiş maks. agp sürümü önerilir. (I5bbb0)
- Karşılaştırma bağlamına derleme modu eklendi (If5612, b/325512900)
- AIDL izlemeyi varsayılan olarak etkinleştir (API 28 gerektirir) (Ia0af2, b/341852305)
- Karşılaştırma bağlamında JSON çıkışına ek bilgiler eklendi:
context.artMainlineVersion
- Resim ana hat modülünün tam sayı sürümü (cihazda mevcutsa -1)context.build.id
- Eşittirandroid.os.Build.ID
context.build.version.codename
- Eşittirandroid.os.Build.VERSION.CODENAME
context.build.version.abbreviatedCodename
- yayın öncesi kod adının ilk harfine karşılık gelir (sürüm derlemelerinde bile) (Ie5020)
androidx.benchmark.profiling.sampleDurationSeconds
(Ib1d53) şartlarına uygun şekildeStackSampling
hatasını düzeltir- Makro->yaygın bağımlılığı
api()
olarak değiştirin. Böylece kullanımı daha kolay olur. Ör.PerfettoTrace
vePerfettoConfig
. (Icdae3, b/341851833) mergeArtProfile
vemergeStartupProfile
görevlerinin her zaman temel profil oluşturmak için beklediğinden emin olun. (I623d6, b/343086054)- Varyantın etkinleştirilip etkinleştirilmeyeceğine karar verirken varyant etkinleştirme durumunu dikkate alın. (I5d19e, b/343249144)
- Perfetto iz işlemcisi için varsayılan başlatma zaman aşımı artırıldı. (I87e8c, b/329145808)
Sürüm 1.3.0-alpha05
14 Mayıs 2024
androidx.benchmark:benchmark-*:1.3.0-alpha05
yayınlandı. Sürüm 1.3.0-alpha05 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Makrobench metriği, tüm iterasyonlar için sıfır değeri döndürdüğünde daha açık bir istisna yazın (Iab58f, b/314931695)
- İşleyici kuralları desteği ve gözlemlenen diğer uyarılar / hatalar dahil olmak üzere microbench ProGuard kurallarına eklenen ek geçici çözüm kuralları. (I14d8f, b/329126308, b/339085669)
- Yöntem izleme, Macrobenchmark sırasında ayrı bir aşama olarak çalışır ve artık ölçümleri etkilemez. (If9a50, b/285912360, b/336588271)
- Gölgelendirici yayın hatası mesajına ek hata ayıklama önerileri eklendi. (I5efa6, b/325502725)
Sürüm 1.3.0-alpha04
1 Mayıs 2024
androidx.benchmark:benchmark-*:1.3.0-alpha04
yayınlandı. Sürüm 1.3.0-alpha04 bu kaydetmeleri içerir.
API Değişiklikleri
- Tamamen özelleştirilmiş Perfetto iz kaydı için özel bir
PerfettoConfig
alan deneyselMacrobenchmarkRule#measureRepeated
varyantı eklendi. Yanlış yapılandırılmış yapılandırmaların, yerleşik Metrik sınıflarının başarısız olmasına yol açabileceğini unutmayın. (Idfd3d, b/309841164, b/304038384) PowerMetric.deviceSupportsPowerEnergy
öğesinin adınıPowerMetric.deviceSupportsHighPrecisionTracking
olarak değiştirerek daha anlaşılır hale getirin (I5b82f)- Cihazın güç ölçümü özelliğine göre karşılaştırmaların değiştirilmesini veya atlanmasını sağlamak için
PowerMetric.deviceBatteryHasMinimumCharge()
vePowerMetric.deviceSupportsPowerEnergy()
eklendi. (I6a591, b/322121218)
Hata Düzeltmeleri
- Önceki temel profille karşılaştırma eklendi (I824c8, b/269484510)
- Uyarıları devre dışı bırakmak için DSL eklendi (Ic4deb, b/331237001)
- Karşılaştırma varyantları devre dışı bırakıldığında bilgi günlüğündeki istisna değiştirildi (I8a517, b/332772491)
- Kapsamı gerçek
measureBlock()
süresine odaklanan bir Macrobenchmark için yöntem izlerinin yakalanmasını kolaylaştırın. Daha önce, hedef süreç lansmanında başlıyor ve yalnızca baştan başlatma destekleniyordu (Iee85a, b/300651094) - Perfetto iz işlemcisi yavaş başlatılırken kilitlenmeden kaçının (I98841, b/329145808)
Sürüm 1.3.0-alpha03
17 Nisan 2024
androidx.benchmark:benchmark-*:1.3.0-alpha03
yayınlandı. Sürüm 1.3.0-alpha03 bu kaydetmeleri içerir.
Yeni Özellikler
- JSON, textproto ve proto ikili program (kodu çözmez) varyantlarına sahip, herkese açık API
PerfettoTraceProcessor.Session.queryMetrics
API'lerini ekler. Bunlar, TraceProcessor'da yerleşik olan metrikleri (I54d7f, b/304038382) sorgulamanıza olanak tanır. - Profil oluşturma izlerinde (ör. perfetto, yöntem izleri) daha kolay araç yapılabilmesi için JSON çıkışına
profilerOutput
eklendi. (I05ddd, b/332604449) - Karşılaştırma için Perfetto Config'e güç etiketi eklendi. Bu, örneğin uyanık kalma kilidi izleme noktalarını yakalar. (Icfe44, b/286551983)
- Beklenen süre ANR'ye neden olabilecekken yöntem izlerinin atlanmasını önlemek için
androidx.benchmark.profiling.skipWhenDurationRisksAnr
inst bağımsız değişkeni eklendi. CI çalıştırmalarında bundan kaçınılması önemle tavsiye edilir. androidx.benchmark.profiling.perfCompare.enable
adlı deneysel inst bağımsız değişkeni eklendi. Ölçüm ve profil oluşturma aşamaları arasında karşılaştırma zamanlaması çalıştırmak için bunu doğru olarak ayarlayın. Faydalıdır, ör. ve yöntem takibinin ek yükünün değerlendirilmesidir. (I61fb4, b/329146942)
API Değişiklikleri
- İfadeler (I71f7b) olduğunda, olası tüm kapsamı bozmadan gelecekteki genişletmeyi etkinleştirmek için
TraceSectionMetric.Mode
, mühürlü sınıf olarak değiştirildi (I71f7b) TraceSectionMetric.Mode.Average
ve.Count
eklendi ve bağımsız değişkenler yeniden sıralandı. Böylece, daha yaygın olan bağımsız değişken (mod) bağımsız değişken listesinde daha önce yer alıyordu. Böylece parametre adlarının belirtilmesi ihtiyacı azaltıldı. (Ibf0b0, b/315830077, b/322167531)Metric.getResult
, döndürme türüyle eşleşecek şekildegetMeasurements
olarak yeniden adlandırıldı (I42595)
Hata Düzeltmeleri
automaticGenerationDuringBuild
kapalıyken karşılaştırmaların oluşturulan referans profilleri kullanmasını sağlamak için sorunları giderin (Ic144f, b/333024280)nonMinified
veya karşılaştırma derleme türünü özelleştirirken referans profil oluşturma ve karşılaştırmayı etkinleştirmek içinBaselineProfile
gradle eklentisi özelliği geçersiz kılma sorunlarını düzeltin. (Ib8f05, b/324837887)- Yavaş cihazlarda bile yöntem izlerinin tam olarak yakalanması ve geçerli olması için makro karşılaştırmada yöntem izlerinin boşaltılması düzeltildi. (I6349a, b/329904950)
- İz başlangıcında eksik veri riskini azaltmak için Perfetto iz kaydında engellemeyi başlatmayı etkinleştirin. Yalnızca API 33 ve sonraki sürümlerde desteklenir. (Ie6e41, b/310760059)
- Karşılaştırma modüllerinde Android Test Orchestrator kullanıldığında bir uyarı eklendi. Bu durum, modül başına çıkış JSON dosyalarının tekrar tekrar üzerine yazılmasına neden olacaktır. (Ia1af6, b/286899049)
- Zorla "," Cihaz yerel ayarı yok sayılarak, Studio çıkışında tutarlılık için binlik basamak ayırıcı (virgül) (I3e921, b/313496656)
TraceSectionMetric
artıkTrace.{begin|end}AsyncSection
kullanılarak oluşturulan dilimleri destekliyor. (I91b32, b/300434906)- Tüm başlatma algılama hatalarına log.w / istisna etiketleri eklendi. Bu, mevcut davranışı değiştirmez (dolayısıyla bazı hatalar ortaya çıkar, bazılarıysa başlatmayı sessiz bir şekilde algılayamaz). Yalnızca daha anlaşılır hale gelir. Genellikle
Log.w()
başlangıç metriklerini raporlayıp raporlamayanlar, çerçeve dışı etkinliklerin eksik olduğu etkinliklerdir. Başlatma algılandığında, kare zamanlama bilgileri (UI/RT dilimlerinden) hariç olmak üzere istisnalar dikkate alınır. (Id240f, b/329145809) - Paraziti azaltmak için Macrobenchmark çalıştırmadan önce arka plan dexopt işlerini iptal edin. (I989ed)
- Üretilen kare sayısının değişmesi (yeni animasyonlar eklendi, geçersiz kılma sorunları düzeltildi) nedeniyle ölçümlerin değiştiği senaryoların keşfedilmesine yardımcı olmak için
FrameTimingMetric
ürününeframeCount
ölçümü eklendi. (I1e5aa) - Dokümanlarda sunulduğunda izleme için tercih edilen metriğin
frameOverrunMs
olduğu ve bunun nedeni netleştirildi. (I18749, b/329478323)
Sürüm 1.3.0-alpha02
20 Mart 2024
androidx.benchmark:benchmark-*:1.3.0-alpha02
yayınlandı. Sürüm 1.3.0-alpha02 bu kaydetmeleri içerir.
Yeni Özellikler
microbench'te yerleşik ProGuard kurallarıyla deneysel R8 desteği. Bu desteğin deneysel olduğunu ve kitaplık modülü testlerinin küçültülmesi için AGP 8.3 gerektirdiğini unutmayın. Karşılaştırma modülünüzde
build.gradle
R8 sadeleştirmesini/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ğlar. (I738a3, b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
Hata Düzeltmeleri
- İzleme yöntemi izleme uyarısını, microbench çı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ı. 1.3.0-alpha01 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
- Gereksiz "gereken" 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ştur kullanıcı arayüzlerine dokunanlar), özellikle CI'daki büyük süitler sırasında ANR'leri tetiklemesini önlemek için
BenchmarkRule.measureRepeatedOnMainThread
eklendi. (I5c86d) FrameTimingMetric
için deneysel bir alternatif uygulama olanFrameTimingGfxInfoMetric
eklendi. Bu alternatif uygulama, Perfetto izlerinden çıkarılan ölçümler yerine doğrudan platformdan gelen ölçümlerdir. (I457cb, b/322232828)- Bağımsız
warmUp
yinelemeleri sırasında ART profilini döküm ö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
- Metriğin anlamını netleştirmek için çıkışa mod adı eklendi
- Bu metriğin çoğu tekrarlanan etkinlikler için olduğundan varsayılan ayar toplam olarak değiştirildi Süreksizlikler oluşturabileceğinden CI kullanımındaki bu değişikliklere dikkat edin veya ayrıştırmayı geçiyor. (Ic1e82, b/301892382, b/301955938)
Hata Düzeltmeleri
- Belirtilen yönetilen cihaz olmadığında referans profil gradle eklentisinde iyileştirilmiş hata mesajı (Idea2b, b/313803289)
- AGP 8.3.0-alpha15 öncesi kitaplık referans profillerinin AAR'ye eklenmesiyle ilgili düzeltme (I1d2af, b/313992099)
- Oluşturma görevinin sonundaki referans ve başlangıç profili çıkış URL'si düzeltildi (I802e5, b/313976958)
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)]
(I8dc7d, b/323601788) sorununu düzeltmeye çalışmak için veri kaynağı zaman aşımları düzenlendiProfileInstaller
1.3 olmadan uygulamalar karşılaştırılırken geçici çözüm kilitlenmelerine yönelik olarak 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 profil yükleyici 1.3 sürümünü kullanmayan uygulamalar karşılaştırılırken (StartupMode.Cold
lansmanlarında yapılanlar da dahil olmak üzere) tüm gölgelendirici atlamalarını atlamak için kullanılabilir.androidx.benchmark.dropShaders.throwOnFailure=true/false
: Gölgelendiricileri bırakmaya çalışırken karşılaşılan hataları telafi etmek için kullanılabilir (örneğin, Profileloader 1.3 (I4f573) olmadan uygulamaları karşılaştırırken)
- Birkaç saniyeden uzun sürmesi bekleniyorsa kullanıcı arayüzü iş parçacıklarında yöntem izlemeyi atlayın ve fırlatma sırasında yöntem izlerini temizleyin. (I6e768)
- Dosyaları yazarken veya sonradan işleme koyarken net olmayan kilitlenmeleri önlemek için dosya adları 200 karakterden uzun olduğunda silin. (I4a5ab)
- İzin başındaki ve sonundaki sonlandırılmayan karelerin birlikte eşlenmesine neden olan sorun düzeltildi. Bu durum hatalı şekilde tek bir çok uzun kare olarak rapor ediliyor. (I39353, b/322232828)
- Kullanıcı derlemelerindeki ART profillerini temizlemek için API 30-33 üzerinde bir paketi yeniden yüklerken API 30+ üzerinde
--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 Arayüzü veya Başlatıcı gibi bir sistem uygulaması değilken uygulamaları kapatmak için
am force-stop
kullanın. (I5e028) - Macrobenchmark artık hedef uygulamanın bir ART profilini temizlemesi için
1 second
'i bekliyor (daha önce500 ms
bekliyordu). (I85a50, b/316082056) - Çerçeveler 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ını çıkarın. (I956b9) FrameTimingMetric
ürününün, özellikle belirli OEM cihazlarda çerçeve kimliğinin ayrıştırılamamasıyla ilgili kilitlenme düzeltildi. (Ia24bc, b/303823815, b/306235276)FrameMetrics
hizmetindeki 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.4
17 Nisan 2024
androidx.benchmark:benchmark-*:1.2.4
yayınlandı. Sürüm 1.2.4 bu taahhütleri içerir.
Hata Düzeltmeleri
- Karşılaştırma varyantlarında ayarlanmayan referans profil srcset sorununu düzeltir. Ayrıca, döngüsel bağımlılığa neden olan kitaplıklardaki
automaticGenerationDuringBuild
sorununu da düzeltir. (I28ab7, b/333024280) - Sistem Arayüzü veya Başlatıcı gibi bir sistem uygulaması değilken uygulamaları kapatmak için
am force-stop
kullanın. Bu, "$package paketinin baştan başlatmadan önce çalışmaması gerektiğini" belirtenStartupMode.COLD
karşılaştırmayı düzeltir tam olarak başarılı olamamasına yol açabilir. (I5e028)
Sürüm 1.2.3
24 Ocak 2024
androidx.benchmark:benchmark-*:1.2.3
yayınlandı. 1.2.3 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- AGP sürümü 8.3.0 veya üzeri olduğunda Baseline Profile Gradle eklentisindeki istisna kaldırıldı.
- AGP 8.3.0-alfa15 sürümünden önce AAR'ye kitaplık referans profillerinin dahil edilmesiyle ilgili düzeltme uygulandı.
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 kaydetmeleri içerir.
Temel Profiller
- Yürütme günlükleri, temel profil çıkış dosyasının 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ı. Sürüm 1.2.1 bu kaydetmeleri içerir.
Yeni Özellikler
- Kullanıcı, test varyantlarını devre dışı bıraktığında iyileştirilmiş hata mesajı (b/307478189)
- AS test çalıştırma entegrasyonunu desteklemek için eklenen mülkler (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 kaydetmeleri içerir.
1.1.0'dan bu yana önemli değişiklikler
Temel Profiller
- Yeni Temel Profil Gradle Eklentisi, referans profilleri yakalamayı ve test ve derleme iş akışınıza dahil etmeyi otomatikleştirir.
- Önceki deneysel
BaselineProfileRule.collectBaselineProfile
API'nin basitleştirilmiş ve basitleştirilmiş bir sürümü olanBaselineProfileRule.collect
artık kararlı çalışıyorpackageName
belirtin ve uygulamanızı kullanın
- Temel profil oluşturan kitaplıklar için artık kodda (
BaselineProfileRule.collect
bağımsız değişkeni) veya gradle eklentisinde oluşturulan kuralları filtreleyebilirsiniz - Düzeltmeler
- Android U+'da sabit referans profil koleksiyonu (Id1392, b/277645214)
Makrobenchmark
- Derleme
- Macrobenchmark artık her derleme için derleme durumunu doğru bir şekilde sıfırlıyor. Bunun için Android 14'ten önce APK'nın yeniden yüklenmesi gerekir. Bu nedenle, ölçülen durumun durumunu (kullanıcı girişi gibi) korumak istiyorsanız Android 14 ve sonraki sürümlerde karşılaştırma yapmanızı kesinlikle öneririz.
- Uygulama derlemesini ayrı olarak kontrol ederek ve
CompilationMode.Ignore()
ya da araçlar bağımsız değişkeni ile derlemeyi atlayarak da bu sorunu çözebilirsiniz
Araç Bağımsız Değişkenleri
- Doğrulamanın daha hızlı çalışması için (ör. karşılaştırma oluşturulurken veya gönderim öncesi)
androidx.benchmark.dryRunMode.enable
araç bağımsız değişkeni desteği (zaten mikrobenchmark'ta mevcuttur) androidx.benchmark.profiling.mode=StackSampling
veMethodTracing
için destek.- Çalışma zamanı filtreleme temel profili ile makrobenchmark kural testlerinin karşılaştırmasına izin vermek için
androidx.benchmark.enabledRules
eklendi - İzleme-perfetto ile izlemeyi etkinleştirmek için
androidx.benchmark.perfettoSdkTracing.enable
bağımsız değişkeni eklendi (ör. Yeniden beste izleme oluşturun.StartupMode.COLD
ile kullanıldığında, izleme kitaplığı yüklenip uygulama başlatılırken etkinleştirildiğinden zamanlamanın önemli ölçüde etkileneceğini unutmayın.
- Doğrulamanın daha hızlı çalışması için (ör. karşılaştırma oluşturulurken veya gönderim öncesi)
Gereksinimler
- Macrobenchmark'ta profil yakalama / sıfırlama ve gölgelendirici önbelleği temizlemenin etkinleştirilmesi için hedef uygulamada
ProfileInstaller
1.3.0 veya üzeri bir sürüm gerekiyor.
- Macrobenchmark'ta profil yakalama / sıfırlama ve gölgelendirici önbelleği temizlemenin etkinleştirilmesi için hedef uygulamada
Yeni Deneysel Metrik API'leri
- Uygulamanızdaki
trace("") {}
bloklarından basit zamanlamaları çıkarmaya olanak tanıyan deneyselTraceSectionMetric
veya PerfettoTraceProcessor
'nın tüm sorgu özelliğinden yararlanmak için TraceMetric özelliği eklendi. - Güç kullanım bilgilerini yakalamak için deneysel
PowerMetric
özelliği eklendi - Sayfa hatalarını saymak için deneysel
MemoryCountersMetric
özelliği eklendi - Sistem izlerinden (Perfetto izleri) metrikleri ayıklamak için dahili olarak kullanılan deneysel
PerfettoTraceProcessor
API eklendi
- Uygulamanızdaki
Düzeltmeler
- Birden fazla APK'dan (ör. uygulama paketinden) yüklenen bir uygulamadan profil yüklerken veya çıkarırken karşılaşılan kilitlenmeler düzeltildi.
FrameTimingMetric
ürününün, tutarsız çerçeve kimliklerine sahip kareleri yok sayması sorunu düzeltildi (genellikle API 31 ve sonraki sürümlerde dalgalar sırasındaki kareler) (I747d2, b/279088460)- İzlerdeki ayrıştırma hataları düzeltildi > 64MB (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 oluşan hatalar açıklandı
- Pilsiz cihazlarda pil seviyesi kontrolünü atla (mikro ve makro)
- Geçersiz çıkış dizinleri için daha net hatalar ve daha güvenli varsayılan ayarlarla iyileştirilmiş dosya çıkışı
- Gölgelendirici önbelleği düzenli olarak bırakılarak
StartupMode.COLD
kararlılığı iyileştirildi (MacrobenchmarkScope.dropShaderCache
aracılığıyla da gösterilir) 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şındı. Böylece bir test çalıştırmasında hem doğru zamanlama hem de profil oluşturma sonuçları gösterilebilir.
- 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 veya izleme noktalarını yakalamak için kullanılabilir (ancak ek yükü izlemeye dikkat edin). BenchmarkState
hizmetiniBenchmarkRule
öğesinden ayrı olarak (JUnit olmadan) kontrol etmek için deneysel API'ler eklendi- Perfetto izlerinin, karşılaştırma API'lerinden ayrı olarak özel yapılandırmayla 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üm, Android Studio karşılaştırma çıktısında baştaki boşluklar eksik.
- Android Studio karşılaştırma çıktısında uyarıların yazdırılamamasına neden olabilecek sorun düzeltildi.
- Android 13 (API 33) ve sonraki sürümlerde
SampledProfiling
kilitlenmesi düzeltildi. IsolationActivity
ve Perfetto izlemeyi atlayarakdryRunMode
performansı büyük ölçüde iyileştirildi (eski işletim sistemi 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ı. Sürüm 1.2.0-rc02 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Karşılaştırma dosyası çıkışının artık kesintiye uğramaması için düzeltme
BaselineProfile
Eklenti dosyası kopyalama. Dosyalar oluşturulup cihazdan kopyalandı ancak gradle eklentisi tarafından görülmeyecek şekilde yeniden adlandırıldı. (I8dbcc, b/303034735, b/296453339) - Makrobenchmark modülünden hedef uygulamaya ekleme yapılırken
tracing-perfetto
yükleme hata mesajları netleştirildi.
Sürüm 1.2.0-rc01
20 Eylül 2023
androidx.benchmark:benchmark-*:1.2.0-rc01
yayınlandı. Sürüm 1.2.0-rc01 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Perfetto SDK izlemesi, Karşılaştırma'da ilk kullanıma hazırlanamadığında artık bir istisna (çözüm talimatlarıyla birlikte) atılır. (I6c878, b/286228781)
- ART yöntemi izlemesi dönüştürülürken OOM kilitlenmesi düzeltildi -> perfetto biçimindedir. (I106bd, b/296905344)
- (Macrobenchmark) Studio test çıkışında bağlantı kurulduğunda yöntem izleme etiketi açıklandı ve yöntem izleme dosya adlarının cihazda/ana makinede benzersiz olması için düzeltme yapıldı. Böylece, birden fazla karşılaştırma çalıştırıldığında bunların üzerine yazılmayacak. (I08e65, b/285912360)
- Temel profili kaydederken cihazın uyanık olduğundan emin olur. (I503fc)
Sürüm 1.2.0-beta05
30 Ağustos 2023
androidx.benchmark:benchmark-*:1.2.0-beta05
yayınlandı. Sürüm 1.2.0-beta05 bu kaydetmeleri 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ı. Sürüm 1.2.0-beta04 bu kaydetmeleri içerir.
Yeni Özellikler
- Baseline Profile Gradle eklentisi artık Android Gradle Plugin 8.3'ü destekliyor. (aosp/2715214)
Hata Düzeltmeleri
- Çıkış dosyası adlarını daha fazla temizleyerek ve "=" işaretinden kaçınarak dosyaları yazma / taşıma ve çekme (özellikle parametreleştirilmiş testlerde bulunanlar) hatalarını düzeltin ve ":" çıkış dosyaları adları da kullanabilirsiniz. (I759d8)
Sürüm 1.2.0-beta03
9 Ağustos 2023
androidx.benchmark:benchmark-*:1.2.0-beta03
yayınlandı. Sürüm 1.2.0-beta03 bu kaydetmeleri içerir.
API Değişiklikleri
TraceSectionMetric
filtresine varsayılan olarak 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 edecek. (I7cc00) - Karşılaştırma kitaplığının dahili izleme noktaları (mikrobenchmark döngü/faz izleme dahil) artık Studio sistem izleme görüntüleyicide gösterilecek ve Perfetto'da doğru sürecin altına iç içe yerleştirilecektir. (I6b2e7, b/293510459)
- API 31 ve sonraki sürümlerde makrobenchmark NOT-PROFILEABLE hatası kaldırıldı. Ayrıca, mühendislik/userdebug rootlanmış cihazlarda profil oluşturma kontrolü atlandı. (I2abac, b/291722507)
- Dex Düzen Optimizasyonları kullanılırken başlangıç profili kuralları da artık temel profil kuralları olarak kabul edilmektedir. (aosp/2684246, b/293889189)
Sürüm 1.2.0-beta02
26 Temmuz 2023
androidx.benchmark:benchmark-*:1.2.0-beta02
yayınlandı. Sürüm 1.2.0-beta02 bu kaydetmeleri içerir.
API Değişiklikleri
- microbench özel metrikleri ve yapılandırması için deneysel API'ler (ör. profil aracı ve izleme) 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 yakın zamanda bu sorunu düzelttiğinden, emülatörün güncellenmesini öneren derleme sıfırlama hatasına ayrıntı eklendi. (I8c815, b/282191686)
implementation
bağımlılığı yerineandroidx.test.uiautomator:uiautomator:2.2.0
öğesiniapi
yapın. (I1981e)
Sürüm 1.2.0-beta01
18 Temmuz 2023
androidx.benchmark:benchmark-*:1.2.0-beta01
yayınlandı. Sürüm 1.2.0-beta01 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Studio'daki Karşılaştırma çıktısında bazen engellenen uyarıları ve Studio'da görünmeyen Karşılaştırma çıkışında bulunan boşluklarla ilgili geçici çözümü düzeltme (Ia61d0, b/227205461, b/286306579, b/285912360)
FrameTimingMetric
ile ilgili yorum düzeltildi. Alt metrikframeDurationCpuMs
olarak adlandırılmıştır. (Ib097f, b/288830934).
Sürüm 1.2.0-alpha16
21 Haziran 2023
androidx.benchmark:benchmark-*:1.2.0-alpha16
yayınlandı. Sürüm 1.2.0-alpha16 bu kaydetmeleri içerir.
API Değişiklikleri
BaselineProfileRule.collectBaselineProfile()
API,BaselineProfileRule.collect()
olarak yeniden adlandırıldı. (I4b665)
Hata Düzeltmeleri
androidx.benchmark.profiling.mode = MethodTracing
için Macrobenchmark desteği. (I7ad37, b/285912360)- Mikro karşılaştırma profili oluşturma işlemi ayrı bir aşamaya taşındı. Böylece bu profil, ölçümden sonra yerini almak yerine sırayla gerçekleştirilir.
MethodTracing
iz bölümleri de artık (varsa) yakalanan Perfetto izine dahil ediliyor. (I9f657, b/285014599) Mode.Sum
ileTraceSectionMetric
için sayı ölçümü ekleyin. (Ic121a, b/264398606)
Sürüm 1.2.0-alpha15
7 Haziran 2023
androidx.benchmark:benchmark-*:1.2.0-alpha15
yayınlandı. 1.2.0-alpha15 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- Bir 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 işlemini atlamak için özellik eklendi. Kullanım:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration
. (I37fda, b/283447020)
API Değişiklikleri
collectBaselineProfile
API her zaman istikrarlı referans profilleri oluşturur.collectStableBaselineProfile
API kaldırıldı. 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, eşdeğer bir varsayılan değerle, null olmayan bir bağımsız değişkenle değiştirildi. (I3816e)
Hata Düzeltmeleri
- Çalışma süresinin çoğu olduğundan performansı önemli ölçüde artırmak için
dryRunMode
ürünündeIsolationActivity
ve Perfetto izlemeyi devre dışı bırakın. (Ie4f7d) - Macrobenchmark'larda
androidx.benchmark.profiling.mode=StackSampling
veandroidx.benchmark.profiling.sampleFrequency
araç testi bağımsız değişkenlerini kullanarak çağrı yığını örnekleme desteği. (I1d13b, b/282188489) - Android U (API 34) ve emülatörlerde gölgelendirici bırakılırken oluşan kilitlenmeler düzeltildi. (I031ca, b/274314544)
Sürüm 1.2.0-alpha14
3 Mayıs 2023
androidx.benchmark:benchmark-*:1.2.0-alpha14
yayınlandı. 1.2.0-alpha14 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Tutarsız kare kimliklerine sahip kareleri yoksayarak
FrameTimingMetric
sorununu düzeltin. Bu durum, son platform sürümlerindeki (API 31+) bazı animasyonların,RenderThread
animasyon yapılırken (ör. bir dalga sırasında) birçok kareyi yoksaymasına neden olur. (I747d2, b/279088460) - 64 Mb'tan büyük izler için iz işlemci ayrıştırması düzeltildi. (Ief831, b/269949822)
pm dump-profiles
komutunun farklı çıkışı nedeniyle Android U'da referans profil oluşturma işleminin başarısız olması sorunu düzeltildi. (Id1392, b/277645214)- Dizeleri doğru şekilde karşılaştırmak için GPU saat kilitleme komut dosyasını düzeltin (I53e54, b/213935715)
Sürüm 1.2.0-alpha13
5 Nisan 2023
androidx.benchmark:benchmark-*:1.2.0-alpha13
yayınlandı. Sürüm 1.2.0-alpha13 bu kaydetmeleri içerir.
API Değişiklikleri
- Gelecek başlangıç profili özelliğini desteklemek için temel profil oluşturulurken profil türü parametresi eklendi (Ie20d7, b/275093123)
- Perfetto iz içeriğine dayalı tamamen özel metrikler tanımlamak için yeni deneysel
TraceMetric
API eklendi. (I4ce31, b/219851406) - Karşılaştırma sırasındaki sayfa hatası sayısını belirlemek için deneysel bir metrik ekleyin. (I48db0)
Sürüm 1.2.0-alpha12
22 Mart 2023
androidx.benchmark:benchmark-*:1.2.0-alpha12
yayınlandı. 1.2.0-alpha12 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- Yeni referans profil gradle eklentisi alfa sürümünde kullanıma sunulmuştur. Bu eklenti, referans profil oluşturmayı ve geliştirici iş akışını basitleştirmeyi kolaylaştırır.
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 önceUiAutomation
bağlantıları bazı cihazlarda güvenilir değildi. (I78e8c) - İzleme içeriğinin ayrıştırılmasını sağlamak 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-alpha11
8 Mart 2023
androidx.benchmark:benchmark-*:1.2.0-alpha11
yayınlandı. Sürüm 1.2.0-alpha11 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Birden fazla APK içeren uygulama paketinden profiller yeniden yüklenirken veya çıkarılırken
MacrobenchmarkRule
veBaselineProfileRule
kilitlenmeleri düzeltildi. (I0d8c8, b/270587281)
Sürüm 1.2.0-alpha10
22 Şubat 2023
androidx.benchmark:benchmark-*:1.2.0-alpha10
yayınlandı. 1.2.0-alpha10 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- Android 14 ve sonraki sürümlerde Macrobenchmark, yeni platform özelliği sayesinde derleme durumunu sıfırlamak için hedef uygulamaları artık yeniden yüklememektedir. Daha önce, rootlanmış bir cihaza sahip olmak veya her karşılaştırma çalıştırılmadan önce tüm uygulama durumlarının (ör. kullanıcı girişi) kaldırılmasıyla ilgilenmek gerekiyordu. (I9b08c, b/249143766)
Hata Düzeltmeleri
- Derlemenin atlanması nedeniyle artık boş profille kilitlenmemesi için
DryRunMode
sorununu düzeltin. Bunun yerine, tek bir yineleme çalıştırır ve bir öğenin yakalandığından emin olmak için profili ayıklar. (I2f05d, b/266403227) - Eski API düzeylerinde powerstats 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 kaydetmeleri içerir.
Hata Düzeltmeleri
- Tüm karşılaştırmaları / temel profil oluşturma özelliğini devre dışı bırakmak için
None
öğesiniandroidx.benchmark.enabledRules
araç bağımsız değişkenine iletme etkinleştirildi. (I3d7fd, b/258671856) - Uygulama modüllerinde (ör. kendi kendini ayarlayan olmayan test APK'ları)
PerfettoTrace
yakalamasını düzeltin (I12cfc) - Studio çıkışında sabit temel profil adb pull bağımsız değişkeni sırası (I958d1, b/261781624)
- Makrobenchmark çalıştırmaya çalışırken Arm emulator api 33 artık doğru şekilde tanınıyor ve uyarıyı doğru şekilde yazdırıyor. (69133b,b/262209591)
- Macrobenchmark'ta pili olmayan cihazlarda pil seviyesi kontrolünü atla (fe4114, b/232448937)
Sürüm 1.2.0-alpha08
7 Aralık 2022
androidx.benchmark:benchmark-*:1.2.0-alpha08
yayınlandı. 1.2.0-alpha08 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
- Test davranışını ve performansını incelemek için Perfetto izlerini (Sistem İzlemeleri olarak da bilinir) yakalamak amacıyla, deneme amaçlı yeni
PerfettoTrace.record {}
vePerfettoTraceRule
API'leri eklendi. (I3ba16) BaselineProfileRule
artık paket önekleri listesi yerine bir filtre koşulu kabul ediyor. Bu, teste filtreleme üzerinde tam kontrol sağlar. (I93240)- Temel profilin N yineleme için kararlı olmasını bekleyen deneysel bir API
BaselineProfileRule.collectStableBaselineProfile
ekleyin. (I923f3) BaselineProfileRule
kullanarak referans profilleri oluştururken çıkış dosyası adı öneki belirtme özelliğini ekleyin. (I7b59f, b/260318655)
Hata Düzeltmeleri
- Özellikle API 21 / 22'de çıkış dosyalarının sessizce yazılmasını/eklemesini önleyen dosya çıktısı yazma güvenliğini iyileştirin. (If8c44, b/227510293)
- Dosyayı oluşturmak ve doğru şekilde yerleştirmek için
simpleperf
iz çıkışını düzeltin. Bu işlem, bir dosyanın gradle tarafından başarısız bir şekilde çekilmesiyle ilgili sorunları da daha genel olarak düzeltir. (I12a1c, b/259424099) - Profil yükleyici çok eski olduğunda görüntülenen profil yükleyici hata mesajını iyileştirin. 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üncellemeniz istenir. Güncellemenin desteklenmediğini belirtmek isteriz. (Ia517f, b/253519888)
- Hata mesajında bulunan kabuk komutu hatalarını düzeltme
- Oluşturulan profil kurallarını, zaman içinde değiştikçe değişikliklerin sayısını en aza indirmek için otomatik olarak sıralayın (kaynak kontrolüne giriş profili kuralları kontrol ederken). (Ie2509)
- Android 13'ün (API 33) altındaki rootlanmamış derlemelerde
Expected no stderr from echo 3 > /proc/sys/vm/drop_caches
mesajıyla (I6c245, b/259508183) kilitlenme düzeltildi
Bilinen Sorunlar
- MacrobenchmarkScope.dropShaderCache()
, henüz yayınlanmamış profil yükleyici manifestinde yayın kaydının eksik olması nedeniyle kilitlenebilir. (I5c728, b/258619948) profileinstaller:1.3.0-alpha02
ürünündeki sorunu çözmek için aşağıdaki kodu uygulamanızın (karşılaştırmanızın değil) AndroidManifest.xml dosyasına 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ı. 1.2.0-alpha07 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
- Macrobenchmark'larda enerji ve güç ölçümü için
PowerMetric
API ekler. (Ife601, b/220183779) - Gölgelendirici önbelleğini bırakmak için
MacrobenchmarkScope.dropShaderCache()
düzeltildi. Gölgelendiriciler artık her iterasyonda tutarlı bir şekilde temizlendiğinden bu işlem,StartupMode.COLD
karşılaştırmada yaklaşık 20 ms'lik gürültüyü kaldırır. Daha önce, ısınma yinelemeleri kullanılarak yapılanPartial
derlemesi, gölgelendirici önbelleğe alma işleminin ısınma sırasında gerçekleşme olasılığı daha yüksek olduğundan, hatalı hızlı sayılar bildiriyordu. Bu düzeltme için rootlanmış bir cihaz veya hedef uygulamadaprofileinstaller:1.3.0-alpha02
kullanılması gerekir.ProfileInstaller
kitaplığının API değişiklikleri için lütfen ProfileYükleer 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)
eklendi. ÖrneğinTraceSectionMetric("inflate", Mode.Sum)
, bir makro karşılaştırma değerinde enflasyona harcanan toplam süre içininflateMs
metriğini raporlar. AyrıcaTraceSectionMetric
, hedef uygulamadaforceEnableAppTracing
kullanımıyla birlikteandroidx.tracing.Trace
ile birlikte çalıştığından daha düşük API düzeylerine döndüğünden API 29 gereksinimi de kaldırıldı. (Id7b68, b/231455742)
Hata Düzeltmeleri
- Tüm çıkışları/hataları doğrulayarak tüm dahili kabuk komutlarının güvenliği iyileştirildi. (I5984d, b/255402908, b/253094958)
- Temel profil
adb pull
komutunda cihazı belirtin. Böylece, birden fazla cihaz bağlandığında (bir emülatöre kadar) pull komutu kolayca kopyalanabilir (I6ac6c, b/223359380) - Makrobenchmark test apk'si, kendi kendini ayarlayan bir şekilde ayarlanmadıysa hata ekleyin. Bu hata, makro karşılaştırmanın hedef uygulama işlemi içinden yapılmasını engeller. makrobench, işlem sırasında uygulamayı derleyemez/kaldıramaz/başlatamaz veya kendi izinlerini kontrol edemez (I4279b)
measureRepeated()
öğesindeStartupMode.COLD
öğesinin,setupBlock
tarihinden sonra hedef işlemi sonlandırmamasına yol açan sorun düzeltildi. ArtıksetupBlock
uygulamayla etkileşim kurulduğunda uygulama işlemi çalışmaya devam etmez ve geçersiz bir baştan başlatma ölçümü yapılır. (I8ebb7)
Sürüm 1.2.0-alpha06
24 Ekim 2022
androidx.benchmark:benchmark-*:1.2.0-alpha06
yayınlandı. 1.2.0-alpha06 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
BaselineProfileRule
, artık Android 13'te (API 33) root erişimi gerektirmez ve artık deneysel değildir. (Ie0a7d, b/250083467, b/253094958)- Bu değişiklik, bir uygulamadaki profillerin rootlanmamış cihazlardaki diske nasıl aktarıldığını da düzeltir. Ancak hedef uygulamanın profil yükleyici bağımlılığının güncellenmesi gerekir.
- Rootlanmamış bir cihazda
BaselineProfileRule
veyaCompilationMode.Partial(warmupIterations)
kullanmak için hedef uygulamanızıandroidx.profileinstaller.profileinstaller:1.3.0-alpha01
kullanacak şekilde güncellemeniz de gerekir. Bu işlem, profilin derlenebilmesi/çıkarılabilmesi için diske doğru şekilde temizlenmesini sağlar.
Hata Düzeltmeleri
- API 33 ve sonraki sürümlerde
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ı. 1.2.0-alpha05 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Yakalanan karşılaştırmalı 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 gerektiriyor olarak listelemek içinFrameTimingMetric
politikasını düzeltin (I716dd, b/220702554)- İterasyonu
BaselineProfileRule
dilinde ayarlayın ve hedef paket yüklü değilse açıkça belirtin (MacrobenchmarkRule için zaten yapıldı). (Ic09a3, b/227991471)
Sürüm 1.2.0-alpha04
21 Eylül 2022
androidx.benchmark:benchmark-*:1.2.0-alpha04
yayınlandı. 1.2.0-alpha04 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
Daha hızlı yerel geliştirme ve uygulama otomasyonunu doğrulama (ör. gönderim öncesi) için makrobenchmark'a (zaten mikro düzeyde mevcuttur)
dryRunMode.enable
araç bağımsız değişkeni için destek ekleyin. Bu ayar, yinelemeleri 1 olarak geçersiz kılar, derlemeyi atlar, tüm yapılandırma hatalarını engeller 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
, ölçülen Etkinliklerin artıkMacrobenchmarkScope.startActivityAndWait()
aracılığıyla başlatılmasını gerektirmeyecek şekilde düzeltildi. Bu, metriğin ör. bildirimler,Context.startActivity()
, uygulama içi etkinliğe dayalı gezinme veya kabuk komutları. (Ia2de6, b/245414235)- Çerçeve algılamanın güvenlik düzeyini azaltarak
startActivityAndWait
ürününün emülatörlerde başlatmanın tamamlanmasını beklemeye çalışırken zaman aşımına uğradığı 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ı. 1.2.0-alpha03 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
BenchmarkState
özelliğini,BenchmarkRule
/JUnit4
biçimlerinden ayrı olarak bağımsız olarak kullanmak için 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ı. 1.2.0-alpha02 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
- Temel Profil oluşturma işlemi hariç olmak üzere, rootlanmış olsa bile
MacrobenchmarkScope.killProcess()
için varsayılan olarakam force stop
. 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şturma desteği. (I900b8, b/241214097)
- Rootlanmamış cihazlarda ODPM güç metriklerini kontrol etme 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 kaydetmeleri içerir.
Yeni Özellikler
- Araçların, Perfetto SDK izlemesini sunan bir uygulamada Perfetto SDK izlemeyi etkinleştirmesine olanak tanıyan yeni izleme-perfetto ortak bileşeni (I2cc7f)
Yalnızca karşılaştırmalara göre filtrelemeyi etkinleştirmek veya yalnızca temel profil oluşturmak için
androidx.benchmark.enabledRules
araç bağımsız değişkeni eklendi. "Macrobenchmark" veya "BaselineProfile"ı iletin. tek bir tür test çalıştırmanız gerekir, ör.BaselineProfiles
oluşturmak için kullanabilirsiniz. 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' } }
Alternatif olarak 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 güç görevlerini ölçmek 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şaltmasını sağlar. (I6a6cb)
MacrobenchmarkScope
içine 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ına olanak tanır. (I810c9)
- Önceden, desteklenmeyen bir cihazda çalıştırıldığında
UnsupportedOperationException
, karşılaştırmaya dahil ediliyordu. Artık UOE, yalnızca metrik desteklenmeyen cihazda (ör.PowerMetric.configure
) kullanıldığında gerçekleşiyor. (I5cf20, b/227229375) - Makro karşılaştırmalarda her sistem kategorisinde toplam güç ve enerjinin ölçülmesi için
TotalPowerMetric
veTotalEnergyMetric
eklendi. (I3b26b, b/224557371)
Hata Düzeltmeleri
- Rootlanmamış derlemelerde her bir makro karşılaştırma noktası arasında derlenen yöntemlerin doğru şekilde sıfırlanmamasına neden olan sorun düzeltildi. Bu durum maalesef her yinelemede apk'nin yeniden yüklenmesini gerektirir. Bu işlem, her bir makrobenchmark için uygulama verilerini temizler. (I31c74, b/230665435)
- API 21/22'de iz kaydı kilitlenmesini düzeltme (If7fd6, b/227509388, b/227510293, b/227512788)
- "Herhangi bir metrik okunamıyor" sorununu düzeltmek için etkinlik başlatma tamamlama algılamasının revizyonunu yapma başlangıç makro karşılaştırmalarında bir istisna oluşturur. (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ı. Sürüm 1.1.1 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Bazı Android 11 (API 30) ve sonraki sürümlere sahip cihazlarda oluşabilecek
android.system.ErrnoException: open failed: EACCES
sorununu düzeltir. Bu,1.2.0-alpha01
tarafından sunulan ideal bir çözümdür. (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 kaydetmeleri içerir.
- Bu sürüm,
androidx.benchmark:benchmark-*:1.1.0-rc03
sürümüyle aynı.
1.0.0'dan bu yana önemli değişiklikler
Başlangıç ve kaydırma gibi tüm uygulama etkileşimlerini ölçmenize olanak tanıyan Jetpack Macrobenchmarks desteği, izleri yakalama becerisi ve iz bölümlerini ölçün.
Temel Profiller için destek
- Temel profillerin etki düzeyini ö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 etki düzeyini ölçmek için
Ayırma metrikleri ve profilden çıkarma işlemini gerçekleştirebilir.
Sürüm 1.1.0-rc03
1 Haziran 2022
androidx.benchmark:benchmark-*:1.1.0-rc03
yayınlandı. Sürüm 1.1.0-rc03 bu kaydetmeleri içerir.
Hata Düzeltmeleri
Her karşılaştırma yinelemesinde hedef paketi yeniden yüklemekten kaçının. ( aosp/2093027, b/231976084)
300ms
gecikmesinipressHome()
hesabından kaldırın. (aosp/2086030, b/231322975)Gelişmiş seçenekte kullanılan Kabuk komutlarını optimize ederek Macrobenchmark yineleme hızını artırın. (aosp/2086023, b/231323582)
Macrobenchmarks ile Temel Profiller oluşturulurken yönetilen Gradle Cihazları desteği. (aosp/2062228, b/228926421)
Sürüm 1.1.0-rc02
11 Mayıs 2022
androidx.benchmark:benchmark-*:1.1.0-rc02
yayınlandı. Sürüm 1.1.0-rc02 bu kaydetmeleri içerir.
- Ölçümlerin doğru olması için uygulamalar artık karşılaştırmalar arasına 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 derleme işleminin 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 sayede, birden fazla test çalıştırmanın
CompilationMode
ürününün ölçümler üzerinde çok az etkisi olur veya hiç etkisi olmaz. Bu sorunu çözmek için hedef uygulama artık her test yöntemini tamamen yeniden yüklüyor. Bu işlem, her makrobenchmark arasındaki uygulama verilerini temizleyecek. (I31c74, b/230665435)Bu durum, uygulamaların testlerden önce durumu ayarlamasını engellediğinden, artık bu sorunu çözmek için derleme / yeniden yükleme işlemini atlamak mümkündür. Ö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' } }
Alternatif olarak Gradle komut satırından:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
androidx.benchmark.enabledRules
enstrümantasyon bağımsız değişkeni eklenerek, makro karşılaştırmalar ile test oluşturan temel profil arasında modülün paylaşılması mümkün hale geldi. "Macrobenchmark" veya "BaselineProfile"ı iletin. tek bir tür test çalıştırmanız gerekir, ör. bir emülatördeBaselineProfiles
oluştururken geçerlidir. (I756b7, b/230371561)Ör. makrobenchmark'ınızın build.gradle dosyasında:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
Alternatif olarak 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ı. Sürüm 1.1.0-rc01 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Android Studio'daki temel profil çıkış bağlantılarında artık benzersiz bir dosya adı kullanılıyor. Bu şekilde, çıkış her zaman bir
BaselineProfileRule
kullanmanın en son sonuçlarını 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ı. Sürüm 1.1.0-beta06 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- API 21/22'de izleme kaydı kilitlenmesini düzeltme (If7fd6, b/227509388)
- "Herhangi bir metrik okunamıyor" sorununu düzeltmek için etkinlik başlatma tamamlama algılamasının revizyonunu yapma başlangıç makro karşılaştırmalarında bir istisna oluşturur. (Ia517c)
CompilationMode.None()
kullanıldığında Macrobenchmarks için başlangıç metriklerini düzeltin. Bu değişiklikten önceCompilationMode.Partial()
,Compilation.None()
değerinden 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ı. Sürüm 1.1.0-beta05 bu kaydetmeleri içerir.
Hata Düzeltmeleri
CompilationMode.None
kullanırken profil yükleme atlandıktan sonra paketi sonlandırın. (aosp/1991373)StartupMode.COLD
kullanılırken Macrobenchmarks'ın başlangıç metriklerini toplayamamasına neden olan sorun düzeltildi. (aosp/2012227 b/218668335)
Sürüm 1.1.0-beta04
23 Şubat 2022
androidx.benchmark:benchmark-*:1.1.0-beta04
yayınlandı. Sürüm 1.1.0-beta04 bu kaydetmeleri içerir.
Hata Düzeltmeleri
Android 10'da eksik metrikleri düzeltin ve İşlem adlarının yakalanamaması nedeniyle
NoSuchElementException
doğru şekilde izlenmesini sağlar. (Ib4c17, b/218668335)Q (API) sürümünde termal kısıtlama algılaması için
PowerManager
kullanın 29) ve üzeri. Bu sayede, yanlış yönlendirme sıklığını önemli ölçüde azaltmış olursunuz termal kısıtlama algılamada pozitif değerler (90'dan sonra karşılaştırmayı yeniden deneme) bekleme süresindedir) ve kullanıcı performansında karşılaştırmaları önemli ölçüde inşa eder. Aynı zamanda saatler şu anda çalıştığında bile kısıtlama algılama özelliği de vardır. kilitli (cihazın fiziksel koşulları için ortam) da kullanabilirsiniz. (I9c027, b/217497678, b/131755853)İncelemeyi basitleştirmek için basit performans ile örneklenmiş profil oluşturmayı yalnızca
measureRepeated
iş parçacığıyla filtreleyin (Ic3e12, b/217501939)Çok işlemli uygulamalardaki adlandırılmış kullanıcı arayüzü alt işlemlerinden gelen destek metrikleri (Ice6c0, b/215988434)
Temel profil kurallarını Android 9'u (SDK 28) hedefleyecek şekilde filtreleyin. aosp/1980331 b/216508418
Compilation.None()
kullanırken profil yükleme işlemini atlayın. Ayrıca, uygulamaandroidx.profileinstaller
ve Android Gradle eklentisinin eski bir sürümünü kullanıyorsa uyarı bildirin. aosp/1977029
Sürüm 1.1.0-beta03
9 Şubat 2022
androidx.benchmark:benchmark-*:1.1.0-beta03
yayınlandı. Sürüm 1.1.0-beta03 bu kaydetmeleri içerir.
API Değişiklikleri
AudioUnderrunMetric
, makrobenchmark kitaplığına deneysel işaretin altına alınan seslerin algılanmasına izin vermek için eklendi (Ib5972)profileBlock
ile aynı şekilde çalıştığı içinBaselineProfileRule
artıksetup
blokunu 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ışında (I5ae4d, b/214917025) bağlantı verildiğinde, mikrobench profil aracı izlerinin sonraki çalıştırmalarda güncellenememesi sorunu düzeltildi
- API 23'te (Ice380) derleme kabuğu komutlarını önleme
FrameCpuTime
yeniden adlandırıldı ->FrameDurationCpu
,FrameUiTime
->FrameDurationUi
, bunları netleştirmek için kullanılır. Zaman damgaları değil, süreler ve ön eklerle eşleştirme kullanılır. (I0eba3, b/216337830)
Sürüm 1.1.0-beta02
26 Ocak 2022
androidx.benchmark:benchmark-*:1.1.0-beta02
yayınlandı. Sürüm 1.1.0-beta02 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Microbenchmark Yığın Örneklemesi / Yöntem İzleme Profili sonuçlar artık Studio çıkışında diğer profil oluşturma çıkışlarına benzer şekilde bağlanır ve tahsis metriği (Idcb65, b/214440748, b/214253245)
- BaselineProfileRule, oluşturulan BaselineProfile metin dosyasını almak için artık logcat 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ı. Sürüm 1.1.0-beta01 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Profil oluşturucu bağımsız değişkeninin yoksayılması sorununu düzeltir. (I37373, b/210619998)
- Desteği sonlandırılan
CompliationModes
kaldırıldı (I98186, b/213467659) CompilationMode.Partial
olan referans profil bağımsız değişkeni olarak değiştirildi enum'u kullanabilirsiniz. (Id67ea)
Sürüm 1.1.0-alpha13
15 Aralık 2021
androidx.benchmark:benchmark-*:1.1.0-alpha13
yayınlandı. Sürüm 1.1.0-alpha13 bu kaydetmeleri içerir.
API Değişiklikleri
- Android Q'da (API 29 ve sonraki sürümler) microbench çıkışına düşük ek yük getiren Sistem İzleme ekleyin. Bu özelliğin, sonuçları etkilememesi için şu anda özel izlemeyi (
android.os.Trace
veyaandroidx.tracing
Jetpack API'leri aracılığıyla) yakalamadığını unutmayın. Bu izleme, teşhisin istikrarsızlığa neden olabilir. (I298be, b/205636583, b/145598917) CompilationModes
konusunu üç sınıfa dönüştürün: Tam, Hiçbiri, Kısmi. Eskiden, derleme bağımsız değişkenleri (artık uygulama ayrıntıları olarak değerlendiriyoruz) ve özelliklerden sonra bu adlar tutarsız bir şekilde adlandırılıyordu. Bu sayede, platform sürümlerindeki dengeler, olası kombinasyonlar ve davranışlar daha net hâle gelir. (I3d7bf, b/207132597)- Kurulum ve ölçüm artık her zaman çift halinde ve sıralı olarak sunuluyor. Artık paket adını ve yinelemeyi sorgulayabilirsiniz (yine de belirli ısınma senaryolarında iterasyon
null
olabilir). (Id3b68, b/208357448, b/208369635)
Hata Düzeltmeleri
- Hatalı bir şekilde
None
(I01137) olarak ele alınanCompilationMode.Speed
düzeltildi
Sürüm 1.1.0-alpha12
17 Kasım 2021
androidx.benchmark:benchmark-*:1.1.0-alpha12
yayınlandı. 1.1.0-alpha12 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- Özel iz tabanlı veriler için deneysel TraceSectionMetric en iyi uygulamaları paylaşacağız. (I99db1, b/204572664)
Hata Düzeltmeleri
- Kullanıcı arayüzünün test edilebilmesi için her yinelemede cihazı uyandırın. kilit ekranının devre dışı bırakılmasını gerektirir. (Ibfa28, b/180963442)
- Şu ürünlerde StackSampling profil oluşturma modundaki birden fazla kilitlenmeyi düzeltir: emülatörler ve rootlanmamış cihazlar (Icdbda, b/202719335)
- Her yinelemenin sonunda 0,5 saniyelik uyku süresi kaldırıldı. Bu değişiklikle birlikte eksik metrikler olduğunu fark ediyorsunuz. Lütfen hata bildiriminde bulunun. (Iff6aa)
- Verilerin düşmesi olasılığını ve izleme nedeniyle oluşan bellek ek yükünü azaltın (Id2544, b/199324831, b/204448861)
- Kompakt planlı depolama biçimine geçerek iz boyutunu yaklaşık% 40 azaltın. (Id5fb6, b/199324831)
- Başlangıç metriklerinin uygulamaları her zaman şu tarihte bitecek şekilde güncellendi: oluşturma iş parçacığının sonu. Bu, platform genelinde daha tutarlı olacak. ve uygulama içi ölçümlerle daha yakından eşleşmesini sağlar. (Ic6b55)
Sürüm 1.1.0-alpha11
3 Kasım 2021
androidx.benchmark:benchmark-*:1.1.0-alpha11
yayınlandı. Sürüm 1.1.0-alpha11 bu kaydetmeleri içerir.
API Değişiklikleri
- Macrobenchmark'ta artık
minSdkVersion
olarak23
var. (If2655) - Uygulamanın kritik kullanıcı yolculuğu için temel profiller oluşturabilen yeni bir deneysel
BaselineProfileRule
ekler. İlerleyen zamanlarda ayrıntılı belgeler mevcuttur. (Ibbefa, b/203692160) - Eklenen ölçüsü tekrarlanan arayüz varyantını kaldırır karmaşıklığa neden olduğundan, çevrimiçi arama yapan kullanıcılar için yöntemidir. Java çağrılarının tekrar Unit.Instance şuradan döndürülmesi gerekir: ölçüp tekrarlama. Bu bir rahatsız ediciyse lütfen hata bildiriminde bulunun. sonraki bir sürümde tekrar ziyaret edebilir. (Ifb23e, b/204331495)
Sürüm 1.1.0-alpha10
27 Ekim 2021
androidx.benchmark:benchmark-*:1.1.0-alpha10
yayınlandı. 1.1.0-alpha10 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
- API 23'e geri dönmek için Backport StartupTimingMetric. Bu yeni uygulama, beklemek için reportFullyDrawn() işlevini daha iyi işler kadar bir süre devam eder. (If3ac9, b/183129298)
- Java çağrıları için birden fazla MacrobenchmarkScope yöntemine JvmOverloads eklendi. (I644fe, b/184546459)
- Java dilindeki deyimsel kullanım için
Consumer<MacrobenchmarkScope>
kullanan alternatif bir MacrobenchmarkRule.measureDuplicateed işlevi sağlayın. (If74ab, b/184546459)
Hata Düzeltmeleri
- Yeterince erken başlamayan ve eksik metrik verileri olan izler için düzeltme yapın. Bu sorunun, "Hiçbir metrik okunamıyor" sorununu düzeltmesi beklenir. karşılaştırma sırasında" kitaplığın kendisinden kaynaklanan istisnalar olabilir. (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 kaydetmeleri içerir.
Hata Düzeltmeleri
- API 31/S+'ta kök içermeyen Kernel sayfa önbelleğinin kaldırılması için destek, StartupMode.COLD başlatmalarını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ı. 1.1.0-alpha08 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
- API 23'e geri dönmek için kaydırma makro karşılaştırmalarını etkinleştirin (If39c2, b/183129298)
- Kullanıcı arayüzü ve JSON çıkışına yeni örneklenmiş metrik türü ekleyerek şuna odaklanın: iterasyon başına birden fazla örneğin yüzdelikleridir. (I56247, b/199940612)
- Karşılaştırma boyunca kayan nokta metriklerine geçme (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ı. 1.1.0-alpha07 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
- Gelecekte desteklenmesi amaçlanan en düşük API düzeyini yansıtmak için minimum API düzeyi 21'e yükseltildi. Desteklenen mevcut minimum API API'si gerekliApi() aracılığıyla iletilmeye devam etmektedir ve şu anda 29'dur (I440d6, b/183129298)
Hata Düzeltmeleri
- Referans profilleri kullanan uygulamaların
CompilationMode.BaselineProfile
ile MacroBenchmarks çalıştırmasını kolaylaştırmak içinProfileInstaller
düzeltildi. (I42657, b/196074999) NOT: Ayrıcaandroidx.profileinstaller:profileinstaller:1.1.0-alpha04
veya daha yeni bir sürüme güncelleme yapmanız gerekir. StartupMode.COLD
veCompilationMode.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 kaydetmeleri 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 profili oluşturucu olarak Simpleperf'e geçildi. (Ic4b34, b/158303822)
Bilinen Sorunlar
CompilationMode.BaselineProfile
henüz geliştirme aşamasında olan bir hizmettir. Bir profilin ne kadar iyi olduğunu belirlemek için şimdilik bu verileri kullanmaktan kaçının.
Sürüm 1.1.0-alpha05
4 Ağustos 2021
androidx.benchmark:benchmark-*:1.1.0-alpha05
yayınlandı. 1.1.0-alpha05 sürümü bu kaydetmeleri içerir.
1.1.0-alpha04
, belirli bir kilitlenme nedeniyle yayından önce iptal edildi. b/193827052
API Değişiklikleri
am start
aracılığıyla başlatmayı çağırmak için startActivityAndPending anahtar kelimesi değiştirildi. Bu durum, her ölçüm iterasyonunun süresini yaklaşık 5 saniye kadar kısaltır (artık desteklememek kaydıyla) amaç ayrıştırılabilir. (I5a6f5, b/192009149
Hata Düzeltmeleri
- Termal gaz algılamanın agresifliğini azaltın ve kısıtlamalar sık sık algılanırsa referans değerini yeniden hesaplar. (I7327b)
- FrameTimingMetric'i, Android S beta sürümünde (Ib60cc, b/193260119) çalışacak şekilde düzeltir
CompilationMode.BaselineProfile
özelliğini daha iyi desteklemek amacıyla hedef uygulamayı zorla durdurulmuş durumdan çıkarmak içinEmptyActivity
kullanın. (Id7cac, b/192084204)- İzleme dosyası uzantısı, platform standardıyla eşleşecek şekilde
.perfetto-trace
olarak değiştirildi. (I4c236, b/174663039) - StartupTimingMetric artık "fullDrawnMs" çıktısı veriyor. metrik kullanabilirsiniz. Alıcı: uygulamanız için bu metriği tanımlayın, ilk içeriğiniz hazır olur (ör. ilk liste öğeleriniz, veritabanından veya ağdan yüklenir. (reportFullyDrawn yöntemi kullanılabilir) ComponentActivity'de derleme sürümü kontrolleri olmadan). Testinizin metriği yakalayacak kadar uzun süre çalışması gerektiğini unutmayın (startActivityAnd Wait, reportFullyDrawn'ı beklemez). (If1141, b/179176560)
- İzlere Ui meta verileri ekleme maliyetini 50+ ms kadar azaltın (Ic8390, b/193923003)
- Durma sırasında yoklama sıklığı önemli ölçüde arttı etkisinin azaltılmasına neden olabilir, ör. startup karşılaştırma çalışma zamanı: %30+ (Idfbc1, b/193723768)
Sürüm 1.1.0-alpha03
16 Haziran 2021
androidx.benchmark:benchmark-*:1.1.0-alpha03
yayınlandı. 1.1.0-alpha03 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- Jetpack ProfileLoader 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ı gizlemek için örnek Gradle kodu, .gradle.kts kullanıcılarını da destekleyen bir söz dizimine sahip, desteği sonlandırılmamış bir API kullanacak şekilde güncellendi.
Örnek:
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
Sürüm 1.1.0-alpha02
18 Mayıs 2021
1.1.0-alpha02 karşılaştırma sürümü, karşılaştırma için büyük bir bileşen, Macrobenchmark sunuyor. macrobenchmark, CPU döngülerini ölçmenize olanak tanıyan karşılaştırma özelliğinin yanı sıra başlatma ve kaydırma gibi uygulama etkileşimlerinin tamamını ö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ı. 1.1.0-alpha02 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
Macrobenchmark yapıları eklendi (androidx.benchmark:benchmark-macro-junit4
ve androidx.benchmark:benchmark-macro
)
- Uygulamanızdan, yerel olarak veya CI'da başlangıç, kaydırma/animasyon performans metriklerini yakalayın
- Android Studio içinden izleri yakalayın ve inceleyin
Hata Düzeltmeleri
- Android 12'de çıkış diziniyle ilgili geçici kabuk izinleri sorunu (Not: Etkilenen cihazlarda çıkış dosyalarını yakalamaya devam etmek için Android Studio'yu Arctic Fox'a (2020.3.1), Android Gradle Eklentisi'ni 7.0.0 canary'ye ve Android Studio'yu da Arctic Fox'a (2020.3.1) güncellemenizi gerektirebilir). (Icb039)
- Karşılaştırma Eklentisi'nde yapılandırma önbelleğe alma desteği (6be1c1, b/159804788)
- Basitleştirilmiş dosya çıkışı:
requestLegacyExternalStorage=true
gerektirmeyen bir dizinde varsayılan olarak etkindir (8b5a4d, b/172376362) - Kitaplık yazdırma logcat uyarılarını düzeltir Mevcut olmadığı platform sürümlerinde JIT iş parçacığı. (I9cc63, b/161847393)
- Okuma cihazı maksimum frekansı için düzeltme yapıldı. (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
serbest bırakıldı. Sürüm 1.1.0-alpha01 bu kaydetmeleri içerir.
1.1'deki Yeni Özellikler
- Ayırma Metriği - Karşılaştırmalar, artık hazırlık ve zamanlamadan sonra ayırma sayılarını yakalayan ek bir aşama uygulamaktadır. Ayırma işlemleri, platformun daha eski sürümlerinde performans sorunlarına neden olabilir (O'da 140 ns, M'de 8 ns'e dönüşmüştür; Nexus5X'te ölçülmüştür kilitli saatler vardır). Bu metrik, Android Studio konsol çıkışının yanı sıra
- Profil oluşturma desteği: Artık kodunuzun neden yavaş çalıştığını incelemek amacıyla karşılaştırma çalıştırması için profil oluşturma verilerini yakalayabilirsiniz. Karşılaştırma, ART'tan yöntem izlemenin veya yöntem örneklemenin yakalanmasını destekler. Bu dosyalar, Android Studio'daki Profil Aracı ile Dosya > Aç.
- Comparison Gradle eklentisi artık daha basit kurulum için varsayılan ayarlar sunuyor:
testBuildType
, kod kapsamı yerleşik olarak bulunan bağımlılıkları kullanmaktan kaçınmak için varsayılan olarak kullanıma sunulacak şekilde ayarlanmıştır. BuildType ayrıca varsayılan derleme Türü olarak yapılandırılır. Bu sayede, Android Studio bir projeyi ilk kez açarken doğru derleme varyantını otomatik olarak 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ırmanın ilk ölçümünün diğerlerine göre yapay olarak daha yüksek olduğu ısınma geçişi genel giderleri önemli ölçüde azaldı. Bu sorun, çok küçük karşılaştırmalarda (1 mikrosaniye veya daha kısa) daha belirgindir. (b/142058671)
- Komut satırından çalıştırıldığında her karşılaştırma için yazdırılan
InstrumentationResultParser
hatası düzeltildi. (I64988, b/154248456)
Bilinen Sorunlar
- Karşılaştırma'nın komut satırı, gradle çağrıları sonuçları doğrudan yazdırmaz. Studio üzerinden çalıştırarak veya sonuçlar için JSON çıkış dosyasını ayrıştırarak bu sorunu çözebilirsiniz.
- Karşılaştırma raporu, "android" veya "indir" (büyük/küçük harfe duyarlı değil) ile biten bir applicationId'ye sahip bir uygulamanın yüklü olduğu cihazlardan rapor alınamıyor. Bu sorunla karşılaşan kullanıcıların Android Gradle Eklentisi'ni 4.2-alpha01 veya sonraki bir sürüme yükseltmesi 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 arasında herhangi bir değişiklik yapılmadan yayınlandı. 1.0.0 sürümü bu kaydetmeleri 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.
Derleme ve çalışma zamanı yapılandırma sorunlarını önler, ayrıca cihaz performansını dengeleyerek ölçümlerin doğru ve tutarlı olmasını sağlar. Kodların zaman içindeki 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.
Önemli özellikler şunlardır:
- Saat sabitleme
- Otomatik iş parçacığı ö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
serbest bırakıldı. Sürüm 1.0.0-rc01 bu kaydetmeleri içerir.
Yeni özellikler
- Karşılaştırmalara sistem izleme izleme eklendi
Hata düzeltmeleri
- Öncelik düzeyinin azaltılması nedeniyle JIT'in ısınmadan önce tamamlanmamasıyla ilgili metrik kararsızlığı sorunu düzeltildi (b/140773023)
- Android Gradle Plugin 3.5 ve 3.6 için 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
serbest bırakıldı. Sürüm 1.0.0-beta01 bu kaydetmeleri içerir.
Yeni özellikler
- Bir karşılaştırmadan diğerine sızıntıya kadar olan 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
- Deneysel API kullanılmadığında Java kodunun doğru şekilde lint hataları üretmesi için
androidx.annotation:android-experimental-lint
bağımlılığı eklendi. Bu hata, Kotlin çağrıları için Kotlin deneysel ek açıklaması tarafından sağlanana benzer. - Artık AGP'nin veri kopyalamayı ne zaman işleyeceğini bilmek için Android Gradle Plugin 3.6'da çıkış için
additionalTestOutputDir
araç bağımsız değişkeninin kullanımını doğru şekilde algılıyor. -1
(b/141945670) dosyasını doğru şekilde yazdırmak için algılanmayan saat frekansını JSON biçiminde düzeltin.
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
serbest bırakıldı. 1.0.0-alpha06 sürümü bu kaydetmeleri içerir.
Yeni özellikler
- Test çalıştırıcı için eski paketin yanlış kullanılmasına ilişkin bir kontrol eklendi. Bu kontrol artık daha faydalı bir hata mesajı verir.
API değişiklikleri
ExperimentalAnnotationReport
adlı deneysel ek açıklama artık doğru bir şekilde herkese açık hale getirildi. Deneysel BenchmarkState#report API kullanımı için artık bu ek açıklama gerekli
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
serbest bırakıldı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
API değişiklikleri
BenchmarkState.reportData
API deneysel olarak işaretlendi
Hata düzeltmeleri
cut
veyaexpr
kabuk yardımcı programları eksik olan cihazlarda başarısız olabilecek saat kilitleme komut dosyası sorunu düzeltildi.- Su yardımcı programının
-c
işaretini desteklemeyen eski bir sürümüyle rootlanmış cihazlarda takılmasına neden olan./gradlew lockClocks
göreviyle ilgili sorun düzeltildi.
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
serbest bırakıldı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
Hem farklı derleme sistemleriyle (Bazel veya Buck gibi) hem de CI'da çalışırken Karşılaştırma kitaplığının Gradle olmadan nasıl kullanılacağı hakkında yeni belgeler de eklendi. Daha fazla bilgi için Gradle olmadan karşılaştırma oluşturma ve Sürekli Entegrasyon'da karşılaştırmalar çalıştırma başlıklı makaleleri inceleyin.
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 ve sonraki sürümleri kullanırken AGP tabanlı yeni 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ıştırma süresi (b/133147694)
- Ad dizesi (örneğin,
@Parameters(name = "size={0},depth={1}")
) kullanan@Parameterized
karşılaştırmaları artık JSON çıktısında (b/132578772) her karşılaştırma için parametre adlarını ve değerlerini gösterir
- Prova modu (b/138785848)
- "Prova" eklendi özelliğini kullanmanızı öneririz. Bu faydalı olabilir, ör. örneğin, bozuk olup olmadıklarını kontrol etmek için gönderim öncesi karşılaştırmaları hızlı bir şekilde çalıştırabilirsiniz.
API değişiklikleri
- Modül yapısı değişti ve kitaplık bölündü (b/138451391)
benchmark:benchmark-junit4
, JUnit bağımlılığı olanAndroidBenchmarkRunner
veBenchmarkRule
sınıfları içeriyor. Bunların her ikisi deandroidx.benchmark.junit4
paketine taşınmışbenchmark:benchmark-common
, ComparisonState API'si de dahil olmak üzere mantığın geri kalanını içeriyor- Bu ayrım, kitaplığın gelecekte JUnit4 API'leri olmadan karşılaştırmayı desteklemesini sağlayacak
- Yapılandırma uyarıları artık hata olarak kabul ediliyor ve testin kilitlenmesine neden olacak (b/137653596)
- Bu, özellikle CI'da doğru ölçümleri daha da teşvik etmek için yapılır
- Bu hatalar, 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 karşılaşılan hatalar, sorunun nasıl çözüleceğine dair önerilerle birlikte daha açıklayıcı mesajlar sağlar
- Ekranlar kapalıyken başarısız olmak yerine karşılaştırma çalışırken ekranlar otomatik olarak açılır
Harici katkılar
- JSON çıkış iyileştirmelerine katkıda bulunduğu 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
serbest bırakıldı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
Yeni özellikler
- Tam JSON raporunda karşılaştırma başına termal kısıtlama nedeniyle uyku süresini gösterin
Hata düzeltmeleri
- Android eklentilerinden ve Android blokundan sonra Gradle eklentisinin uygulanması gerekmemelidir
- Kapsamlı depolama alanı kullanan Android 10 cihazlarda karşılaştırma raporları desteği 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ı. İlgili içeriği oluşturmak için kullanılan
Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
JSON şemasını bir API olarak ele aldığımızı unutmayın. Aynı planı takip etmeyi, diğer API'ler gibi kararlılık kısıtlamaları: bir kez kararlı (çok nadir istisnalar vardır) beta sürüm olup son sürümde düzeltilmiştir, ana sürümlerdeki değişiklikler/kaldırma işlemleri.
API değişiklikleri
JSON şeması yenilendi. JSON şemasında yapılacak diğer değişiklikler muhtemelen eklemelerle sınırlıdır:
- Sonuç nesne yapısı, ek metrik gruplarını destekleyecek şekilde yeniden düzenlendi gelecekte (b/132713021)
- Cihaz ve derleme bilgileri gibi test çalıştırması bağlamı bilgileri eklendi saatlerin kilitli olup olmadığına, üst düzey nesneye (b/132711920)
- Zaman metriği adlarının adında "ns" karakteri bulunuyor (b/132714527)
- Bildirilen metrik başına eklenen ek istatistikler (maksimum, ortanca, minimum) ve basitleştirilmiş "nanos" kaldırıldı özet istatistik (b/132713851)
XML çıkışı kaldırıldı (b/132714414)
Termal kısıtlama algılaması
BenchmarkState.reportData
API'den kaldırıldı (b/132887006)
Hata düzeltmeleri
./gradlew lockClocks
adlı uygulamanın son işletim sistemi kullanılan bazı cihazlarda takılmaması 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ı. Yapılan kaydetmeler
bu sürümde kullanılabiliyor
burada bulabilirsiniz.