Karşılaştırma
Son Güncelleme | Kararlı Sürüm | Sürüm Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
11 Aralık 2024 | 1.3.3 | - | - | 1.4.0-alpha06 |
Bağımlılıkları beyan etme
Benchmark'a bağımlılık eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.
Makro karşılaştırma
Projenizde Macrobenchmark'i kullanmak için macrobenchmark modülünüzün build.gradle
dosyasına aşağıdaki bağımlılıkları ekleyin:
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
Projenizde Microbenchmark'ı kullanmak için microbenchmark modülünüzün build.gradle
dosyasına aşağıdaki bağımlılıkları ekleyin:
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'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni bir kitaplık oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oy verebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerine bakın.
Sürüm 1.4
Sürüm 1.4.0-alpha06
11 Aralık 2024
androidx.benchmark:benchmark-*:1.4.0-alpha06
yayınlanır. 1.4.0-alpha06 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Studio'da vurgulama/ayrıştırma özelliği çalışmadığı için
PerfettoTraceProcessor.Session.query()
içinde@Language("sql")
kullanımı kaldırıldı. (Idc2fa, b/377733398)
Hata Düzeltmeleri
- Bu kitaplıkta artık tür kullanımı olan JSpecify nullness ek açıklamaları kullanılmaktadır. Kotlin geliştiricileri, doğru kullanımı zorunlu kılmak için aşağıdaki derleyici bağımsız değişkenlerini kullanmalıdır:
-Xjspecify-annotations=strict
,-Xtype-enhancement-improvements-strict-mode
(I46810, b/326456246) ArtMetric
, sınıf yüklemesini (init değil) bildirecek şekilde düzeltildi ve çalışma zamanı davranışını netleştirmek için dokümanlar iyileştirildi. (I9915c)- Android Çok Kullanıcılı'da, komutları yalnızca rootlanmış cihazlarda root olarak yürütün. (I88b44)
Sürüm 1.4.0-alpha05
13 Kasım 2024
androidx.benchmark:benchmark-*:1.4.0-alpha05
yayınlanır. 1.4.0-alpha05 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- API 34 ve sonraki sürümlerde
CompilationMode.None()
etkinliğinin, ilk ve en kötü performansı temsil etmeyen tutarsız bir performansa sahip olduğu sorun düzeltildi. Bu, ART'ın derleme durumununverify
, ilk çalıştırmadan kısa bir süre sonra uygulamaları kısmen derlemesine (yalnızca sınıf yüklemeyi etkiler) olanak tanıyan bir platform değişikliğini atlamayı sağlar. (Ie48d0) - Perfetto izlemesinde süreç adının kısaltılması nedeniyle yerleşik makro karşılaştırma metriklerinden ölçüm raporlanmayan (özellikle kısa) izlemelerin yakalanmasına neden olan sorun düzeltildi. Artık macrobenchmark, beklenen paket adına ek olarak tüm yerleşik sorgularda kısaltılmış paket adını arayarak bu sorunu gideriyor. Özel
TraceMetric
uygulamalarının veyaPerfettoSession.query
'u doğrudan çağıran diğer öğelerin, Perfetto sorgusundakiprocess.name LIKE "$packageName"
değerini(process.name LIKE "$packageName" OR process.name LIKE "$(packageName.takeLast(15))")
olarak değiştirerek aynı davranışı uygulayabileceğini unutmayın. (I5bf01, b/377565760)
Sürüm 1.4.0-alpha04
30 Ekim 2024
androidx.benchmark:benchmark-*:1.4.0-alpha04
yayınlanır. 1.4.0-alpha04 sürümü bu taahhütleri içerir.
Yeni Özellikler
- (Deneysel) İkincil bir kullanıcıya yüklenen uygulamalarda (ör. başsız Android Auto cihazlardaki uygulamalar) referans profil oluşturma ve karşılaştırma işlemlerini etkinleştirin. Bu destek bazı senaryolarda test edilmiştir ancak sizin için işe yaramazsa lütfen bir hata kaydı göndererek bize bildirin. (I9fcbe, b/356684617, b/373641155)
Hata Düzeltmeleri
isProfileable
artık karşılaştırma derlemelerinde her zaman geçersiz kılınır veisDebuggable
da hem karşılaştırma hem denonMinified
(temel profil yakalama) derlemelerinde her zaman geçersiz kılınır. (I487fa, b/369213505)- API 28'den önceki bazı fiziksel cihazlarda derleme algılamasını düzeltir. json
context.compilationMode
'ü veandroidx.benchmark.requireAot=true
'un davranışını etkiler (artık yanlış şekilde atılmaz) (Ic3e08, b/374362482) CpuEventCounter
metriklerinde geçersiz ölçümler gözlemlenirse (ör. instructions/cpucycles==0) hata atma (I8c503)
Sürüm 1.4.0-alpha03
16 Ekim 2024
androidx.benchmark:benchmark-*:1.4.0-alpha03
yayınlanır. 1.4.0-alpha03 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Makro karşılaştırma: Profil kapsamını veya genel Android RunTime performansını incelemek için kullanılabilen
ArtMetric
değerini ekler. JIT, sınıf başlatma (mevcut olduğunda) ve sınıf doğrulamasının sayısını ve toplam süresini yakalar. Ayrıca,CaptureInfo
değerini varsayılan olarak isteğe bağlı ART ana hat sürümünü içerecek şekilde değiştirir. (I930f7) - Belirli bir karşılaştırma çalışmasındaki kararlılığı göstermek için Karşılaştırma JSON çıkışına
coefficientOfVariation
ekleyin. (Ib14ea)
Hata Düzeltmeleri
- AVD cihazında boşluk olduğunda
CollectBaselineProfileTask
düzeltildi. (Ia0225, b/371642809) StartupMode.COLD
istisnalarından kaynaklanan hatalar için varsayımsal düzeltme:Package <packagename> must not be running prior to cold start!
. ArtıkMacrobenchmarkScope.killProcess()
(StartupMode.COLD
davranışını uygulamak için her iterasyondan önce çalıştırılan dahil), uygulamanın tüm işlemlerinin çalışmayı durdurduğunu doğrulamak için bekler. (I60aa6, b/351582215)- Bazı köklü emülatörlerde UNLOCKED_ hatasının gösterilmesine neden olan sorun düzeltildi. (Ic5117)
- Bu kitaplıkta artık tür kullanımı olan JSpecify nullness ek açıklamaları kullanılmaktadır. Kotlin geliştiricileri, doğru kullanımı zorunlu kılmak için aşağıdaki derleyici bağımsız değişkenlerini kullanmalıdır:
-Xjspecify-annotations=strict
,-Xtype-enhancement-improvements-strict-mode
(I7104f, b/326456246)
Sürüm 1.4.0-alpha02
2 Ekim 2024
androidx.benchmark:benchmark-*:1.4.0-alpha02
yayınlanır. 1.4.0-alpha02 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Gradle görevleri
lockClocks
veunlockClocks
, üst düzeyde kullanılabilir olmak yerine karşılaştırma projelerinde kullanılabilir hale getirildi. Proje izolasyonunu bozmadan bunları üst düzey işlemler olarak kaydettirmenin maalesef bir yolu olmadığı için bu değişiklik gerekliydi. (I02b8f, b/363325823)
Hata Düzeltmeleri
BaselineProfileRule
artık, blokun sonunda çalışan her işleme sinyal göndererek profilleri dökmek için çok işlemli uygulamaların profillerini topluyor. Profil tabanlı bir derleme, yayınlanacak bir işlem hiçbir zaman başarılı bir şekilde bulamazsa derleme başarısız olur. Bunun nedeni, profil verilerinin derlemede bulunmasının beklenmemesidir. Ayrıca, döküm bekleme süresini kontrol etmek için bir enstrümantasyon bağımsız değişkeni eklendi:androidx.benchmark.saveProfileWaitMillis
(I0f519, b/366231469)- Karşılaştırmadan
1.3.2
: Firebase Test Lab'in (FTL) Temel Profil Gradle Eklentisi'nden Temel Profil veya Makro Karşılaştırma sonuç dosyalarını çekememesi düzeltildi. (I2f678, b/285187547)
FTL'yi kullanmak için eklentiyi, aşağıdakilerle birlikte eklenti bloğundaki temel profil modülüne uygulayın:
plugins {
...
id("com.google.firebase.testlab")
}
Ardından Firebase Test Lab'i aşağıdakilerle yapılandırın:
firebaseTestLab {
// Credentials for FTL service
serviceAccountCredentials.set(file("credentials.json"))
// Creates one or more managed devices to run the tests on.
managedDevices {
"ftlDeviceShiba34" {
device = "shiba"
apiLevel = 34
}
}
// Ensures the baseline profile is pulled from the device.
// Note that this will be automated as well later with aosp/3272935.
testOptions {
results {
directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
}
}
}
Ayrıca, oluşturulan FTL cihazının temel profil uzantısına eklenmesi gerekir:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
Sürüm 1.4.0-alpha01
18 Eylül 2024
androidx.benchmark:benchmark-*:1.4.0-alpha01
yayınlanır. 1.4.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellik: Uygulama Başlatma Analizleri
- Uygulama başlatma analizlerinin ilk sürümü Macrobenchmark'te etkinleştirilebilir. (09fae38)
Başlangıç karşılaştırmasında etkinleştirmek için:
@Test
fun startup {
macrobenchmarkRule.measureRepeated(
…
packageName = "com.example.my.application.id"
metrics = listOf(StartupTimingMetric()),
iterations = 5,
startupMode = StartupMode.COLD,
compilationMode = CompilationMode.None(),
experimentalConfig = ExperimentalConfig(startupInsightsConfig = StartupInsightsConfig(isEnabled = true))
) {
scope.startActivityAndWait(...)
}
}
Ardından, başlatma karşılaştırmanızı çalıştırdığınızda, yaygın sorunları aramak için izleme analiz edilir ve karşılaştırma sekmesindeki Studio test çıkışına metrikler eklendikten sonra sorunlar yazdırılır. Örneğin:
StartupBenchmark_startup[startup=COLD,compilationMode=None]
├── Metrics
│ ├── timeToFullDisplayMs min 1,147.2, median 1,208.8, max 1,307.4
│ └── timeToInitialDisplayMs min 1,147.2, median 1,208.8, max 1,307.4
├── App Startup Insights
│ ├── App in debuggable mode (expected: false)
│ │ └── seen in iterations: 0(true) 1(true) 2(true) 3(true) 4(true) 5(true) 6(true) 7(true) 8(true) 9(true)
│ ├── Potential CPU contention with another process (expected: < 100000000ns)
│ │ └── seen in iterations: 4(105022546ns)
│ └── Main Thread - Binder transactions blocked (expected: false)
│ └── seen in iterations: 7(true)
└── Traces
└── Iteration 0 1 2 3 4 5 6 7 8 9
Bu özellik üzerinde çalışmalarımız devam ediyor. Belgelerde ve genişletilebilirlikte yapılacak iyileştirmeler için geri bildirimlerinizi bekliyoruz.
Yeni Özellikler
- Tüm temel profil uyarılarını bastırmak için
androidx.baselineprofile.suppressWarnings
gradle mülkü eklendi. (314153a) - Mikro test metrikleri artık Perfetto izlemelerinde sayaç olarak gösteriliyor. (3214854)
- JIT'yi devre dışı bırakma (root / çalışma zamanı yeniden başlatma gerektirir) ve cihaz performansı/test durumunu sıfırlama için deneysel komut dosyaları ekleyin. Bunlar şu anda gradle görevleri olarak yayınlanmıyor. (7c3732b)
- Emülatörde çalıştırırken testleri atlamak için karşılaştırma bağımsız değişkeni eklendi.
automaticGenerationDuring
derlemesi etkinleştirildiğinde karşılaştırmalar, temel profil oluşturmayı da tetikler. Emülatör kullanılıyorsa bu işlem başarısız olur. YeniskipBenchmarksOnEmulator
bağımsız değişkeni sayesinde testi atlayabiliriz. (0c2ddcd) - Performans etkinleştirme mantığının API 23 ve sonraki sürümlerde çalışacak şekilde değiştirilmesi (2550048)
API Değişiklikleri
MacrobenchmarkRule.measureRepeated()
için mevcut deneyselPerfettoConfig
bağımsız değişkeni yeniExperimentalConfig
nesnesine taşındı.
Hata Düzeltmeleri
lockClocks.sh
yeniden deneme sayısını artırma (99e9dac)- Mevcutsa
nonMinified
ve karşılaştırma derleme türleri oluşturmayın. Bir hata nedeniyle,nonMinified
ve karşılaştırma derleme türleri mevcut olsa bile yeniden oluşturulacaktı. (e75f0a5) TraceSectionMetric
sonuçlarından sonlandırılmayan dilimleri yoksayabilirsiniz. (a927d20)sdk_
ön ekini dikkate alacak şekilde emülatör kontrolü iyileştirildi. (1587de8)- Çalışmayan paketleri
FrameTimingGfxInfoMetric
'te temizlenmiş olarak değerlendirin. (35cc79c) androidx.benchmark.cpuEventCounter
'ün, talimat dışı etkinlikler için bozuk değerler üretmesi sorunu düzeltildi. (06edd59)resumeTiming/runWithTimingDisabled
'ü, metrik öncelik sırasına uyacak şekilde düzeltin ve düşük öncelikli metriğin duraklatılması/devam ettirilmesinin yüksek öncelikli metrik sonuçları üzerindeki etkisini önemli ölçüde azaltın. Örneğin,cpuEventCounter.enable
enstrümantasyon bağımsız değişkeni aracılığıyla CPU performans sayaçları kullanılıyorsa duraklatma/devam ettirme işlemi gerçekleştiğinde timeNs artık önemli ölçüde azaltılmaz. (5de0968)
Sürüm 1.3
Sürüm 1.3.3
16 Ekim 2024
androidx.benchmark:benchmark-*:1.3.3
yayınlanır. 1.3.3 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- AVD cihazında boşluk olduğunda
CollectBaselineProfileTask
düzeltildi (Ia0225, b/371642809)
1.3.2 sürümü
2 Ekim 2024
androidx.benchmark:benchmark-*:1.3.2
yayınlanır. 1.3.2 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Firebase Test Lab'ın (FTL) Temel Profil Gradle Eklentisi'nden Temel Profil veya Makro Karşılaştırma sonucu dosyalarını çekememesi sorunu düzeltildi. (I2f678, b/285187547)
FTL'yi kullanmak için eklentiyi, aşağıdakilerle birlikte eklenti bloğundaki temel profil modülüne uygulayın:
plugins {
...
id("com.google.firebase.testlab")
}
Ardından Firebase Test Lab'i aşağıdakilerle yapılandırın:
firebaseTestLab {
// Credentials for FTL service
serviceAccountCredentials.set(file("credentials.json"))
// Creates one or more managed devices to run the tests on.
managedDevices {
"ftlDeviceShiba34" {
device = "shiba"
apiLevel = 34
}
}
// Ensures the baseline profile is pulled from the device.
// Note that this will be automated as well later with aosp/3272935.
testOptions {
results {
directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
}
}
}
Ayrıca, oluşturulan FTL cihazının temel profil uzantısına eklenmesi gerekir:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
1.3.1 sürümü
18 Eylül 2024
androidx.benchmark:benchmark-*:1.3.1
yayınlanır. 1.3.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Tüm temel profil uyarılarını engellemek için
androidx.baselineprofile.suppressWarnings
Gradle özelliği eklendi (I7c36e, b/349646646) - Temel Profil Gradle Eklentisi, sarmalayıcı oluşturmak yerine uygulama tarafından oluşturulmuşsa önceden var olan
nonMinified…
vebenchmark…
öğelerini kullanacak şekilde düzeltildi. (Ia8934, b/361370179) - Emülatörlerde
automaticGenerationDuringBuild
etkinleştirildiğindejava.lang.AssertionError: ERRORS (not suppressed): EMULATOR
düzeltildi. Testi atlamak için yeni bağımsız değişken kullanılır. (If3f51, b/355515798) - Mikro karşılaştırma küçültme -
org.junit.runner.notification.RunListener
alt sınıflarını karşılaştırma kitaplığı proguard'da tutma (Ic8ed5, b/354264743) TraceSectionMetric
değerini, sonlandırılmayan dilimleri yoksayacak şekilde düzeltin. Daha önce bu öğelerin, toplama veya minimum süreyi bulma sırasında -1 süreye sahip olduğu kabul ediliyordu. (If74b7)FrameTimingGfxInfoMetric
'te, işlem zaten çalışmıyorsa metriğin başlatılmasının kilitlenmesine neden olan sorun düzeltildi. (I6e412)
1.3.0 sürümü
21 Ağustos 2024
androidx.benchmark:benchmark-*:1.3.0
yayınlanır. 1.3.0 sürümü bu taahhütleri içerir.
1.2.0 sürümünden bu yana mikro karşılaştırma değişiklikleri
- Yöntem izleme, çoğu cihazda çalıştırılan mikro karşılaştırmalarda varsayılan olarak açıktır.
- Yöntem izleme, ölçümlerden sonra ayrı bir aşama olarak çalışır. Bu, tek bir karşılaştırma çalıştırmasında hem doğru ölçümlerin hem de yöntem izlemelerin çıktısını alınmasını sağlar.
- Bazı Android OS ve ART sürümlerindeki yöntem izleme, sonraki ölçüm aşamalarını etkiler. Bu sürümlerde yöntem izleme varsayılan olarak devre dışıdır ve Studio çıkışına bir uyarı yazdırılır.
- Ana iş parçacığı karşılaştırmaları ve ANR'ler
- Uzun süreler boyunca çalışırken ANR'leri önlemek için kullanıcı arayüzü iş parçacığı karşılaştırmaları (ör. Oluştur/Görüntüle kullanıcı arayüzleriyle etkileşimde bulunanlar) için
measureRepeatedOnMainThread
eklendi. - ANR'den kaçınma son tarihinin aşılması bekleniyorsa yöntem izlemeleri atlanır. Bu davranışı devre dışı bırakmak için
androidx.benchmark.profiling.skipWhenDurationRisksAnr
değerini false olarak ayarlayın (ANR'ler uzun CI çalıştırmalarında soruna neden olabileceğinden CI çalıştırmaları için önerilmez).
- Uzun süreler boyunca çalışırken ANR'leri önlemek için kullanıcı arayüzü iş parçacığı karşılaştırmaları (ör. Oluştur/Görüntüle kullanıcı arayüzleriyle etkileşimde bulunanlar) için
- Sadeleştirme
- Küçükleştirme etkinken mikro karşılaştırmayı iyileştirmek için yerleştirilmiş ProGuard kuralları
- Kitaplık modülünde küçültme/R8 özelliği için AGP 8.3 gerekir ve
build.gradle
'ınızdakiandroid.buildTypes.release.androidTest.enableMinification
aracılığıyla etkinleştirilebilir. - Ölü kodun kaldırılmasını önlemek için deneysel
BlackHole.consume()
API eklendi (If6812, b/286091643)
- Metrikler
- Deneysel CPU etkinlik sayıcı özelliği (
perf_event_open
'ten alınan metrikler, platformun çoğu sürümünde root erişimi gerektirir),InstrumentationArgument
androidx.benchmark.cpuEventCounter.enable
üzerinden erişim (true
olarak ayarlanabilir) veandroidx.benchmark.cpuEventCounter.events
örneğin (Instructions,CpuCycles
) olarak ayarlanabilir. Bu özellik bazı userdebug emülatörlerinde desteklenmelidir ancak destek, mevcut tüm emülatörlerde test edilmemiştir
- Deneysel CPU etkinlik sayıcı özelliği (
1.2.0 sürümünden bu yana MACRObenchmark değişiklikleri
- Makro karşılaştırmalar için yöntem izlemede kapsamlı iyileştirme.
- Artık yöntem izlemeleri,
measureBlock
süresine göre kapsamlandırılıyor ve süreç birden çok kez başlatılırsa birden çok oturum yakalanabiliyor. - Daha önce yöntem izleme yalnızca
StartupMode.COLD
karşılaştırmaları için çalışır ve hedef işlemi yeniden başlatmayanmeasureBlocks
için hiçbir şey yakalamazdı - Sabit yöntem izlerinin makro karşılaştırmada temizlenmesi sayesinde yöntem izleri daha yavaş cihazlarda bile tamamen yakalanır ve geçerli olur. (I6349a, b/329904950)
- Artık yöntem izlemeleri,
- İşlem sonlandırılırken
warmUp
ölçümlerinin daha doğru olması için her birwarmUp
iterasyonunda ART profilini doğru şekilde boşaltma.CompilationMode.Partial(warmup=N)
(I17923) - Drop Shader yayın hatası mesajı
- Gölgelendirici yayın hatası mesajını düşürmek için hata ayıklama önerileri eklendi
ProfileInstaller
1.3 olmadan uygulamaları karşılaştırırken kilitlenmelerin önüne geçmek için gölge düşürme davranışını geçersiz kılmak üzere iki enstrümantasyon bağımsız değişkeni ekleyin:androidx.benchmark.dropShaders.enable=true/false
: Özellikle henüz profileinstaller 1.3'ü kullanmayan uygulamaların karşılaştırmasını yaparken tüm gölgelendirici bırakma işlemlerini (StartupMode.Cold
başlatmalarında yapılanlar dahil) atlamak için kullanılabilir.androidx.benchmark.dropShaders.throwOnFailure=true/false
: Örneğin, profileinstaller 1.3 (I4f573) olmadan uygulamaları karşılaştırırken gölgelendirici bırakmaya çalışırken hataları tolere etmek için kullanılabilir.
- Tamamen özelleştirilmiş Perfetto izleme 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 neden olabileceğini unutmayın. (Idfd3d, b/309841164, b/304038384) - Girişimi azaltmak için makro karşılaştırma çalıştırmadan önce arka planda dexopt işlerini iptal edin. (I989ed)
- Makro karşılaştırma artık hedef uygulamanın bir ART profilini temizlemesi için 1 saniye bekler (daha önce 500 ms beklerdi). (I85a50, b/316082056)
- TraceSectionMetric'te kapsamlı değişiklik
- Not: Aşağıdaki
TraceSectionMetric
değişiklikleri, CI kullanımındaki çıkışları etkileyebilir, kesinti oluşturabilir veya ayrıştırmayı bozabilir. - Bu metriğin çoğu kullanımı tekrarlanan etkinlikler için olduğundan ve bu durumlarda ilk olarak veriler atılacağından toplam artık varsayılan değerdir.
- Daha fazla modla daha özelleştirilebilir hale getirildi
- Mod adları artık metrik çıkış adına yerleştirildi (Studio ve JSON'da)
- Artık
Trace.{begin|end}AsyncSection
kullanılarak oluşturulan dilimleri desteklemektedir.
- Not: Aşağıdaki
- Metrikler
- Güç:
PowerMetric.deviceSupportsHighPrecisionTracking
,PowerMetric.deviceBatteryHasMinimumCharge()
vePowerMetric.deviceSupportsPowerEnergy()
eklendi - Döndürülen türle eşleşecek şekilde
Metric.getResult
,getMeasurements
olarak yeniden adlandırıldı - Tüm başlangıç algılama hatalarına log.w / exception etiketleri eklendi. Bu, mevcut davranışı değiştirmez (bu nedenle bazı hatalar atılır ve diğerleri sessizce başlangıcı algılamaz), yalnızca daha anlaşılır hale getirir. Genellikle
Log.w()
olan ve başlangıç metriklerini raporlayamayanlar, çerçeve dışı etkinliklerin eksik olduğu ve başlangıç algılandığında çerçeve zamanlama bilgileri (UI/RT dilimlerinden) hariç istisnaların atandığı etkinliklerdir. (Id240f, b/329145809) - Oluşturulan kare sayısı değiştiği için ölçümlerin değiştiği senaryoların keşfedilmesine yardımcı olmak amacıyla
FrameTimingMetric
ölçümüFrameTimingMetric
'a eklendi (yeni animasyonlar eklendi, geçersiz kılma sorunları düzeltildi).frameCount
(I1e5aa) - Dokümanlar'da mevcut olduğunda izleme için tercih edilen metriğin
frameOverrunMs
olduğunu ve nedenini açıkladık. (I18749, b/329478323) - İzlemenin başında ve sonunda bitmemiş karelerin birlikte eşlenebildiği ve bunun da son derece uzun tek bir kare olarak yanlış raporlandığı sorun düzeltildi. (I39353, b/322232828)
- Çerçeve üretilmediğinde
FrameTimingMetric
hatasını iyileştirin ve sorunun teşhis edilmesine yardımcı olmak için metrik ayrıştırma başarısız olduğunda her zaman izleme bağlantısını çıkışa gönderin. (I956b9) - Özellikle belirli OEM cihazlarda çerçeve kimliğinin ayrıştırılamaması nedeniyle
FrameTimingMetric
'te yaşanan kilitlenme düzeltildi. (Ia24bc, b/303823815, b/306235276) FrameMetrics
'teki kontrollerin katılığı azaltıldı ve hata mesajlarına daha fazla ayrıntı eklendi. (İadede)
- Güç:
1.2.0'den beri temel profil yakalama / Gradle eklentisi değişiklikleri
- AGP'nin önerilen maksimum sürümü 9.0.0-alpha01 olarak artırıldı.
mergeArtProfile
vemergeStartupProfile
görevlerinin her zaman temel profil oluşturma işlemini beklediğinden emin olun. (I623d6, b/343086054)- Başlangıç profili başarıyla oluşturulduğunda, değişikliklerin özeti gösterilir (I824c8, b/269484510)
- Uyarıları devre dışı bırakmak için DSL eklendi (Ic4deb, b/331237001)
automaticGenerationDuringBuild
devre dışıyken karşılaştırmalarda oluşturulan referans profillerin kullanılmasını sağlamak için düzeltme (Ic144f, b/333024280)nonMinified
veya karşılaştırma derleme türünü özelleştirirken temel profil oluşturma ve karşılaştırma özelliğini etkinleştirmek içinBaselineProfile
gradle eklentisi mülk geçersiz kılma işlemlerini düzeltin. (Ib8f05, b/324837887)- AGP 8.3.0-alpha15'ten önceki sürümlerde kitaplık temel profillerinin AAR'a dahil edilmesiyle ilgili düzeltme. (I1d2af, b/313992099)
- Oluşturma görevinin sonunda ana hat ve başlangıç profili çıkış URL'si düzeltildi. (I802e5, b/313976958)
1.2.0 sürümünden bu yana yapılan diğer önemli değişiklikler
- Trace yakalama
- Perfetto başlatılırken EXITCODE 2 hatası, hata yerine günlük kaydı yapılan uyarıya dönüştürüldü
- Karşılaştırmalarda varsayılan olarak AIDL izlemeyi etkinleştirme(API 28 gerekir) (Ia0af2, b/341852305)
- Karşılaştırmalarda varsayılan olarak taşıyıcı etiketi izlemeyi etkinleştirin. Örneğin, wakelock izleme noktaları bu şekilde yakalanır. (Icfe44, b/286551983)
- Daha yavaş cihazlarda izlemeye başlarken kilitlenmelerin önüne geçmek için izleme yakalama başlangıç zaman aşımı artırıldı (I98841, b/329145808)
- JSON, textproto ve proto binary (kodlanmamış) varyantları içeren herkese açık API
PerfettoTraceProcessor.Session.queryMetrics
API'leri eklendi. Bu yöntemler,TraceProcessor
(I54d7f, b/304038382) içinde yerleşik olan metrikleri sorgulamanıza olanak tanır. - İzlemenin başlangıcında veri eksikliği riskini azaltmak için Perfetto izleme kaydında başlangıç engellemesini etkinleştirin. Yalnızca API 33 ve sonraki sürümlerde desteklenir. (Ie6e41, b/310760059)
- JSON çıkışı
- JSON çıkışında karşılaştırma bağlamında ek bilgiler eklendi:
context.artMainlineVersion
: Art ana hat modülünün tam sayı sürümü (cihazda varsa, aksi takdirde-1
)context.build.id
: android.os.Build.ID ile eşittir.context.build.version.codename
: android.os.Build.VERSION.CODENAME ile eşittir.context.build.version.abbreviatedCodename
: Sürüm öncesi kod adının ilk harfine karşılık gelir (sürüm yapıları dahil) (Ie5020)
- Profil oluşturma izleriyle ilgili daha kolay araç kullanımı için JSON çıkışına
profilerOutput
listesi eklendi (ör. Perfetto, yöntem izleri) (I05ddd, b/332604449) - Android Test Orchestrator, karşılaştırma modüllerinde kullanıldığında modül başına çıkış JSON dosyalarının tekrar tekrar üzerine yazılmasına neden olacağından, bu duruma karşı bir uyarı eklendi. (Ia1af6, b/286899049)
- Dosya yazarken veya son işleme uygularken belirsiz kilitlenmelerin önüne geçmek için dosya adları 200 karakterden uzun olduğunda hata atma. (I4a5ab)
- JSON çıkışında karşılaştırma bağlamında ek bilgiler eklendi:
Sürüm 1.3.0-rc01
7 Ağustos 2024
androidx.benchmark:benchmark-*:1.3.0-rc01
yayınlanır. 1.3.0-rc01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Talimat dışı etkinlikler için bozuk değerler üreten
androidx.benchmark.cpuEventCounter
sorununu düzeltme (I7386a, b/286306579) resumeTiming
/runWithTimingDisabled
'ü, metrik öncelik sırasına uyacak şekilde düzeltin ve düşük öncelikli metriğin duraklatılması/devam ettirilmesinin yüksek öncelikli metrik sonuçları üzerindeki etkisini önemli ölçüde azaltın. Örneğin,cpuEventCounter.enable
enstrümantasyon bağımsız değişkeni aracılığıyla CPU performans sayaçları kullanılıyorsa duraklatma/devam ettirme işlemi gerçekleştiğinde timeNs artık önemli ölçüde azaltılmaz. (I39c2e, b/286306579, b/307445225)- Grup örnekleme dönüşümünü ana iş parçacığının dışına taşıyarak
measureRepeatedOnMainThread
'ün ana iş parçacığındaki katı zaman aşımına ulaşmasına neden olan grup örnekleme olasılığı azaltıldı. (I487a8, b/342237318) - Yeni platform API'lerine erişim manuel olarak belirtilmemiştir. Bunun nedeni, AGP 7.3 veya sonraki sürümlerde R8 kullanıldığında (ör. R8 3.3 sürümü) ve AGP 8.1 veya sonraki sürümlerde tüm derlemelerde (ör. D8 8.1 sürümü) API modelleme aracılığıyla otomatik olarak gerçekleşmesidir. AGP kullanmayan müşterilerin D8 8.1 veya sonraki bir sürüme güncellemeleri önerilir. Daha fazla bilgi için bu makaleye göz atın. (I9496c, b/345472586)
- Paket adını instr bağımsız değişkeni olarak göndermek için agp sürümü kontrolü eklendi. AGP 8.4.0'dan önceki sürümlerde hedef uygulama paketi adı, enstrümantasyon bağımsız değişkenleri aracılığıyla enstrümantasyon uygulamasına gönderilemez. (0c72a3f)
Sürüm 1.3.0-beta02
10 Temmuz 2024
androidx.benchmark:benchmark-*:1.3.0-beta02
yayınlanır. 1.3.0-beta02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Perfetto'yu başlatırken EXITCODE
2
değerini düzgün bir şekilde ele alarak uyarıyı günlüğe kaydedin ancak devam edin.
Sürüm 1.3.0-beta01
12 Haziran 2024
androidx.benchmark:benchmark-*:1.3.0-beta01
yayınlanır. 1.3.0-beta01 sürümü 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 ölü kodun kaldırılmasını önlemek için deneysel
BlackHole.consume()
api eklendi. (If6812, b/286091643) - Mikro karşılaştırma, yöntem izlemenin ölçümlere müdahale etmesini önlemek için artık doğru şekilde atılır. Bu durum, yöntem izleme zorla etkinleştirildiğinde (instrumentation args veya
MicrobenchmarkConfig
aracılığıyla) ve bir yöntem izleme işleminden sonra ölçüm denemesi yapıldığında belirli cihazlarda ortaya çıkar. Etkilenen cihazlar API 26-30'u veya bu girişimden etkilenen belirli ART ana hat modülü sürümlerini çalıştırıyor veProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice
aracılığıyla çalışma zamanında algılanabilir. (Iafb92, b/303660864)
Hata Düzeltmeleri
- Önerilen maksimum agp sürümü 9.0.0-alpha01 olarak değiştirildi. (I5bbb0)
- Karşılaştırma bağlamına derleme modu eklendi (If5612, b/325512900)
- AIDL izlemeyi varsayılan olarak etkinleştirme (API 28 gerektirir) (Ia0af2, b/341852305)
- JSON çıkışında karşılaştırma bağlamında ek bilgiler eklendi:
context.artMainlineVersion
: Art ana hat modülünün tam sayı sürümü (cihazda varsa, aksi takdirde -1)context.build.id
:android.os.Build.ID
değerine eşitcontext.build.version.codename
:android.os.Build.VERSION.CODENAME
değerine eşitcontext.build.version.abbreviatedCodename
: Sürüm öncesi kod adının ilk harfine karşılık gelir (sürüm yapılarında bile) (Ie5020)
StackSampling
'üandroidx.benchmark.profiling.sampleDurationSeconds
'e uygun olacak şekilde düzeltme (Ib1d53)- Makro->ortak bağımlılık değerini
api()
olarak değiştirin. BöylecePerfettoTrace
vePerfettoConfig
gibi öğeleri daha kolay kullanabilirsiniz. (Icdae3, b/341851833) mergeArtProfile
vemergeStartupProfile
görevlerinin her zaman temel profil oluşturma işlemini beklediğinden emin olun. (I623d6, b/343086054)- Varyantın etkinleştirilip etkinleştirilmeyeceğine karar verirken varyantın etkinleştirme durumunu göz önünde bulundurun. (I5d19e, b/343249144)
- Perfetto izleme işleyicisi için varsayılan başlangıç 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ınlanır. 1.3.0-alpha05 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Makro karşılaştırma metriği tüm iterasyonlar için sıfır değer döndürdüğünde daha net bir istisna atma (Iab58f, b/314931695)
- Dinleyici kuralları ve gözlemlenen diğer uyarılar / hatalar için destek de dahil olmak üzere microbench proguard kurallarına ek geçici çözüm kuralları eklendi. (I14d8f, b/329126308, b/339085669)
- Yöntem izleme, makro karşılaştırma 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ını bırakmak için 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ınlanır. 1.3.0-alpha04 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Tamamen özelleştirilmiş Perfetto izleme 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 neden olabileceğini unutmayın. (Idfd3d, b/309841164, b/304038384) - Netlik için
PowerMetric.deviceSupportsPowerEnergy
'üPowerMetric.deviceSupportsHighPrecisionTracking
olarak yeniden adlandırın (I5b82f) - Cihazın güç ölçüm kapasitesine göre karşılaştırmaları değiştirmeyi veya atlamayı etkinleştirmek için
PowerMetric.deviceBatteryHasMinimumCharge()
vePowerMetric.deviceSupportsPowerEnergy()
eklendi. (I6a591, b/322121218)
Hata Düzeltmeleri
- Önceki referans profille (I824c8, b/269484510) karşılaştırma eklendi
- Uyarıları devre dışı bırakmak için DSL eklendi (Ic4deb, b/331237001)
- Karşılaştırma varyantları devre dışı bırakıldığında istisna, bilgi günlüğüne değiştirildi (I8a517, b/332772491)
- Makro karşılaştırma için yöntem izlemelerini yakalamayı basitleştirin. Bu yöntem, gerçek
measureBlock()
süresine göre kapsamlandırılır. Daha önce, hedef işlem başlatılırken başlıyordu ve yalnızca baştan başlatmayı destekliyordu (Iee85a, b/300651094) - perfetto izleme işlemcisi yavaş başladığında kilitlenmeyi önleyin (I98841, b/329145808)
Sürüm 1.3.0-alpha03
17 Nisan 2024
androidx.benchmark:benchmark-*:1.3.0-alpha03
yayınlanır. 1.3.0-alpha03 sürümü bu taahhütleri içerir.
Yeni Özellikler
- JSON, textproto ve proto ikili (kodlanmamış) varyantları içeren herkese açık API
PerfettoTraceProcessor.Session.queryMetrics
API'leri ekler. Bu yöntemler, TraceProcessor'a (I54d7f, b/304038382) yerleşik metrikleri sorgulamanıza olanak tanır. - Profil oluşturma izleriyle ilgili daha kolay araç kullanımı için JSON çıkışına
profilerOutput
eklendi (ör. perfetto, yöntem izleri). (I05ddd, b/332604449) - Perfetto yapılandırmasını karşılaştırmak için güç etiketi eklendi. Örneğin, wakelock izleme noktaları bu şekilde yakalanır. (Icfe44, b/286551983)
- inst bağımsız değişkeni
androidx.benchmark.profiling.skipWhenDurationRisksAnr
eklendi. Beklenen süre ANR'ye neden olabileceğinde yöntem izlemelerinin atlanmasına engel olmak için false olarak ayarlanabilir. CI çalıştırmalarında bu ayarın kullanılmaması önemle tavsiye edilir. - Deneme amaçlı inst bağımsız değişkeni
androidx.benchmark.profiling.perfCompare.enable
eklendi. Ölçüm ve profil oluşturma aşamaları arasındaki karşılaştırma zamanlamasını çalıştırmak için bunu doğru olarak ayarlayın. Örneğin, yöntem izlemenin ek maliyetini değerlendirmede yararlıdır. (I61fb4, b/329146942)
API Değişiklikleri
TraceSectionMetric.Mode
, kapsamlı when ifadelerine zarar vermeden gelecekte genişletmeyi etkinleştirmek için mühürlü sınıf olarak değiştirildi (I71f7b)TraceSectionMetric.Mode.Average
ve.Count
eklendi ve daha yaygın olan bağımsız değişken (mod) bağımsız değişken listesinin başlarında olacak şekilde bağımsız değişkenler yeniden sıralandı. Böylece, parametre adlarını belirtme ihtiyacı azaltıldı. (Ibf0b0, b/315830077, b/322167531)- İade türüne uyacak şekilde
Metric.getResult
,getMeasurements
olarak yeniden adlandırıldı (I42595)
Hata Düzeltmeleri
automaticGenerationDuringBuild
devre dışıyken karşılaştırmalarda oluşturulan referans profillerin kullanılmasını sağlamak için düzeltme (Ic144f, b/333024280)nonMinified
veya karşılaştırma derleme türünü özelleştirirken temel profil oluşturma ve karşılaştırma özelliğini etkinleştirmek içinBaselineProfile
gradle eklentisi mülk geçersiz kılma işlemlerini düzeltin. (Ib8f05, b/324837887)- Sabit yöntem izlerinin makro karşılaştırmada temizlenmesi sayesinde yöntem izleri daha yavaş cihazlarda bile tamamen yakalanır ve geçerli olur. (I6349a, b/329904950)
- İzlemenin başlangıcında veri eksikliği riskini azaltmak için Perfetto izleme kaydında başlangıç engellemesini etkinleştirin. Yalnızca API 33 ve sonraki sürümlerde desteklenir. (Ie6e41, b/310760059)
- Android Test Orchestrator, karşılaştırma modüllerinde kullanıldığında modül başına çıkış JSON dosyalarının tekrar tekrar üzerine yazılmasına neden olacağından, bu duruma karşı bir uyarı eklendi. (Ia1af6, b/286899049)
- Cihaz yerel ayarını yok sayarak Studio çıkışında tutarlılık için "," (virgülü) bin ayırıcı olarak zorunlu kıl (I3e921, b/313496656)
TraceSectionMetric
artıkTrace.{begin|end}AsyncSection
kullanılarak oluşturulan dilimleri destekliyor. (I91b32, b/300434906)- Tüm başlangıç algılama hatalarına log.w / exception etiketleri eklendi. Bu, mevcut davranışı değiştirmez (bu nedenle bazı hatalar atılır ve diğerleri sessizce başlangıcı algılamaz), yalnızca daha anlaşılır hale getirir. Genellikle
Log.w()
olan ve başlangıç metriklerini raporlayamayanlar, çerçeve dışı etkinliklerin eksik olduğu ve başlangıç algılandığında çerçeve zamanlama bilgileri (UI/RT dilimlerinden) hariç istisnaların atandığı etkinliklerdir. (Id240f, b/329145809) - Girişimi azaltmak için makro karşılaştırma çalıştırmadan önce arka planda dexopt işlerini iptal edin. (I989ed)
- Oluşturulan kare sayısı değiştiği için ölçümlerin değiştiği senaryoların keşfedilmesine yardımcı olmak amacıyla
frameCount
ölçümüFrameTimingMetric
'a eklendi (yeni animasyonlar eklendi, geçersiz kılma sorunları düzeltildi). (I1e5aa) - Dokümanlar'da mevcut olduğunda izleme için tercih edilen metriğin
frameOverrunMs
olduğunu ve nedenini açıkladık. (I18749, b/329478323)
Sürüm 1.3.0-alpha02
20 Mart 2024
androidx.benchmark:benchmark-*:1.3.0-alpha02
yayınlanır. 1.3.0-alpha02 sürümü bu taahhütleri içerir.
Yeni Özellikler
Yerleşik proguard kuralları aracılığıyla mikro testte deneysel R8 desteği. Bu desteğin deneysel olduğunu ve kitaplık modülü testlerinin küçültülmesi için AGP 8.3'ün gerekli olduğunu unutmayın. Karşılaştırma modülünüzün
build.gradle
bölümünde R8 küçültme/optimizasyonu 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
- Yöntem izleme uyarısının, mikro test çıkışından ayrı bir satırda gösterilmesi düzeltildi. (I0455c, b/328308833)
Sürüm 1.3.0-alpha01
21 Şubat 2024
androidx.benchmark:benchmark-*:1.3.0-alpha01
yayınlanır. 1.3.0-alpha01 sürümü bu taahhütleri içerir.
API Değişiklikleri
- "Olması gerekir" kelimesinin gereksiz kullanımını ö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 dokunan karşılaştırmalar) özellikle CI'deki büyük paketler sırasında ANR'leri tetiklemesini önlemek için
BenchmarkRule.measureRepeatedOnMainThread
eklendi. (I5c86d) - Perfetto izlemesinden ayıklanan ölçümler yerine doğrudan platformdan gelen ölçümlerin kullanıldığı
FrameTimingMetric
'un deneysel alternatif bir uygulaması olanFrameTimingGfxInfoMetric
eklendi. (I457cb, b/322232828) - Ayrı
warmUp
iterasyonları sırasında bir ART profilini dökme özelliği eklendi. (I17923) TraceSectionMetric
API'de yapılan birkaç değişiklik:Mode.Min
,Mode.Max
ekleyin- Bölüm adını metrik etiketi olarak geçersiz kılmak için etiket bağımsız değişkeni ekleme
- Metrik anlamını netleştirmek için çıkışa mod adı eklendi
- Bu metriğin çoğu kullanımı tekrarlanan etkinlikler için olduğundan varsayılan değer toplam olarak değiştirildi. CI kullanımında bu değişikliklerin kesinti oluşturabileceğinden veya ayrıştırmayı bozabileceğinden dikkatli olun. (Ic1e82, b/301892382, b/301955938)
Hata Düzeltmeleri
- Belirtilen yönetilen cihaz mevcut olmadığında temel profil gradle eklentisinde geliştirilmiş hata mesajı (Idea2b, b/313803289)
- AGP 8.3.0-alpha15'ten önceki sürümlerde kitaplık temel profilinin AAR'a eklenmesi için düzeltme (I1d2af, b/313992099)
- Oluşturma görevinin sonunda temel 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üzeltmek için veri kaynağı zaman aşımlarını ayarladıkProfileInstaller
1.3 olmadan uygulamaları karşılaştırırken kilitlenmelerin önüne geçmek için gölgelendirici bırakma davranışını geçersiz kılmak üzere iki enstrümantasyon bağımsız değişkeni ekleyin:androidx.benchmark.dropShaders.enable=true/false
: Özellikle henüz profileinstaller 1.3'ü kullanmayan uygulamaların karşılaştırmasını yaparken tüm gölgelendirici bırakma işlemlerini (StartupMode.Cold
başlatmalarında yapılanlar dahil) atlamak için kullanılabilir.androidx.benchmark.dropShaders.throwOnFailure=true/false
: Örneğin, profileinstaller 1.3 (I4f573) olmadan uygulamaları karşılaştırırken gölgelendirici bırakmaya çalışırken hataları tolere etmek için kullanılabilir.
- Birkaç saniyeden uzun sürmesi beklenen durumlarda kullanıcı arayüzü iş parçacığında yöntem izlemeyi atla ve hata oluştuğunda yöntem izlemeleri temizle. (I6e768)
- Dosya yazarken veya son işleme uygularken belirsiz kilitlenmelerin önüne geçmek için dosya adları 200 karakterden uzun olduğunda hata atma. (I4a5ab)
- İzlemenin başında ve sonunda bitmemiş karelerin birlikte eşlenebildiği ve bunun da son derece uzun tek bir kare olarak yanlış raporlandığı sorun düzeltildi. (I39353, b/322232828)
- API 30-33'te bir paketi yeniden yüklerken kullanıcı derlemelerindeki ART profillerini temizlemek için API 30 ve sonraki sürümlerde
--skip verification
kullanın. Bu sayede, bazı cihaz sınıflarında hataya neden olan Play Protect uyarılarını atlayabilirsiniz. (Ic9e36) - Sistem kullanıcı arayüzü veya başlatıcı gibi bir sistem uygulaması olmayan uygulamaları kapatmak için
am force-stop
simgesini kullanın. (I5e028) - Makro karşılaştırma artık hedef uygulamanın bir ART profilini temizlemesi için
1 second
değerini bekler (önceden500 ms
değerini beklerdi). (I85a50, b/316082056) - Çerçeve üretilmediğinde
FrameTimingMetric
hatasını iyileştirin ve sorunun teşhis edilmesine yardımcı olmak için metrik ayrıştırma başarısız olduğunda her zaman izleme bağlantısını çıkışa gönderin. (I956b9) - Özellikle belirli OEM cihazlarda çerçeve kimliğinin ayrıştırılamaması nedeniyle
FrameTimingMetric
'te yaşanan kilitlenme düzeltildi. (Ia24bc, b/303823815, b/306235276) FrameMetrics
'teki kontrollerin katılığı azaltıldı ve hata mesajlarına daha fazla ayrıntı eklendi. (İadede)
Sürüm 1.2
1.2.4 sürümü
17 Nisan 2024
androidx.benchmark:benchmark-*:1.2.4
yayınlanır. 1.2.4 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Karşılaştırma varyantlarında temel profil srcset'inin ayarlanmaması sorunu düzeltildi. Ayrıca, döngüsel bağımlılıklara neden olan kitaplıklardaki
automaticGenerationDuringBuild
sorunlarını da düzeltir. (I28ab7, b/333024280) - Sistem kullanıcı arayüzü veya başlatıcı gibi bir sistem uygulaması olmayan uygulamaları kapatmak için
am force-stop
simgesini kullanın. Bu, işlem sonlandırma işleminin tam olarak başarılı olmaması nedeniyleStartupMode.COLD
karşılaştırmalarının "Package $package must not be running prior to cold start!" (Sıfırdan başlatmadan önce $package paketi çalışmamalıdır.) hatasıyla kilitlenmesi sorununu düzeltir. (I5e028)
Sürüm 1.2.3
24 Ocak 2024
androidx.benchmark:benchmark-*:1.2.3
yayınlanır. 1.2.3 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- AGP sürümü 8.3.0 veya daha yeni olduğunda Temel Profil Gradle Eklentisi'nden istisna kaldırıldı.
- AGP 8.3.0-alpha15'ten önceki sürümlerde kitaplık temel profillerinin AAR'a dahil edilmesiyle ilgili düzeltme.
1.2.2 sürümü
1 Aralık 2023
androidx.benchmark:benchmark-*:1.2.2
yayınlanır. 1.2.2 sürümü bu taahhütleri içerir.
Temel Profiller
- Yürütme günlükleri, temel 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ınlanır. 1.2.1 sürümü bu taahhütleri 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ırma entegrasyonunu desteklemek için mülkler eklendi (b/309805233), (b/309116324)
Sürüm 1.2.0
18 Ekim 2023
androidx.benchmark:benchmark-*:1.2.0
yayınlanır. 1.2.0 sürümü bu taahhütleri içerir.
1.1.0 sürümünden bu yana yapılan önemli değişiklikler
Temel Profiller
- Yeni Referans Profil Gradle Eklentisi, referans profillerin yakalanmasını ve test ve derleme iş akışınıza dahil edilmesini otomatikleştirir.
BaselineProfileRule.collect
artık kararlı. Önceki deneyselBaselineProfileRule.collectBaselineProfile
API'sinin basitleştirilmiş bir sürümüdür.packageName
değerini belirtip uygulamanızı çalıştırmanız yeterlidir.
- Temel profiller oluşturan kitaplıklarda artık kodda (
BaselineProfileRule.collect
bağımsız değişkeni) veya daha da basit bir şekilde gradle eklentisinde oluşturulan kuralları filtreleyebilirsiniz. - Düzeltmeler
- Android U+'de temel profil toplama sorunu düzeltildi (Id1392, b/277645214)
Makro karşılaştırma
- Derleme
- Makro karşılaştırma artık her derleme için derleme durumunu doğru şekilde tamamen sıfırlıyor. Bunun için APK'nın Android 14'ten önce yeniden yüklenmesi gerekir. Bu nedenle, ölçülen durumdaki durumu (kullanıcı girişi gibi) korumak istiyorsanız Android 14 ve sonraki sürümlerde karşılaştırma yapmanızı önemle tavsiye ederiz.
- Ayrıca, uygulama derlemesini ayrı olarak kontrol ederek ve
CompilationMode.Ignore()
veya enstrümantasyon bağımsız değişkeni ile derlemeyi atlayarak bu sorunun üstesinden gelebilirsiniz.
Araçlar bağımsız değişkenleri
- Daha hızlı doğrulama çalıştırmaları (ör. karşılaştırma testi oluştururken veya göndermeden önce) için
androidx.benchmark.dryRunMode.enable
enstrümantasyon bağımsız değişkeni desteği (mikro karşılaştırma testinde zaten mevcuttur) androidx.benchmark.profiling.mode=StackSampling
veMethodTracing
için destek- Çalışma zamanı filtreleme ana profil ile makro karşılaştırma kuralı testlerine izin vermek için
androidx.benchmark.enabledRules
eklendi - tracing-perfetto ile izlemeyi etkinleştirmek için
androidx.benchmark.perfettoSdkTracing.enable
bağımsız değişkeni eklendi (ör. Oluşturma yeniden oluşturma izleme).StartupMode.COLD
ile kullanıldığında, izleme kitaplığı uygulama başlatılırken yüklendiği ve etkinleştirildiği için zamanlamanın önemli ölçüde etkileneceğini unutmayın.
- Daha hızlı doğrulama çalıştırmaları (ör. karşılaştırma testi oluştururken veya göndermeden önce) için
Şartlar
- Profil yakalama / sıfırlama ve gölgelendirici önbelleğini temizleme özelliklerini etkinleştirmek için makro karşılaştırma artık hedef uygulamada
ProfileInstaller
1.3.0 veya sonraki bir sürümün kullanılmasını gerektiriyor.
- Profil yakalama / sıfırlama ve gölgelendirici önbelleğini temizleme özelliklerini etkinleştirmek için makro karşılaştırma artık hedef uygulamada
Yeni Deneysel Metrik API'leri
- Uygulamanızdaki
trace("") {}
bloklarından basit zamanlama bilgilerini ayıklamaya olanak tanıyan deneyselTraceSectionMetric
veya Perfetto'nun tam sorgu özelliğinden yararlanmak için TraceMetric eklendiTraceProcessor
. - Güç kullanımı bilgilerini yakalamak için deneysel
PowerMetric
eklendi - Sayfa hatalarını saymak için deneysel
MemoryCountersMetric
eklendi - Sistem izlemelerinden (diğer adıyla Perfetto izlemeleri) metrik ayıklamak için şirket içinde 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 kilitlenmeler düzeltildi.
FrameTimingMetric
'nin tutarsız çerçeve kimliklerine sahip kareleri (genellikle API 31 ve sonraki sürümlerde dalgalanma sırasındaki kareler) yoksayması düzeltildi (I747d2, b/279088460)- 64 MB'tan büyük izlemelerde ayrıştırma hataları düzeltildi (Ief831, b/269949822)
- Cihaz (özellikle emülatör) işletim sistemi resmi, izleme veya derleme için doğru şekilde yapılandırılmamışsa hataların netleştirilmesi
- Pilsiz cihazlar (mikro ve makro) için pil seviyesi kontrolünü atlama
- Geçersiz çıkış dizinleri için daha net hatalar ve daha güvenli varsayılan değerler içeren iyileştirilmiş dosya çıkışı
- Gölgelendirici önbelleğini sürekli olarak bırakarak
StartupMode.COLD
'ün kararlılığı iyileştirildi (MacrobenchmarkScope.dropShaderCache
aracılığıyla da gösterilir) startActivityAndWait
için yedek dinlenme modu düzeltildi.
Mikro karşılaştırma
- Özellikler
- Profil oluşturma, diğer metriklerden sonra ayrı bir aşamaya taşındı. Böylece tek bir test çalıştırması hem doğru zamanlamayı hem de profil oluşturma sonuçlarını gösterebilir.
- Deneysel API'ler
- Özel metrikleri tanımlamak, izlemeyi ve profillemeyi yapılandırmak için deneysel
MicrobenchmarkConfig
API eklendi. Yöntem izlemeleri veya izleme noktaları yakalamak için kullanılabilir (ancak izleme yükü dikkate alınmalıdır). BenchmarkState
'iBenchmarkRule
'den ayrı olarak JUnit olmadan kontrol etmek için deneysel API'ler eklendi- Referans API'lerinden ayrı olarak özel yapılandırmayla Perfetto izlerinin yakalanmasını sağlamak için deneysel
PerfettoTrace
kaydı eklendi.
- Özel metrikleri tanımlamak, izlemeyi ve profillemeyi yapılandırmak için deneysel
- Düzeltmeler
- Android Studio karşılaştırma çıktısında başlangıçtaki boşlukların eksik olmasıyla ilgili geçici çözüm.
- Android Studio karşılaştırma çıktısında uyarıların yazdırılamaması sorunu düzeltildi.
- Android 13 (API 33) ve sonraki sürümlerde
SampledProfiling
kilitlenmesi düzeltildi. IsolationActivity
ve Perfetto izlemesi atlanarakdryRunMode
performansı büyük ölçüde iyileştirildi (Eski işletim sistemi sürümlerinde kuru çalıştırma modu 10 kata kadar daha hızlı).
Sürüm 1.2.0-rc02
6 Ekim 2023
androidx.benchmark:benchmark-*:1.2.0-rc02
yayınlanır. 1.2.0-rc02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Karşılaştırma dosyası çıkışını,
BaselineProfile
eklenti dosyasının kopyalanmasını artık bozmayacak şekilde düzeltin. Dosyalar oluşturuldu ve cihazdan kopyalandı ancak gradle eklentisinin göremeyeceği şekilde yeniden adlandırıldı. (I8dbcc, b/303034735, b/296453339) - Makro karşılaştırma modülünden hedef uygulamaya enjekte edilirken
tracing-perfetto
yükleme hata mesajları açıklandı.
Sürüm 1.2.0-rc01
20 Eylül 2023
androidx.benchmark:benchmark-*:1.2.0-rc01
yayınlanır. 1.2.0-rc01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Perfetto SDK izlemesi bir karşılaştırmada başlatılamadığında artık bir istisna (çözüm talimatlarıyla birlikte) atılıyor. (I6c878, b/286228781)
- ART yöntemi izlemesini -> perfetto biçimine dönüştürürken OOM kilitlenme sorununu düzeltin. (I106bd, b/296905344)
- (Makro karşılaştırma) Studio test çıkışında bağlandığında yöntem izleme etiketi netleştirildi ve yöntem izleme dosya adları, birden fazla karşılaştırma çalıştırıldığında üzerine yazılmaması için cihazda/ana makinede benzersiz olacak şekilde düzeltildi. (I08e65, b/285912360)
- Referans profili çekilirken cihazın açık kalmasını sağlar. (I503fc)
Sürüm 1.2.0-beta05
30 Ağustos 2023
androidx.benchmark:benchmark-*:1.2.0-beta05
yayınlanır. 1.2.0-beta05 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Temel Profil Gradle Eklentisi artık Android Gradle Eklentisi 8.3'ü desteklemektedir. (aosp/2715214)
Sürüm 1.2.0-beta04
23 Ağustos 2023
androidx.benchmark:benchmark-*:1.2.0-beta04
yayınlanır. 1.2.0-beta04 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Temel Profiller Gradle eklentisi artık Android Gradle Eklentisi 8.3'ü desteklemektedir. (aosp/2715214)
Hata Düzeltmeleri
- Dosya yazma / taşıma ve getirme (özellikle parametreli testlerden gelenler) ile ilgili hataları düzeltmek için çıkış dosya adlarını daha da temizleyin ve çıkış dosya adlarında "=" ve ":" karakterlerini kullanmayın. (I759d8)
Sürüm 1.2.0-beta03
9 Ağustos 2023
androidx.benchmark:benchmark-*:1.2.0-beta03
yayınlanır. 1.2.0-beta03 sürümü bu taahhütleri içerir.
API Değişiklikleri
TraceSectionMetric
değerini yalnızca hedef paketle filtrelemek için varsayılan olarak etkin olan bir bağımsız değişken eklendi (Ia219b, b/292208786)
Hata Düzeltmeleri
fullTracing.enable
enstrümantasyon bağımsız değişkeni, yapı adı ve diğer referanslarla tutarlı olması içinperfettoSdkTracing.enable
olarak yeniden adlandırıldı.fullTracing.enable
yedek olarak çalışmaya devam eder. (I7cc00)- Karşılaştırma kitaplığı dahili izleme 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 işlemin altına yerleştirilecek. (I6b2e7, b/293510459)
- API 31 ve sonraki sürümlerde makro karşılaştırma PROFİLLENEBİLİR DEĞİL hatası kaldırıldı ve köklü eng/userdebug cihazlarda profillenebilirlik kontrolü atlandı. (I2abac, b/291722507)
- Dex düzen optimizasyonları kullanılırken artık başlangıç profili kuralları da 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ınlanır. 1.2.0-beta02 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Mikro test özel metrikleri ve yapılandırması için deneysel API'ler eklendi (ör. profilleyici ve izleme). (I86101, b/291820856)
Hata Düzeltmeleri
- API 26/28 ARM64 emülatörlerinde kısa süre önce düzeltilen, işletim sistemi izleme için yanlış yapılandırıldığında macrobench'te hata bildirme. (I0a328, b/282191686)
- Bazı emülatörlerde bu sorun kısa süre önce düzeltildiği için derleme sıfırlama hatası ayrıntısına, emülatörü güncellemeyi önermek için bilgi eklendi. (I8c815, b/282191686)
androidx.test.uiautomator:uiautomator:2.2.0
'üimplementation
bağımlılık yerineapi
bağımlılık yapın. (I1981e)
Sürüm 1.2.0-beta01
18 Temmuz 2023
androidx.benchmark:benchmark-*:1.2.0-beta01
yayınlanır. 1.2.0-beta01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Studio'daki karşılaştırma çıktısında bazen uyarıların atlanması ve karşılaştırma çıktısındaki boşlukların Studio'da gösterilmemesi sorunlarını düzeltme (Ia61d0, b/227205461, b/286306579, b/285912360)
FrameTimingMetric
için yorum düzeltildi. Alt metriğin adıframeDurationCpuMs
. (Ib097f, b/288830934).
Sürüm 1.2.0-alpha16
21 Haziran 2023
androidx.benchmark:benchmark-*:1.2.0-alpha16
yayınlanır. 1.2.0-alpha16 sürümü bu taahhütleri 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 makro karşılaştırma desteği. (I7ad37, b/285912360)- Mikro karşılaştırma profillemesi ayrı bir aşamaya taşındı. Bu nedenle, ölçümü değiştirmek yerine ölçümden sonra sırayla gerçekleşir.
MethodTracing
izleme bölümleri de artık yakalanan Perfetto izlemeye (varsa) dahil ediliyor. (I9f657, b/285014599) Mode.Sum
ileTraceSectionMetric
'e sayım ölçümü ekleyin. (Ic121a, b/264398606)
Sürüm 1.2.0-alpha15
7 Haziran 2023
androidx.benchmark:benchmark-*:1.2.0-alpha15
yayınlanır. 1.2.0-alpha15 sürümü bu taahhütleri 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 ekleme (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 kararlı temel profiller oluşturur.collectStableBaselineProfile
API'si kaldırıldı. Bunun yerinecollectBaselineProfile
kullanılmalıdır. (I17262, b/281078707)BaselineProfileRule
'ninfilterPredicate
bağımsız değişkeni, varsayılan filtre davranışının belgelerde daha net olması için eşdeğer bir varsayılan değerle null olmayan olarak değiştirildi. (I3816e)
Hata Düzeltmeleri
- Çalışma süresinin büyük bir kısmını kapladıkları için performansı önemli ölçüde artırmak amacıyla
dryRunMode
'teIsolationActivity
ve Perfetto izlemeyi devre dışı bırakın. (Ie4f7d) androidx.benchmark.profiling.mode=StackSampling
veandroidx.benchmark.profiling.sampleFrequency
enstrümantasyon testi bağımsız değişkenlerini kullanarak makro karşılaştırmalarda çağrı yığını örnekleme desteği. (I1d13b, b/282188489)- Android U (API 34) ve emülatörlerde gölgelendirici bırakıldığında oluşan kilitlenmeyi düzeltir. (I031ca, b/274314544)
Sürüm 1.2.0-alpha14
3 Mayıs 2023
androidx.benchmark:benchmark-*:1.2.0-alpha14
yayınlanır. 1.2.0-alpha14 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
FrameTimingMetric
'nin tutarsız çerçeve kimliklerine sahip kareleri yoksayması sorunu düzeltildi. Bu durum, son platform sürümlerindeki (API 31 ve sonraki sürümler) bazı animasyonların,RenderThread
animasyon sırasında (ör. dalgalanma sırasında) birçok kareyi yoksaymasına neden olur. (I747d2, b/279088460)- 64 Mb'tan büyük izlemeler için izleme işlemcisi ayrıştırma işlemi düzeltildi. (Ief831, b/269949822)
- Android U'da
pm dump-profiles
komutunun farklı çıkışı nedeniyle temel profil oluşturma işleminin başarısız olması düzeltildi. (Id1392, b/277645214) - GPU saat kilitleme komut dosyasını, dizeleri doğru şekilde karşılaştıracak şekilde düzeltin (I53e54, b/213935715)
Sürüm 1.2.0-alpha13
5 Nisan 2023
androidx.benchmark:benchmark-*:1.2.0-alpha13
yayınlanır. 1.2.0-alpha13 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Yakında kullanıma sunulacak başlangıç profili özelliğini desteklemek için temel profiller oluştururken profil türü parametresi eklendi (Ie20d7, b/275093123)
- Perfetto izleme içeriğine göre tamamen özel metrikler tanımlamak için yeni deneysel
TraceMetric
API eklendi. (I4ce31, b/219851406) - Karşılaştırma sırasında 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ınlanır. 1.2.0-alpha12 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Yeni temel profil gradle eklentisi alfa sürümünde yayınlandı. Bu eklenti, temel profil oluşturmayı kolaylaştırıyor ve geliştirici iş akışını basitleştiriyor.
API Değişiklikleri
- Hem mikro karşılaştırmaları hem de deneysel
PerfettoTrace
API'lerini içeren API 21 ve 22'de Perfetto izleme desteği kaldırıldı. Bu sürümden önce,UiAutomation
bağlantıları bazı cihazlarda güvenilir değildi. (I78e8c) - İzleme içeriğini ayrıştırmayı etkinleştirmek için
PerfettoTraceProcessor
için herkese açık deneysel API eklendi. Bu, Perfetto izleme verilerine dayalı tamamen özel metrikler oluşturma yolunda 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ınlanır. 1.2.0-alpha11 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Birden fazla APK içeren bir uygulama paketinden profilleri yeniden yüklerken veya çıkarırken
MacrobenchmarkRule
veBaselineProfileRule
'te yaşanan kilitlenmeler düzeltildi. (I0d8c8, b/270587281)
Sürüm 1.2.0-alpha10
22 Şubat 2023
androidx.benchmark:benchmark-*:1.2.0-alpha10
yayınlanır. 1.2.0-alpha10 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Android 14 ve sonraki sürümlerde Macrobenchmark, yeni bir platform özelliği sayesinde derleme durumunu sıfırlamak için artık hedef uygulamaları yeniden yüklemiyor. Daha önce, köklenmiş bir cihaza sahip olmak veya her karşılaştırma çalışmasının yürütülmesinden önce tüm uygulama durumlarının (ör. kullanıcı girişi) kaldırılmasıyla uğraşmak gerekiyordu. (I9b08c, b/249143766)
Hata Düzeltmeleri
- Derleme atlama nedeniyle boş profilde kilitlenmemesi için
DryRunMode
'ü düzeltin. Bunun yerine, tek bir iterasyon çalıştırır ve bir şey yakalandığından emin olmak için profili çıkarır. (I2f05d, b/266403227) - Eski API düzeylerinde güç istatistiklerinin bulunup bulunmadığını kontrol ederken
PowerMetric
kilitlenme sorunu düzeltildi. (5faaf9, b/268253898)
Sürüm 1.2.0-alpha09
11 Ocak 2023
androidx.benchmark:benchmark-*:1.2.0-alpha09
yayınlanır. 1.2.0-alpha09 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Tüm karşılaştırma / temel profil oluşturma işlemlerini devre dışı bırakmak için
None
'ünandroidx.benchmark.enabledRules
enstrümantasyon bağımsız değişkenine iletilmesini etkinleştirdi. (I3d7fd, b/258671856) - Uygulama modüllerinde (ör. kendi kendini enstrümante etmeyen test APK'ları)
PerfettoTrace
yakalama sorununu düzeltme (I12cfc) - Studio çıkışında temel profil adb çekme bağımsız değişkeni sırası düzeltildi (I958d1, b/261781624)
- Arm emülatör api 33, artık makro karşılaştırma çalıştırmaya çalışırken doğru şekilde tanınıyor ve uyarıyı doğru şekilde yazdırıyor. (69133b,b/262209591)
- Makro karşılaştırmada pilsiz cihazlarda pil seviyesi kontrolünü atlama (fe4114, b/232448937)
Sürüm 1.2.0-alpha08
7 Aralık 2022
androidx.benchmark:benchmark-*:1.2.0-alpha08
yayınlanır. 1.2.0-alpha08 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Test davranışını ve performansını incelemek için bir testin parçası olarak Perfetto izlerini (Sistem İzleri olarak da bilinir) yakalamak üzere deneysel yeni API'ler
PerfettoTrace.record {}
vePerfettoTraceRule
eklendi. (I3ba16) BaselineProfileRule
artık paket ön eklerinin listesi yerine filtre ön eklerinin listesini kabul ediyor. Bu sayede test, filtreleme üzerinde tam kontrol sahibi olur. (I93240)- Bir referans profilin N iterasyon boyunca kararlı hale gelmesini bekleyen deneysel bir API
BaselineProfileRule.collectStableBaselineProfile
ekleyin. (I923f3) BaselineProfileRule
kullanarak temel profiller oluştururken çıkış dosyası adı ön ekini belirtme özelliği eklendi. (I7b59f, b/260318655)
Hata Düzeltmeleri
- Dosya çıkışı yazma işleminin güvenliğini artırın. Bu, özellikle API 21 / 22'de çıkış dosyalarının sessizce yazılmamasını/eklenmemesini önler. (If8c44, b/227510293)
- Dosyayı doğru şekilde oluşturmak ve yerleştirmek için
simpleperf
izleme çıkışını düzeltin. Bu işlem, bir dosyanın gradle tarafından başarıyla çekilemediği sorunların genel olarak düzeltilmesini de sağlar. (I12a1c, b/259424099) - profileinstaller çok eski olduğunda yazdırılan profileinstaller hata mesajını iyileştirin. Artık bu mesajda, API 31 ile 33 arasındaki temel profilleri ölçmek için profileinstaller sürümünü (1.2.1) güncellemeniz gerektiği belirtiliyor. (Ia517f, b/253519888)
- Hata mesajında birkaç kabuk komutu hatası düzeltildi. Başarısız perfetto yakalama ikili kurulumu ve izleme yakalama hataları da dahil olmak üzere gerekli API'yi <=23 yazdırın (Ib6b87, b/258863685)
- Oluşturulan profil kurallarını zaman içinde değiştikçe (profil kurallarını kaynak denetimine eklerken) değişiklik sayısını en aza indirmek için otomatik olarak sıralayın. (Ie2509)
- Android 13 (API 33) ve önceki sürümlerin köklendirilmemiş derlemelerinde
Expected no stderr from echo 3 > /proc/sys/vm/drop_caches
mesajıyla yaşanan kilitlenme düzeltildi (I6c245, b/259508183)
Bilinen sorunlar
- MacrobenchmarkScope.dropShaderCache()
, profileinstaller manifest dosyasında henüz yayınlanmamış bir yayın sicil dairesi eksikliği nedeniyle kilitlenebilir. (I5c728, b/258619948) profileinstaller:1.3.0-alpha02
'teki sorunu gidermek için aşağıdakileri 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ınlanır. 1.2.0-alpha07 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Makro karşılaştırmalarda enerji ve gücü ölçmek için
PowerMetric
API'si eklendi. (Ife601, b/220183779) MacrobenchmarkScope.dropShaderCache()
, gölgelendirici önbelleğini gerçekten bırakacak şekilde düzeltildi. Bu sayede, gölgelendiriciler artık her iterasyonda tutarlı bir şekilde temizlendiğindenStartupMode.COLD
karşılaştırmalarından yaklaşık 20 ms gürültü kaldırıldı. Daha önce,Partial
derleme işleminde ısınma iterasyonları kullanıldığında, gölgelendirici önbelleğe alma işleminin ısınma sırasında gerçekleşme olasılığı daha yüksek olduğundan yanlış hızlı sayılar raporlanıyordu. Bu düzeltme için köklü bir cihaz veya hedef uygulamadaprofileinstaller:1.3.0-alpha02
kullanılması gerekir.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 izleme bölümünde harcanan toplam sürenin ölçülmesine olanak tanıyan
TraceSectionMode("label", Mode.Sum)
eklendi. Örneğin,TraceSectionMetric("inflate", Mode.Sum)
, bir makro karşılaştırmada enflasyon için harcanan toplam süreyle ilgili birinflateMs
metriği raporlar. Ayrıca,TraceSectionMetric
, hedef uygulamadaforceEnableAppTracing
kullanılarak daha düşük API düzeylerindeandroidx.tracing.Trace
ile birlikte çalıştığından API 29 şartı da kaldırıldı. (Id7b68, b/231455742)
Hata Düzeltmeleri
- Tüm çıkışlar/hatalar doğrulanarak tüm dahili kabuk komutlarının güvenliği artırıldı. (I5984d, b/255402908, b/253094958)
- Birden fazla cihaz bağlıysa (en fazla bir emülatör) temel profil
adb pull
komutunda cihazı belirtin. Böylece, alma komutu kolayca kopyalanabilir (I6ac6c, b/223359380) - Makro karşılaştırma testi apk'sı kendi kendini enstrümante edecek şekilde ayarlanmamışsa hata ekleyin. Bu hata, hedef uygulamanın sürecinde makro karşılaştırmalı test yapılmasını engeller. Bu süreçte macrobench, uygulamayı derleyemez/öldüremez/soğuk başlatamaz veya kendi izinlerini kontrol edemez (I4279b)
measureRepeated()
'teStartupMode.COLD
'ınsetupBlock
'den sonra hedef işlemi sonlandırmaması sorunu düzeltildi. ArtıksetupBlock
'ün uygulamayla etkileşime geçmesi, uygulama işleminin çalışmasını ve geçersiz bir soğuk başlatma ölçümü yapılmasını engellemeyecek. (I8ebb7)
Sürüm 1.2.0-alpha06
24 Ekim 2022
androidx.benchmark:benchmark-*:1.2.0-alpha06
yayınlanır. 1.2.0-alpha06 sürümü bu taahhütleri içerir.
API Değişiklikleri
BaselineProfileRule
artık Android 13'te (API 33) root erişimi gerektirmiyor ve deneysel değil. (Ie0a7d, b/250083467, b/253094958)- Bu değişiklik, bir uygulamadaki profillerin köklendirilmemiş cihazlarda diske nasıl temizlendiğini de düzeltir ancak hedef uygulamanın profileinstaller bağımlılığının güncellenmesini gerektirir.
- Köklendirilmemiş bir cihazda
BaselineProfileRule
veyaCompilationMode.Partial(warmupIterations)
'ü kullanmak için hedef uygulamanızıandroidx.profileinstaller.profileinstaller:1.3.0-alpha01
'yi kullanacak şekilde de güncellemeniz gerekir. Bu, profilin derlenebilmesi/ayıklanabilmesi için diske doğru şekilde boşaltılmasını sağlar.
Hata Düzeltmeleri
- API 33 ve sonraki sürümlerde
SampledProfiling
kilitlenme sorununu düzeltir. (I40743, b/236109374)
Sürüm 1.2.0-alpha05
5 Ekim 2022
androidx.benchmark:benchmark-*:1.2.0-alpha05
yayınlanır. 1.2.0-alpha05 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Kayıtlı karşılaştırma izlemeleri için Studio sistem izleme görüntüleyicisinde kare dökümünü düzeltme (I3f3ae, b/239677443)
FrameTimingMetric
'teFrameOverrun
'u 29 yerine API 31 gerektirecek şekilde düzeltin (I716dd, b/220702554)BaselineProfileRule
içinde iterasyonu ayarlayın ve hedef paket yüklü değilse açıkça bildirin (MacrobenchmarkRule için zaten yapılmıştır). (Ic09a3, b/227991471)
Sürüm 1.2.0-alpha04
21 Eylül 2022
androidx.benchmark:benchmark-*:1.2.0-alpha04
yayınlanır. 1.2.0-alpha04 sürümü bu taahhütleri içerir.
Yeni Özellikler
Daha hızlı yerel geliştirme ve uygulama otomasyonunu doğrulama (ör. göndermeden önce) için makro karşılaştırma aracına
dryRunMode.enable
enstrümantasyon bağımsız değişkeni desteği eklendi (mikro karşılaştırma aracında zaten mevcuttur). Bu işlem, iterasyonları 1 olarak geçersiz kılar, derlemeyi atlar, tüm yapılandırma hatalarını bastırır 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
- Ölçülmüş etkinliklerin artık
MacrobenchmarkScope.startActivityAndWait()
üzerinden başlatılmasını gerektirmeyecek şekildeStartupTimingMetric
düzeltildi. Bu, metriğin örneğin bildirimler,Context.startActivity()
, uygulama içi etkinlik tabanlı gezinme veya kabuk komutlarından gelen başlatmaları algılayabileceği anlamına gelir. (Ia2de6, b/245414235) - Çerçeve algılamanın katılığını azaltarak
startActivityAndWait
'ün, emülatörlerde lansmanın tamamlanmasını beklerken 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ınlanır. 1.2.0-alpha03 sürümü bu taahhütleri içerir.
Yeni Özellikler
BenchmarkState
'üBenchmarkRule
/JUnit4
'den 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ınlanır. 1.2.0-alpha02 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Temel profil oluşturma işlemi hariç, köklüyken bile
MacrobenchmarkScope.killProcess()
için varsayılan olarakam force stop
. Bu değer, 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ınlanır. 1.2.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Araçların, kullanıma sunduğu bir uygulamada Perfetto SDK izlemeyi etkinleştirmesine olanak tanıyan yeni tracing-perfetto-common bileşeni (I2cc7f)
Makro karşılaştırma çalıştırmalarının yalnızca karşılaştırmalara veya yalnızca temel profil oluşturmaya filtrelenmesini sağlamak 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 (ör. bir emülatörde yalnızcaBaselineProfiles
oluştururken) "Macrobenchmark" veya "BaselineProfile" parametresini iletin. Virgülle ayrılmış liste de desteklenir. (I756b7, b/230371561)Örneğin, makro karşılaştırmanı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
parametresine yeni bir parametre eklendi (If7338, b/220146561) - Geliştiricinin, güç tüketimini ölçmek için cihazı boşaltmasına olanak tanır. (I6a6cb)
MacrobenchmarkScope
'te gölgelendirici önbelleğini temizleme özelliği eklendi. (I32122)- Geliştiricinin metrik türünün görüntülenmesini ve istenen alt sistem kategorilerinin ayrıntılarını yapılandırmasını sağlar. (I810c9)
- Daha önce, desteklenmeyen bir cihazda çalıştırıldığında karşılaştırmaya
UnsupportedOperationException
atılıyordu. Artık UOE yalnızca metrik desteklenmeyen cihazda (ör.PowerMetric.configure
) kullanılıyorsa ortaya çıkar. (I5cf20, b/227229375) - Makro karşılaştırmalarda her sistem kategorisindeki toplam güç ve enerjiyi ölçmek için
TotalPowerMetric
veTotalEnergyMetric
eklendi. (I3b26b, b/224557371)
Hata Düzeltmeleri
- Köklendirilmemiş derlemelerde her makro karşılaştırma arasında derlenmiş yöntemlerin doğru şekilde sıfırlanmaması sorunu düzeltildi. Bu nedenle, her iterasyonda apk'nın yeniden yüklenmesi gerekir. Bu da her makro karşılaştırma için uygulama verilerinin temizlenmesine neden olur. (I31c74, b/230665435)
- API 21/22'de izleme kaydının kilitlenmesi sorunu düzeltildi (If7fd6, b/227509388, b/227510293, b/227512788)
- Başlangıç makro karşılaştırmalarında "Hiçbir metrik okunamadı" istisnasını düzeltmek için etkinlik başlatma tamamlama algılamasını büyük çaplı olarak değiştirin. (Ia517c)
1.1.1 sürümü
1.1.1 sürümü
9 Kasım 2022
androidx.benchmark:benchmark-*:1.1.1
yayınlanır. 1.1.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Bazı Android 11 (API 30 ve sonraki sürümler) yüklü cihazlarda ortaya çıkan
android.system.ErrnoException: open failed: EACCES
sorununu giderir. Bu,1.2.0-alpha01
'teki bir düzeltmenin seçkin bir örneğidir. (aosp/2072249)
Sürüm 1.1.0
Sürüm 1.1.0
15 Haziran 2022
androidx.benchmark:benchmark-*:1.1.0
yayınlanır. 1.1.0 sürümü bu taahhütleri içerir.
- Bu sürüm
androidx.benchmark:benchmark-*:1.1.0-rc03
ile aynıdır.
1.0.0 sürümünden bu yana yapılan önemli değişiklikler
Başlatma ve kaydırma gibi uygulama genelindeki etkileşimleri ölçmenize olanak tanıyan Jetpack makro karşılaştırmalarına yönelik destek, izleri yakalama ve iz bölümlerini ölçme olanağı sunar.
Temel Profiller için destek
CompilationMode.Partial
ile Temel Profillerin etki düzeyini ölçebilirsiniz.@BaselineProfileRule
kullanarak belirli bir kritik kullanıcı yolculuğu için temel profilleri otomatik olarak oluşturabilirsiniz.
Mikro karşılaştırma çalıştırmaları sırasında tahsis 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ınlanır. 1.1.0-rc03 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
Her karşılaştırma iterasyonunda hedef paketi yeniden yüklemekten kaçının. ( aosp/2093027, b/231976084)
300ms
gecikmesinipressHome()
'ten kaldırın. (aosp/2086030, b/231322975)Arka planda kullanılan kabuk komutlarını optimize ederek makro karşılaştırma iterasyon hızını artırın. (aosp/2086023, b/231323582)
Makro karşılaştırmalarla 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ınlanır. 1.1.0-rc02 sürümü bu taahhütleri içerir.
- Bu sürümde, doğru ölçümler yapılması için uygulamalar artık her karşılaştırma arasında tamamen yeniden yükleneceğinden 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ı ve köklendirilmemiş derlemelerde hiç sıfırlanmaması sorunu düzeltildi. Bu, birden fazla test çalıştırmanın
CompilationMode
'ün ölçümler üzerinde çok az veya hiç etkisi olmamasına neden olduğu birçok durumu düzeltir. Bu sorunun geçici çözümü olarak hedef uygulama artık her test yöntemini tamamen yeniden yüklüyor. Bu sayede her makro karşılaştırma arasında uygulama verileri temizleniyor. (I31c74, b/230665435)Bu durum, uygulamaların testlerden önce durum ayarlarını yapmasını engellediğinden, bu sorunun üstesinden gelmek için derlemeyi / yeniden yüklemeyi atlamak artık mümkün. Örneğin, hedefi bir kabuk komutu
cmd package compile -f -m speed <package>
ile tamamen derleyebilir ve ardından makro karşılaştırmanın derleme adımını atlayabilirsiniz.Örneğin, makro karşılaştırmanı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şkenini ekleyerek makro karşılaştırmalar ile referans profil oluşturma testleri arasında bir modülün paylaşılmasını sağladı. Örneğin, bir emülatördeBaselineProfiles
oluştururken yalnızca bir tür test çalıştırmak için "Macrobenchmark" veya "BaselineProfile" parametresini iletin. (I756b7, b/230371561)Örneğin, makro karşılaştırmanı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ınlanır. 1.1.0-rc01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Android Studio'daki temel profil çıkış bağlantıları artık benzersiz bir dosya adı kullanır. Bu sayede, çıkış her zaman
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ınlanır. 1.1.0-beta06 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- API 21/22'de izleme kaydının kilitlenmesi sorunu düzeltildi (If7fd6, b/227509388)
- Başlangıç makro karşılaştırmalarında "Hiçbir metrik okunamadı" istisnasını düzeltmek için etkinlik başlatma tamamlama algılamasını büyük çaplı olarak değiştirin. (Ia517c)
CompilationMode.None()
kullanıldığında makro karşılaştırmalar için başlangıç metriklerini düzeltin. Bu değişiklikten önceCompilationMode.Partial()
,Compilation.None()
'ten 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ınlanır. 1.1.0-beta05 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
CompilationMode.None
kullanılırken profil yükleme işlemi atlandıysa paketi sonlandırın. (aosp/1991373)- Macrobenchmarks'in
StartupMode.COLD
kullanılırken 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ınlanır. 1.1.0-beta04 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
Android 10'da eksik metrikler ve izlenen işlem adlarının doğru şekilde yakalanmamasından kaynaklanan
NoSuchElementException
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, termal sınırlama algılamada yanlış pozitiflerin sıklığını önemli ölçüde azaltır (90 saniyelik bekleme süresinden sonra karşılaştırma yeniden denemesi) ve kullanıcı derlemelerinde karşılaştırmaları önemli ölçüde hızlandırır. Ayrıca, saatler kilitliyken (cihazın fiziksel ortamı için çok yüksek bir hıza kilitlenmişse) de kısıtlama algılama sağlar. (I9c027, b/217497678, b/131755853)İncelemeyi basitleştirmek için simpleperf örneklenmiş profillemeyi 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 alınan metrikleri destekleme (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üklemeyi atlama. Ayrıca, uygulamaandroidx.profileinstaller
ve Android Gradle eklentisinin eski bir sürümünü kullanıyorsa uyarıları da bildirin. aosp/1977029
Sürüm 1.1.0-beta03
9 Şubat 2022
androidx.benchmark:benchmark-*:1.1.0-beta03
yayınlanır. 1.1.0-beta03 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Ses eksiklerinin algılanmasına izin vermek için
AudioUnderrunMetric
, deneysel işareti altında makro karşılaştırma kitaplığına eklendi (Ib5972) BaselineProfileRule
,profileBlock
ile aynı işlevi gördüğü için 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ışında bağlandığında mikro test profilleyicisi izlemelerinin sonraki çalıştırmalarda güncellenememesine neden olan sorun düzeltildi (I5ae4d, b/214917025)
- API 23'te derleme kabuk komutlarını engelleme (Ice380)
- Bu değerlerin zaman damgası değil, süre olduğunu belirtmek ve ön eklerle eşleştirmek için
FrameCpuTime
->FrameDurationCpu
,FrameUiTime
->FrameDurationUi
olarak 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ınlanır. 1.1.0-beta02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Mikro karşılaştırma yığını örnekleme / yöntem izleme profili sonuçları artık diğer profilleme çıkışlarına benzer şekilde Studio çıkışında bağlanır ve ayırma metriğini bastırmaz. (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ınlanır. 1.1.0-beta01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Profilleyici bağımsız değişkeninin etkinleştirilmesinin yoksayılmasını düzeltir. (I37373, b/210619998)
- Desteği sonlandırılan
CompliationModes
(I98186, b/213467659) kaldırıldı CompilationMode.Partial
için taban profil bağımsız değişkenini daha anlaşılır olması amacıyla enum olarak değiştirdik. (Id67ea)
Sürüm 1.1.0-alpha13
15 Aralık 2021
androidx.benchmark:benchmark-*:1.1.0-alpha13
yayınlanır. 1.1.0-alpha13 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Android Q (API 29 ve sonraki sürümler) sürümündeki mikro test çıkışına düşük yükü olan sistem izleme ekleyin. Sonuçları etkilememek için bu özelliğin şu anda özel izlemeyi (
android.os.Trace
veyaandroidx.tracing
Jetpack API'leri aracılığıyla) yakalamadığını unutmayın. Bu izleme, özellikle karşılaştırma ölçütünün dışındaki kaynaklardan kaynaklanan kararsızlığı teşhis etmede faydalı olacaktır. (I298be, b/205636583, b/145598917) CompilationModes
değerini Tam, Yok ve Kısmi olmak üzere üç sınıfa ayırın. Daha önce derleme bağımsız değişkenleri (artık uygulama ayrıntıları olarak kabul ediyoruz) ve özelliklere göre tutarsız bir şekilde adlandırılıyordu. Bu sayede, platform sürümleri arasındaki dengeler, olası kombinasyonlar ve davranış daha net bir şekilde anlaşılabilir. (I3d7bf, b/207132597)- Kurulum ve ölçüm artık her zaman sırayla çiftler halindedir. Artık paket adını ve iterasyonu sorgulayabilirsiniz (belirli ısınma senaryolarında iterasyon
null
olabilir). (Id3b68, b/208357448, b/208369635)
Hata Düzeltmeleri
CompilationMode.Speed
'ünNone
olarak yanlış şekilde işlenmesi düzeltildi (I01137)
Sürüm 1.1.0-alpha12
17 Kasım 2021
androidx.benchmark:benchmark-*:1.1.0-alpha12
yayınlanır. 1.1.0-alpha12 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Özel izlemeye dayalı zamanlama ölçümleri için deneysel TraceSectionMetric'i 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. Bunun için kilit ekranının devre dışı bırakılması gerekir. (Ibfa28, b/180963442)
- Emülatörlerde ve köklendirilmemiş cihazlarda StackSampling profilleme modunda birden fazla kilitlenme sorunu düzeltildi (Icdbda, b/202719335)
- Her iterasyonun sonunda 0, 5 saniyelik uyku kaldırıldı.Bu değişiklikle birlikte eksik metrikler görürseniz lütfen bir hata kaydı gönderin. (Iff6aa)
- Verilerin atlanma olasılığını azaltın ve izlemeden kaynaklanan bellek yükü azaltın (Id2544, b/199324831, b/204448861)
- Kompakt planlı depolama biçimine geçerek izleme boyutunu yaklaşık% 40 oranında küçültün. (Id5fb6, b/199324831)
- Başlangıç metriklerinin uygulamaları, her zaman renderthread'ın sonunda bitecek şekilde güncellendi. Bu, platform sürümleri arasında daha tutarlı olur ve uygulama içi ölçümlerle daha yakından eşleşir. (Ic6b55)
Sürüm 1.1.0-alpha11
3 Kasım 2021
androidx.benchmark:benchmark-*:1.1.0-alpha11
yayınlanır. 1.1.0-alpha11 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Makro karşılaştırma artık
23
minSdkVersion
değerine sahip. (If2655) - Uygulamanın kritik kullanıcı yolculuğu için temel profiller oluşturabilen yeni bir deneysel
BaselineProfileRule
ekler. Ayrıntılı dokümanlar daha sonra paylaşılacak. (Ibbefa, b/203692160) - Yöntemi tamamlarken/çözerken belirsizliklere neden olduğu için Java çağırıcıları için eklenen measureRepeated arayüz varyantını kaldırır. Java'da çağrıyı yapanların, measureRepeated işlevinden Unit.Instance değerini döndürmesi gerekir. Bu durum size sorun teşkil ediyorsa lütfen hata bildirin. Bu konuyu gelecekteki bir sürümde yeniden ele alabiliriz. (Ifb23e, b/204331495)
Sürüm 1.1.0-alpha10
27 Ekim 2021
androidx.benchmark:benchmark-*:1.1.0-alpha10
yayınlanır. 1.1.0-alpha10 sürümü bu taahhütleri içerir.
API Değişiklikleri
- StartupTimingMetric'i API 23'e kadar çalışacak şekilde geriye dönük olarak taşıyın. Bu yeni uygulama, ilgili içeriğin oluşturulmasını beklemek için reportFullyDrawn() işlevini de daha iyi yönetir. (If3ac9, b/183129298)
- Java çağrıcıları için birden fazla MacrobenchmarkScope yöntemine JvmOverloads eklendi. (I644fe, b/184546459)
- Java dilinde idiomatik kullanım için
Consumer<MacrobenchmarkScope>
kullanan alternatif MacrobenchmarkRule.measureRepeated işlevi sağlayın. (If74ab, b/184546459)
Hata Düzeltmeleri
- İzlemelerin yeterince erken başlamaması ve eksik metrik verileri sorununu düzeltme Bu sayede, kitaplığın kendisinden kaynaklanan "Karşılaştırma sırasında hiçbir metrik okunamıyor" istisnaları düzeltilebilir. (I6dfcb, b/193827052, b/200302931)
- FrameNegativeSlack, anlamını (karenin zaman bütçesini ne kadar aştığını) açıklığa kavuşturmak 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ınlanır. 1.1.0-alpha09 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- API 31/S+'te kök olmadan çekirdek sayfa önbelleğini bırakma desteği. Bu, StartupMode.COLD başlatmalarının doğruluğunu artıracaktır. (Iecfdb, b/200160030)
Sürüm 1.1.0-alpha08
29 Eylül 2021
androidx.benchmark:benchmark-*:1.1.0-alpha08
yayınlanır. 1.1.0-alpha08 sürümü bu taahhütleri 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üne ve JSON çıkışına, iterasyon başına birden fazla örneğin yüzdelik dilimlerine odaklanan yeni bir örneklenmiş metrik türü ekleyin. (I56247, b/199940612)
- Karşılaştırma kitaplıklarında kayan noktalı metriklere geçin (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ınlanır. 1.1.0-alpha07 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Gelecekte desteklenecek en düşük API düzeyini yansıtmak için minimum API düzeyi 21'e yükseltildi. Şu anda desteklenen minimum API, RequiredApi() aracılığıyla iletilmeye devam etmektedir ve şu anda 29'dur (I440d6, b/183129298)
Hata Düzeltmeleri
- Temel profil kullanan uygulamaların
CompilationMode.BaselineProfile
kullanarak makro karşılaştırma çalıştırmasını kolaylaştırmak içinProfileInstaller
düzeltildi. (I42657, b/196074999) NOT:androidx.profileinstaller:profileinstaller:1.1.0-alpha04
veya sonraki bir sürüme güncelleme yapmanızı da gerektirir. StartupMode.COLD
+CompilationMode.None
karşılaştırmaları artık daha kararlı. (I770cd, b/196074999)
Sürüm 1.1.0-alpha06
18 Ağustos 2021
androidx.benchmark:benchmark-*:1.1.0-alpha06
yayınlanır. 1.1.0-alpha06 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Yerel olarak test/profil oluştururken iterasyon sayısının manuel olarak geçersiz kılınmasına izin vermek için
androidx.benchmark.iterations
enstrümantasyon bağımsız değişkeni eklendi. (6188be, b/194137879)
Hata Düzeltmeleri
- API 29 ve sonraki sürümlerde varsayılan örnekleme profilleyici 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 şu anda bu metriği kullanmaktan kaçının.
Sürüm 1.1.0-alpha05
4 Ağustos 2021
androidx.benchmark:benchmark-*:1.1.0-alpha05
yayınlanır. 1.1.0-alpha05 sürümü bu taahhütleri içerir.
1.1.0-alpha04
, ara sıra yaşanan kilitlenme nedeniyle yayınlanmadan önce iptal edildi. b/193827052
API Değişiklikleri
- startActivityAndWait işlevi,
am start
aracılığıyla başlatmayı çağıracak şekilde değiştirildi. Bu değişiklik, intent parcelable'ların artık desteklenmemesi pahasına her ölçüm iterasyonunun süresini yaklaşık 5 saniye azaltır. (I5a6f5, b/192009149
Hata Düzeltmeleri
- Termal kısıtlama algılamanın agresifliğini azaltın ve sık sık kısıtlama algılanırsa referans değerini yeniden hesaplayın. (I7327b)
- FrameTimingMetric'in Android S beta sürümünde çalışacak şekilde düzeltilmesi (Ib60cc, b/193260119)
CompilationMode.BaselineProfile
'u daha iyi desteklemek için hedef uygulamayı zorla durdurma durumundan çıkarmak üzere birEmptyActivity
kullanın. (Id7cac, b/192084204)- Platform standardıyla eşleşecek şekilde izleme dosyası uzantısı
.perfetto-trace
olarak değiştirildi. (I4c236, b/174663039) - StartupTimingMetric artık uygulamanızın oluşturulmasını tamamlamasına kadar geçen süreyi ölçmek için "fullyDrawnMs" metriğini döndürüyor. Uygulamanız için bu metriği tanımlamak amacıyla, ilk içeriğiniz hazır olduğunda (ör. ilk liste öğeleriniz veritabanından veya ağdan yüklendiğinde) Activity.reportFullyDrawn işlevini çağırın. (ComponentActivity'de derleme sürümü kontrolleri olmadan reportFullyDrawn yöntemi kullanılabilir). Testinizin metriği yakalayacak kadar uzun süre çalıştırılması gerektiğini unutmayın (startActivityAndWait, reportFullyDrawn işlevini beklemez). (If1141, b/179176560)
- Kullanıcı arayüzü meta verilerini izleyicilere ekleme maliyetini 50'den fazla ms azaltma (Ic8390, b/193923003)
- İzlemeyi durdururken anket sıklığı önemli ölçüde artırıldı. Bu durum, örneğin, başlangıç karşılaştırma çalışma süresini %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ınlanır. 1.1.0-alpha03 sürümü bu taahhütleri 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ı bastırmaya yönelik örnek Gradle kodu, .gradle.kts kullanıcılarını da destekleyen bir söz dizimi içeren 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 sürümüne eklenen büyük bir bileşen olan makro karşılaştırma, karşılaştırma işlemlerine yeni bir boyut getiriyor. Karşılaştırma, CPU döngülerini ölçmenize olanak tanır. Makro Karşılaştırma ise başlangıç ve kaydırma gibi uygulama genelindeki etkileşimleri ölçmenize ve izleri yakalamanıza olanak tanır. Daha fazla bilgi için kitaplık dokümanlarını inceleyin.
androidx.benchmark:benchmark-*:1.1.0-alpha02
yayınlanır. 1.1.0-alpha02 sürümü bu taahhütleri içerir.
Yeni Özellikler
Makro karşılaştırma yapıları eklendi (androidx.benchmark:benchmark-macro-junit4
ve androidx.benchmark:benchmark-macro
)
- Uygulamanızdan yerel olarak veya CI'de başlatma, kaydırma/animasyon performansı metriklerini yakalama
- Android Studio'dan izlemeleri yakalama ve inceleme
Hata Düzeltmeleri
- Android 12'de çıkış dizini ile ilgili kabuk izinleri sorununun geçici çözümü (Not: Etkilenen cihazlarda çıkış dosyalarını yakalamaya devam etmek için Android Gradle eklentisini 7.0.0 canary ve Android Studio'yu Arctic Fox (2020.3.1) sürümüne güncellemeniz gerekebilir). (Icb039)
- BenchmarkPlugin'da yapılandırma önbelleğe alma desteği (6be1c1, b/159804788)
- Basitleştirilmiş dosya çıkışı:
requestLegacyExternalStorage=true
gerektirmeyen bir dizinde varsayılan olarak açıktır (8b5a4d, b/172376362) - Kitaplık baskısı, JIT iş parçacığının bulunmadığı platform sürümlerinde bulunmamasıyla ilgili logcat uyarılarını düzeltir. (I9cc63, b/161847393)
- Okuma cihazı maksimum sıklığıyla ilgili düzeltme. (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ı. 1.1.0-alpha01 sürümü bu taahhütleri içerir.
1.1 sürümündeki yeni özellikler
- Ayırma Metrikleri: Karşılaştırmalar artık ısınma ve zamanlamadan sonra ek bir aşama çalıştırarak ayırma sayılarını yakalar. Ayırma işlemleri, platformun eski sürümlerinde performans sorunlarına neden olabilir (O sürümünde 140 ns olan bu değer, M sürümünde 8 ns'ye düştü. Bu değer, kilitli saatler ile Nexus5X'te ölçüldü). Bu metrik, Android Studio konsol çıkışında ve
- Profil oluşturma desteği: Artık kodunuzun neden yavaş çalıştığını incelemek için karşılaştırma çalışması için profil oluşturma verilerini yakalayabilirsiniz. Karşılaştırma, ART'den yöntem izleme veya yöntem örnekleme işlemlerini yakalamayı destekler. Bu dosyalar, Dosya > Aç seçeneği kullanılarak Android Studio'daki Profilleyici ile incelenebilir.
- Karşılaştırma Gradle eklentisi artık daha kolay kurulum için varsayılan değerler sağlar:
testBuildType
, yerleşik kod kapsamına sahip bağımlılıkların kullanılmasını önlemek için varsayılan olarak yayın olarak ayarlanır. Yayın buildType'i, varsayılan buildType olarak da yapılandırılır. Bu, Android Studio'nun bir projeyi ilk kez açarken doğru derleme varyantını otomatik olarak seçmesine olanak tanır. (b/138808399)- Varsayılan imzalama yapılandırması olarak
signingConfig.debug
kullanılır (b/153583269)
** Hata Düzeltmeleri **
- Her karşılaştırma için ilk ölçümün diğerlerinden yapay olarak daha yüksek olduğu ısınma geçişi yükü önemli ölçüde azaltıldı. Bu sorun, çok küçük karşılaştırmalarda (1 mikrosaniye veya daha az) daha belirgindi. (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
- Benchmark'ın komut satırı ve gradle çağrıları sonuçları doğrudan yazdırmaz. Bu sorunu, Studio'yu kullanarak veya JSON çıkış dosyasını ayrıştırarak çözebilirsiniz.
- Karşılaştırma raporlaması, "android" veya "download" ile biten bir applicationId'ye sahip uygulamanın yüklü olduğu cihazlardan raporu alamaz (büyük/küçük harf duyarlı değildir). Bu sorunla karşılaşan kullanıcıların Android Gradle eklentisini 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 sürümüne kıyasla herhangi bir değişiklik içermeden yayınlanmıştır. 1.0.0 sürümü bu taahhütleri içerir.
1.0.0 sürümünün önemli özellikleri
Karşılaştırma kitaplığı, uygulama kodunun performans karşılaştırmalarını yazmanıza ve hızlı bir şekilde sonuç almanıza olanak tanır.
Oluşturma ve çalışma zamanı yapılandırma sorunlarını önler ve ö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 gerilemelerin önüne geçmek için karşılaştırmaları doğrudan Android Studio'da veya Sürekli Entegrasyon'da çalıştırın.
Başlıca özellikler:
- Saat sabitleme
- Otomatik ileti dizisi önceliği belirleme
- RecyclerView Örneği'nde olduğu gibi kullanıcı arayüzü performansı testi desteği
- JIT uyumlu ısıtma ve döngü
- Sonraki işleme 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 taahhütleri içerir.
Yeni özellikler
- Karşılaştırmalara systrace izleme eklendi
Hata düzeltmeleri
- Öncelik düşürme nedeniyle JIT'nin ısınmadan önce bitmediği metrik kararsızlığı sorunu düzeltildi (b/140773023)
- Android Gradle eklentisi 3.5 ve 3.6'da birleşik 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 taahhütleri içerir.
Yeni özellikler
- Bir karşılaştırma testinden diğerine sızan bellek basıncını azaltmak için her ısınmadan önce çöp toplama işlemini ç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, Kotlin arayanlar için Kotlin deneysel ek açıklamaları tarafından sağlanana benzer. - Artık AGP'nin veri kopyasını ne zaman işleyeceğini bilmek için Android Gradle Eklentisi 3.6'da çıkış için
additionalTestOutputDir
enstrümantasyon bağımsız değişkeninin kullanımını doğru şekilde algılar. -1
(b/141945670) değerini doğru şekilde yazdırmak için JSON'da algılanmayan saat frekansını 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
yayınlandı. 1.0.0-alpha06 sürümü bu taahhütleri içerir.
Yeni özellikler
- Test çalıştırıcı için eski paketin yanlış kullanılmasıyla ilgili bir kontrol eklendi. Bu sayede artık daha faydalı bir hata mesajı gösteriliyor.
API değişiklikleri
- Deneysel ek açıklama
ExperimentalAnnotationReport
artık herkese açık. Deneysel BenchmarkState#report API'sinin kullanımı artık bu ek açıklamayı gerektiriyor
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üme dahil edilen taahhütleri burada bulabilirsiniz.
API değişiklikleri
BenchmarkState.reportData
API artık deneysel olarak işaretlendi
Hata düzeltmeleri
cut
veyaexpr
kabuk yardımcı programlarının eksik olduğu cihazlarda başarısız olan saat kilitleme komut dosyası düzeltildi../gradlew lockClocks
göreviyle ilgili, su yardımcı programının-c
işaretini desteklemeyen eski bir sürümüyle rootlanmış cihazlarda takılmaya neden olan 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
yayınlandı. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Ayrıca, hem farklı derleme sistemleriyle (Bazel veya Buck gibi) hem de CI'de çalışırken Benchmark kitaplığının Gradle olmadan nasıl kullanılacağıyla ilgili yeni dokümanlar eklendi. Daha fazla bilgi için Gradle olmadan karşılaştırma oluşturma ve Sürekli Entegrasyon'da karşılaştırma ç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 veya sonraki sürümleri 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 çıkışında karşılaştırma başına parametre adlarını ve değerlerini döndürüyor (b/132578772)
- Prova modu (b/138785848)
- Ölçümleri yakalamadan hataları/kilitlenmeleri kontrol etmek için her karşılaştırma döngüsünü yalnızca bir kez çalıştırmak üzere bir "kuru çalıştırma" modu eklendi. Bu, örneğin, bozuk olmadıklarını kontrol etmek için göndermeden önce karşılaştırmaları hızlı bir şekilde çalıştırmak için 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çerir:AndroidBenchmarkRunner
veBenchmarkRule
. Bu sınıfların ikisi deandroidx.benchmark.junit4
paketine taşındı.benchmark:benchmark-common
, BenchmarkState API dahil olmak üzere mantığın geri kalanını içerir.- Bu bölme, kitaplığın gelecekte JUnit4 API'leri olmadan karşılaştırma yapmayı desteklemesine olanak tanıyacak.
- Yapılandırma uyarıları artık hata olarak değerlendirilir ve testi kilitler (b/137653596)
- Bu, özellikle CI'de doğru ölçümleri daha da teşvik etmek için yapılır.
- Bu hatalar, bir enstrümantasyon bağımsız değişkeni kullanılarak uyarıya dönüştürülebilir. Örneğin:
-e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"
Hata düzeltmeleri
- Q cihazlarda harici depolama alanına yazmayla ilgili hatalar, sorunun nasıl çözüleceğine dair öneriler içeren daha açıklayıcı mesajlar sağlar.
- Ekranlar, kapalıyken başarısız olmak yerine karşılaştırma çalışmaları sırasında otomatik olarak açılır.
Harici katkılar
- JSON çıkışı iyileştirmelerine ve ekran kapalıyken yaşanan sorunlara yönelik düzeltmeye katkıda bulunan 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üme dahil edilen taahhütleri burada bulabilirsiniz.
Yeni özellikler
- Tam JSON raporunda, karşılaştırma başına termal sınırlama nedeniyle uyku süresini gösterin.
Hata düzeltmeleri
- Android eklentileri ve Android bloğu uygulandıktan sonra Gradle eklentisinin uygulanması artık gerekmez.
- Android 10 cihazlarda kapsamlı depolama alanını kullanan 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üme dahil edilen taahhütleri burada bulabilirsiniz.
JSON şemasını bir API olarak ele aldığımızı unutmayın. Diğer API'lerle aynı kararlılık kısıtlamalarını uygulamayı planlıyoruz: Beta sürümünde kararlı (çok nadir istisnalar dışında) ve nihai sürümde düzeltilmiş, yalnızca küçük sürümlerde eklemeler ve büyük sürümlerde değişiklik/kaldırma işlemi yapılır.
API değişiklikleri
JSON şeması tamamen yenilendi. JSON şemasında yapılacak diğer değişikliklerin eklemelerle sınırlı olması muhtemeldir:
- Sonuç nesnesi yapısı, gelecekte ek metrik gruplarını destekleyecek şekilde yeniden düzenlendi (b/132713021)
- Cihaz ve derleme bilgileri ile saatlerin kilitli olup olmadığı gibi test çalıştırma bağlam bilgileri üst düzey nesneye eklendi (b/132711920)
- Zaman metriği adlarında artık "ns" var (b/132714527)
- Raporlanan her metrik için ek istatistikler eklendi (maksimum, medyan, minimum) ve basitleştirilmiş "nanos" özet istatistiki kaldırıldı (b/132713851)
XML çıkışı kaldırıldı (b/132714414)
Termal kısıtlama algılama,
BenchmarkState.reportData
API'sinden kaldırıldı (b/132887006)
Hata düzeltmeleri
./gradlew lockClocks
'ün bazı yeni işletim sistemli cihazlarda takılması sorunu düzeltildi (b/133424037)- Throttling algılama, emülatör için 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ınlanır. Bu sürüme dahil edilen taahhütler burada bulunabilir.