Karşılaştırma
Son Güncelleme | Kararlı sürüm | Sürüm Adayı | Beta Sürümü | Alfa sürümü |
---|---|---|---|---|
30 Temmuz 2025 | 1.4.0 | - | - | - |
Bağımlılıkları bildirme
Benchmark'a bağımlılık eklemek için Google Maven deposunu projenize eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposu başlıklı makaleyi okuyun.
Macrobenchmark
Projenizde Macrobenchmark'ı kullanmak için build.gradle
dosyanıza macrobenchmark modülünüz için aşağıdaki bağımlılıkları ekleyin:
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.4.0" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.4.0") }
Mikro karşılaştırma testi
Projenizde Microbenchmark'ı kullanmak için build.gradle
dosyanıza mikro karşılaştırma modülünüzle ilgili aşağıdaki bağımlılıkları ekleyin:
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.4.0" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.4.0") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
The Microbenchmark library also provides a Gradle plugin to use with your microbenchmark module.
This plugin sets build configuration defaults for the module, sets up
benchmark output copy to the host,
and provides the
./gradlew lockClocks
task.
To use the plugin, include the following line in the `plugins` block in your top-level
build.gradle
file:
Groovy
plugins { id 'androidx.benchmark' version '1.4.0' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.4.0" apply false }
Then apply the plugin to your benchmark module's build.gradle
file
Groovy
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ştirmeye yönelik fikirleriniz olursa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.
Sürüm 1.4
Sürüm 1.4.0
30 Temmuz 2025
androidx.benchmark:benchmark-*:1.4.0
iptal edilir. 1.4.0 sürümü bu commit'leri içerir.
1.3.0 sürümünden beri yapılan önemli değişiklikler
Mikro karşılaştırma testi
- Gradle proje yalıtımına uymak için Gradle görevleri
lockClocks
veunlockClocks
, en üst düzeyde değil, karşılaştırma projelerinde olacak şekilde taşındı. BenchmarkRule
, coroutine'ler üzerine kurulacak ve daha iyiyield()
davranışı destekleyecek şekilde yeniden düzenlendi. Bu, özellikle uzun CI çalıştırmaları sırasında karşılaşılan ANR riskini önemli ölçüde azaltır. Not: Kullanıcı arayüzü karşılaştırmalarımeasureRepeatedOnMainThread
ile çalıştırılmalıdır.
Macrobenchmark
CompilationMode.None()
için API 34 ve sonraki sürümlerde geçici çözüm eklendi. ART'nin, ilk başlatmadan sonra uygulamaları kısmen derlemesi nedeniyle tutarsız performans sorunu yaşanıyordu.- Deneysel özellik: Başlangıç analizleri,
MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true)))
iletilerek bir başlangıç makro karşılaştırma testindeki belirli yaygın sorunları vurgulayabilir. - JIT derlemesini ve optimize edilmemiş sınıf yüklemeyi algılamak için kullanılabilecek ArtMetric eklendi. Bu metrikler, temel profil optimizasyonlarını doğrulamak için kullanışlıdır.
Temel profiller
BaselineProfileRule
artık çok süreçli uygulamalar için profiller topluyor.
Diğer değişiklikler
- TraceProcessor,
Macrobenchmark
metriklerinin dışında diğer durumlarda da kullanılabilmesi için kendi kitaplığına (androidx.benchmark:benchmark-traceprocessor
) taşındı. Ayrıca kendi ServerLifecycleManager'ınızı tanımlayarak masaüstü JVM'de de çalıştırılabilir.
Sürüm 1.4.0-rc01
18 Haziran 2025
androidx.benchmark:benchmark-*:1.4.0-rc01
iptal edilir. 1.4.0-rc01 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Çalışma zamanı görüntülerinin, ilk yinelemeden sonra
CompilationMode.None()
'nın en kötü durum performansını ölçmemesine neden olmasıyla ilgili geçici çözüm eklendi. Maalesef bu geçici çözüm, her makrobenchmark paketi başlangıcında çalışma zamanı görüntüsünü kasıtlı olarak bozmak için 5 saniyelik bir gecikme gerektiriyor (I4a4f1).
Sürüm 1.4.0-beta02
4 Haziran 2025
androidx.benchmark:benchmark-*:1.4.0-beta02
iptal edilir. 1.4.0-beta02 sürümü bu commit'leri içerir.
API Değişiklikleri
- Java geliştiricilerin
BaselineProfileRule.collectWithResults()
'yi aramalarını kolaylaştırmak içinBaselineProfileConfig.Builder
eklendi. (I94905)
Sürüm 1.4.0-beta01
7 Mayıs 2025
androidx.benchmark:benchmark-*:1.4.0-beta01
iptal edilir. 1.4.0-beta01 sürümü bu commit'leri içerir.
API Değişiklikleri
PerfettoTraceRule
(Ie53ba) kabul edenPerfettoConfig
oluşturucu varyantı eklendi.
Hata Düzeltmeleri
- Doğru eklentinin kullanılması ve daha net bir sınırlayıcı (
:
,%3A
'den kısadır ve her ikisi de desteklenir) içinTraceProcessor
başlangıç bilgisi bağlantı biçimi güncellendi (Ie18ef). - Root edilmiş ve sistem uygulamaları kapatılıyor olsa bile işlemleri kapatmak için her zaman zorla durdurma özelliğini kullanın.
Expected no stdout/stderr from killall ... No such process
biçimindeki istisnaları düzeltir. (Idca2c)
Harici Katkı (External Contribution)
TraceProcessorHttpServer
için proxy istisnası işleyicisi eklendi (I480f5)
Sürüm 1.4.0-alpha11
9 Nisan 2025
androidx.benchmark:benchmark-*:1.4.0-alpha11
iptal edilir. 1.4.0-alpha11 sürümü bu commit'leri içerir.
API Değişiklikleri
- Java arayanın kullanılabilirliği için
TraceProcessor
bağımsız değişkeninin zaman aşımı süresi, timeoutMs uzunluğuna değiştirildi. (I9fbb5) TraceProcessor
oluşturucusunu dahili olarak işaretleyin. ArayanlarTraceProcessor.startServer
veyaTraceProcessor.runServer
kullanmalıdır. (Ia8c5b)
Hata Düzeltmeleri
- Uygulamayı
MacrobenchmarkScope.killProcess
ile sonlandırırken sessiz hata ve zaman aşımı hatasını önlemek için sonlandırma komutunun sonuçlarını doğrulayın. (I84555)
Bağımlılık Güncellemeleri
- Bu kitaplık artık Kotlin 2.0 dil seviyesini hedefliyor ve KGP 2.0.0 veya daha yeni bir sürüm gerektiriyor. (Idb6b5)
Sürüm 1.4.0-alpha10
26 Mart 2025
androidx.benchmark:benchmark-*:1.4.0-alpha10
iptal edilir. 1.4.0-alpha10 sürümü bu commit'leri içerir.
API Değişiklikleri
TraceProcessor
Sunucu yükü ve sorgulama için varsayılan zaman aşımı süresi 120 saniyeye (önceki 60/30 saniyeden) çıkarıldı ve her ikisi de tek bir zaman aşımı parametresiyle yapılandırılabilir hale getirildi. (Ifec87)
Hata Düzeltmeleri
profileinstaller
içermeyen bir uygulamanın karşılaştırması yapılırken veya profilleri yakalanırken ortaya çıkan veBroadcastReciever
'nin dahil olduğu bazı sorunlar düzeltildi. Bu durum yalnızca root edilmiş cihazlardaki çalıştırmaları etkiler. (Ied308)
Sürüm 1.4.0-alpha09
12 Mart 2025
androidx.benchmark:benchmark-*:1.4.0-alpha09
iptal edilir. 1.4.0-alpha09 sürümü bu commit'leri içerir.
API Değişiklikleri
- Özel yaşam döngüleriyle daha kolay kullanım için kapatılabilir işleyicilere sahip
TraceProcessor
ve Session API eklendi. Bu, Coroutine ve Java API'nin daha kolay kullanılmasını sağlama yolunda da bir adımdır.TraceProcessor.runServer {}
işlevleri, gelecekte taşınma ve deneysel olmayan hale getirilme olasılıkları nedeniyle artık deneysel olarak işaretleniyor. (I358b4)
Hata Düzeltmeleri
pgrep
toybox'ta yapılan ve artık tam komut satırının yazdırılması için-a
gerektiren bir değişiklik nedeniyle, API 36 ile çalışmayan karşılaştırma ve temel profil yakalama sorunu düzeltildi. (Idc991)- Daha yeni API düzeylerindeki izlemelerde veri kaybı riskini azaltmak için varsayılan izleme yapılandırmasını filtreleyin. (I54e8a)
- Mevcut Perfecto iz yakalamanın devam etmesine izin vermek için
false
olarak ayarlanabilen deneyselandroidx.benchmark.killExistingPerfettoRecordings
enstrümantasyon bağımsız değişkeni eklendi. Varsayılan olarak, cihazda önceden mevcut olan Perfetto izleme kayıtları, müdahaleyi önlemek için sonlandırılır. (I02a3c) - Sayısal olmayan kod adları artık temel platform tarafından desteklenmediğinden, API 35 ve üzeri sürümlerde yayınlanan işletim sistemi sürümlerinde
context.osCodenameAbbreviated
JSON alanı artıkREL
olacak. (Ib17fd) - Kareler yeniden senkronize edildiğinde
FrameTimingMetric
'da kilitlenme sorunu düzeltildi. (I7c6f4, b/394610806) - Artık
Choreographer#doFrame
'nınFrameTimingQuery
için ana iş parçacığındaki yığın çerçevesinin en üstünde olduğu varsayılmaz. (Iee0e0, b/340206285)
Sürüm 1.4.0-alpha08
12 Şubat 2025
androidx.benchmark:benchmark-*:1.4.0-alpha08
iptal edilir. 1.4.0-alpha08 sürümü şu commit'leri içerir.
API Değişiklikleri
TraceProcessor.runSession()
uzantısı API'leri, Android'de nihai oluşturuculara dönüşme ihtimali olduğundan deneysel olarak taşındı. (Ib0528, b/393640753)- Startup Insights'ın çoğu uygulaması artık herkese açık/deneyseldir ve
TraceProcessor
yapısına taşınmıştır.StartupInsights
başlıklı makaleyi inceleyin. (I0aa00) BenchmarkRule.runWithTimingDisabled {}
yerineBenchmarkRule.runWithMeasurementDisabled {}
kullanın. Bu durum, davranışı daha net bir şekilde tanımlar: Tüm metrikler duraklatılır. Ayrıca,runWithMeasurementDisabled
işlevi satır içi olduğundan erişimi açmak için yeniden tanımlamak mümkün olmadığındanMicrobenchmarkScope
üst sınıfını kullanıma sunun. (I9e23b, b/389149423, b/149979716)- Benchmark kitaplıkları Kotlin 2.0'a taşındı. (I9d1e0)
androidx.benchmark.startupProfiles.enable
enstrümantasyon bağımsız değişkeni kaldırıldı.includeInStartupProfile
içindekiBaselineProfileRule.collect()
argümanı tarafından kontrol edilebildiği için artık yararlı değildir. (I39eb4)
Hata Düzeltmeleri
- Örneğin, yöntem izlerinin daha net olması için profilleme sırasında çağrılan Microbenchmark dahili işlevlerinin sayısı azaltıldı (Ifaed8).
- Kilitlenmeler için spekülatif düzeltme: "[
ProcessPid(processName=perfetto, pid=...)
] durdurulamadı". Artık karşılaştırma çalıştırılmadan önce arka plandaki bir Perfetto işlemi durdurulamadığında kilitlenme yerine mesaj kaydedilecek. (I37d3e, b/323601788) - Aşırı katı çıkış biçimi kontrolünden kaynaklanan "Beklenen
pm dump-profiles
stdout" etiketliIllegalStateExceptions
sorununu düzeltin. (I358dc)
Sürüm 1.4.0-alpha07
29 Ocak 2025
androidx.benchmark:benchmark-*:1.4.0-alpha07
iptal edilir. 1.4.0-alpha07 sürümü bu commit'leri içerir.
Yeni Özellikler
BaselineProfileRule
artık hesaplanmış profillerin yollarının listesini içeren bircollectWithResults(...)
API'si sunuyor. (I056f8)- Yerel test için
measureRepeatedOnMainThread
öğesinin son tarihte hata verme davranışını devre dışı bırakmak üzere false olarak ayarlanabilenandroidx.benchmark.measureRepeatedOnMainThread.throwOnDeadline
enstrümantasyon bağımsız değişkeni eklendi. Testler sırasında ANR olasılığını artırdığı için başka bir şekilde önerilmez. (Idbeec, b/353226476)
API Değişiklikleri
@JvmOverloads
,MicrobenchmarkConfig
oluşturucusuna eklendi. (I13fd3)BenchmarkRule
, coroutine'ler üzerine kurulacak ve daha iyiyield()
davranışı destekleyecek şekilde yeniden düzenlendi. Bu yeniden düzenleme, deneyselBenchmarkState
API'lerin birçoğunu kaldırdı ancak gerektiğinde yerlerine yenileri eklenecek. Ayrıca, davranışı netleştirmek içinrunWithMeasurementDisabled
eklendi (tüm ölçüm duraklatılır). GelecekterunWithTimingDisabled
desteği sonlandırılacaktır. (I19837, b/389149423, b/311242861)PerfettoTraceProcessor
'yı yeni birandroidx.benchmark:benchmark-traceprocessor
yapay nesnesindeTraceProcessor
'ye taşıyın ve API'sinin çoğunu deneysel olmayan hale getirin. ÖzelTraceMetric
veya izlerden okunan her şeyin yeniTraceProcessor
içe aktarma işlemine güncellenmesi gerekir. YeniTraceProcessor
API, eski API ile aynı şekilde çalışır ancak macrobenchmark'a yerleştirilmiş Android'e özgü bir uygulamaya sahip bağımsız bir arayüz kitaplığıdır (Room'dakiandroidx.sqlite
katmanına benzer). Yeni yapay ürün JVM'de de kullanılabilir ancak şu andaTraceProcessor
ikilisinin kendi kopyanızı başlatmanız ve bağlanmak için bir bağlantı noktası sunmanız gerekir. (I3a767, I62563, b/381134564)
Hata Düzeltmeleri
MacrobenchmarkScope.startActivityAndWait
hedef işlemi başlatamadığında (hedef işlemde kilitlenme nedeniyle olabilir) daha belirsiz olan "Etkinlik başlatma işleminin tamamlandığı onaylanamıyor" mesajı yerine daha net bir hata mesajı gösterilir (I3539b).- Kotlin örneklerindeki çeşitli söz dizimi hataları ve çeşitli Java / build.gradle örneklerindeki söz dizimi vurgulama sorunları düzeltildi. (Ib3808)
ArtMetric
veCaptureInfo
parametreleriyle ilgili belgeler daha net hale getirildi. (I96e60)
Sürüm 1.4.0-alpha06
11 Aralık 2024
androidx.benchmark:benchmark-*:1.4.0-alpha06
iptal edilir. 1.4.0-alpha06 sürümü bu commit'leri içerir.
API Değişiklikleri
- Studio'da vurgulama/ayrıştırma işlevi bozuk olduğundan
PerfettoTraceProcessor.Session.query()
içinde@Language("sql")
kullanımı kaldırıldı. (Idc2fa, b/377733398)
Hata Düzeltmeleri
- Bu kitaplık artık tür kullanımı olan JSpecify nullness ek açıklamalarını kullanıyor. Kotlin geliştiricileri, doğru kullanımı zorunlu kılmak için aşağıdaki derleyici bağımsız değişkenini kullanmalıdır:
-Xjspecify-annotations=strict
(bu, Kotlin derleyicisinin 2.1.0 sürümünden itibaren varsayılan değerdir). (I46810, b/326456246) - Sınıf yüklemesini (başlatma değil) bildirmek için
ArtMetric
düzeltildi ve dokümanlar, çalışma zamanı davranışını netleştirmek için iyileştirildi. (I9915c) - Android'de çok kullanıcılı modda, 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
iptal edilir. 1.4.0-alpha05 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- API 34 ve sonraki sürümlerde,
CompilationMode.None()
'nın ilk ve en kötü durum performansını temsil etmeyen tutarsız bir performansa sahip olmasına neden olan sorun düzeltildi. Bu, ART'nin derleme durumununverify
ilk başlatmadan kısa süre sonra uygulamaları kısmen derlemesine (yalnızca sınıf yüklemeyi etkiler) olanak tanıyan bir platform değişikliğinin geçici çözümüdür. (Ie48d0) - Perfetto izinde işlem adı kısaltıldığından, yerleşik Macrobenchmark metriklerinden ölçüm raporlamayan (özellikle kısa) izlerin yakalanabildiği sorun düzeltildi. Macrobenchmark, beklenen paket adının yanı sıra tüm yerleşik sorgularda kısaltılmış paket adını arayarak bu sorunu çözmektedir. Özel
TraceMetric
uygulamalarının veyaPerfettoSession.query
'nin diğer doğrudan arayanlarının, Perfetto sorgusundaprocess.name LIKE "$packageName"
yerine(process.name LIKE "$packageName" OR process.name LIKE "$(packageName.takeLast(15))")
'ü kullanarak 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
iptal edilir. 1.4.0-alpha04 sürümü bu commit'leri içerir.
Yeni Özellikler
- (Deneysel) İkincil bir kullanıcıya yüklenen uygulamalarda (ör. başsız Android Auto cihazlardaki uygulamalar) Baseline Profile oluşturma ve karşılaştırma işlemlerini etkinleştirin. Bu destek bazı senaryolarda test edilmiştir ancak sizin için çalışmazsa lütfen bir hata bildirimiyle 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ıyor.isDebuggable
ise artık hem karşılaştırma hem denonMinified
(temel profil yakalama) derlemelerinde her zaman geçersiz kılınıyor. (I487fa, b/369213505)- API 28'den önceki bazı fiziksel cihazlarda derleme algılamasıyla ilgili sorunlar düzeltildi. Bu düzeltme,
context.compilationMode
JSON'u veandroidx.benchmark.requireAot=true
davranışını etkiler (artık yanlışlıkla hata vermez). (Ic3e08, b/374362482) CpuEventCounter
metriklerinde, geçersiz ölçümler gözlemlenirse (ör.instructions/cpucycles==0) hata verilir (I8c503).
Sürüm 1.4.0-alpha03
16 Ekim 2024
androidx.benchmark:benchmark-*:1.4.0-alpha03
iptal edilir. 1.4.0-alpha03 sürümü bu commit'leri içerir.
API Değişiklikleri
- Macrobenchmark: Profil kapsamını veya genel Android RunTime performansını incelemek için kullanılabilecek
ArtMetric
öğesini ekler. JIT, sınıf başlatma (varsa) ve sınıf doğrulama sayısını ve toplam süresini yakalar. Ayrıca, değişikliklerCaptureInfo
varsayılan olarak isteğe bağlı ART ana sürümünü içerecek şekilde değiştirildi. (I930f7) - Belirli bir karşılaştırma çalıştırması içindeki 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 spekülatif düzeltme:Package <packagename> must not be running prior to cold start!
. ArtıkMacrobenchmarkScope.killProcess()
(her yinelemeden önce çalıştırılan veStartupMode.COLD
davranışını uygulamak için kullanılan dahil) uygulamanın işlemlerinin tümünün durdurulduğunu doğrulamak için bekleyecektir. (I60aa6, b/351582215)- Bazı root edilmiş emülatörlerde UNLOCKED_ hatasının gösterilmesine neden olan sorun düzeltildi. (Ic5117)
- Bu kitaplık artık tür kullanımı olan JSpecify nullness ek açıklamalarını kullanıyor. Kotlin geliştiricileri, doğru kullanımı zorunlu kılmak için aşağıdaki derleyici bağımsız değişkenini kullanmalıdır:
-Xjspecify-annotations=strict
(bu, Kotlin derleyicisinin 2.1.0 sürümünden itibaren varsayılan değerdir). (I7104f, b/326456246)
Sürüm 1.4.0-alpha02
2 Ekim 2024
androidx.benchmark:benchmark-*:1.4.0-alpha02
iptal edilir. 1.4.0-alpha02 sürümü bu commit'leri içerir.
API Değişiklikleri
- Gradle görevleri
lockClocks
veunlockClocks
, üst düzeyde kullanılabilir olmak yerine karşılaştırma ölçütü projelerinde kullanılacak şekilde taşındı. Bu değişiklik, proje izolasyonunu bozmadan bunları üst düzey işlemler olarak kaydetmenin maalesef bir yolu olmadığı için gerekliydi. (I02b8f, b/363325823)
Hata Düzeltmeleri
BaselineProfileRule
artık çok süreçli uygulamalar için profilleri, blokun sonunda çalışan her süreci profilleri boşaltmak üzere işaretleyerek topluyor. Profile dayalı derleme, yayınlanacak bir süreci hiçbir zaman başarıyla bulamazsa derleme başarısız olur. Bunun nedeni, profil verilerinin derleme içinde 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)- Benchmark'tan
1.3.2
: Firebase Test Lab'in (FTL) Baseline Profile Gradle eklentisinden Baseline Profile veya Macrobenchmark sonuç dosyalarını çekememesi sorunu düzeltildi. (I2f678, b/285187547)
FTL'yi kullanmak için eklentiyi, eklenti bloğundaki temel profil modülüne aşağıdaki şekilde uygulayın:
plugins {
...
id("com.google.firebase.testlab")
}
ve ardından Firebase Test Lab'i şu şekilde 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
iptal edilir. 1.4.0-alpha01 sürümü şu commit'leri içerir.
Yeni özellik: Uygulama başlatma analizleri
- Uygulama başlatma analizlerinin ilk sürümü Macrobenchmark'ta 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şlangıç karşılaştırmanızı çalıştırdığınızda yaygın sorunları aramak için izleme analiz edilir ve metriklerden sonra karşılaştırma sekmesindeki Studio test çıkışına 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 henüz geliştirme aşamasındadır. Dokümanlarda ve genişletilebilirlik konusunda iyileştirmeler yapılmaya devam edecektir. Geri bildirimlerinizi bekliyoruz.
Yeni Özellikler
- Tüm temel profil uyarılarını bastırmak için gradle özelliği
androidx.baselineprofile.suppressWarnings
eklendi. (314153a) - Mikro kıyaslama metrikleri artık Perfetto izlerinde sayaç olarak gösteriliyor. (3214854)
- JIT'yi devre dışı bırakmak (root / çalışma zamanı yeniden başlatma gerektirir) ve cihaz performansını/test durumunu sıfırlamak için deneysel komut dosyaları ekleyin. Bunlar şu anda Gradle görevleri olarak yayınlanmamaktadır. (7c3732b)
- Emülatörde çalıştırılırken testlerin atlanması için kıyaslama bağımsız değişkeni eklendi.
automaticGenerationDuring
derlemesi etkinleştirildiğinde karşılaştırmalar da temel profil oluşturmayı tetikler. Emülatörler kullanılıyorsa bu işlem başarısız olur. Yeni bağımsız değişkenskipBenchmarksOnEmulator
ile testi atlayabiliriz. (0c2ddcd) - Performans etkinliği etkinleştirme mantığını API 23 ve sonraki sürümlerde çalışacak şekilde değiştirme (2550048)
API Değişiklikleri
- Mevcut deneysel
PerfettoConfig
bağımsız değişkeniMacrobenchmarkRule.measureRepeated()
, yeniExperimentalConfig
nesnesine taşındı.
Hata Düzeltmeleri
lockClocks.sh
yeniden deneme sayısını artırın (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şturuluyordu. (e75f0a5) TraceSectionMetric
sonuçlarındaki sonlandırılmayan dilimleri yoksay. (a927d20)sdk_
önekini dikkate almak için geliştirilmiş emülatör kontrolü. (1587de8)- Çalışmayan paketleri
FrameTimingGfxInfoMetric
içinde temizlenmiş olarak değerlendirin. (35cc79c) androidx.benchmark.cpuEventCounter
'nın talimat etkinlikleri dışındaki etkinlikler için bozuk değerler üretmesi sorunu düzeltildi. (06edd59)- Metrik öncelik sırasına uymak için
resumeTiming/runWithTimingDisabled
düzeltildi ve düşük öncelikli metriklerin duraklatılması/devam ettirilmesinin yüksek öncelikli metrik sonuçları üzerindeki etkisi önemli ölçüde azaltıldı. Ö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 gerçekleştiğinde timeNs artık önemli ölçüde azalmaz. (5de0968)
Sürüm 1.3
Sürüm 1.3.4
26 Mart 2025
androidx.benchmark:benchmark-*:1.3.4
iptal edilir. 1.3.4 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Benchmark Baseline Gradle eklentisindeki Gradle proje izolasyonu uyumsuzlukları düzeltildi. (b/404523257)
Sürüm 1.3.3
16 Ekim 2024
androidx.benchmark:benchmark-*:1.3.3
iptal edilir. 1.3.3 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- AVD cihazında boşluk olduğunda
CollectBaselineProfileTask
sorunu düzeltildi (Ia0225, b/371642809)
Sürüm 1.3.2
2 Ekim 2024
androidx.benchmark:benchmark-*:1.3.2
iptal edilir. 1.3.2 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Firebase Test Lab'in (FTL) Baseline Profile Gradle eklentisinden Baseline Profile veya Macrobenchmark sonuç dosyalarını çekememesi sorunu düzeltildi. (I2f678, b/285187547)
FTL'yi kullanmak için eklentiyi, eklenti bloğundaki temel profil modülüne aşağıdaki şekilde uygulayın:
plugins {
...
id("com.google.firebase.testlab")
}
ve ardından Firebase Test Lab'i şu şekilde 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.3.1
18 Eylül 2024
androidx.benchmark:benchmark-*:1.3.1
iptal edilir. 1.3.1 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Tüm temel profil uyarılarını (I7c36e, b/349646646) bastırmak için gradle özelliği
androidx.baselineprofile.suppressWarnings
eklendi. - Sarmalayıcı oluşturmak yerine uygulama tarafından oluşturulmuşsa önceden var olan
nonMinified…
vebenchmark…
kullanmak için Baseline Profile Gradle eklentisi düzeltildi. (Ia8934, b/361370179) - Emülatörlerde
automaticGenerationDuringBuild
etkinleştirildiğindejava.lang.AssertionError: ERRORS (not suppressed): EMULATOR
sorunu düzeltildi. Bunun yerine testi atlamak için yeni bir bağımsız değişken kullanılır. (If3f51, b/355515798) - Küçültme için mikro karşılaştırma:
org.junit.runner.notification.RunListener
alt sınıflarını karşılaştırma kitaplığı proguard'da tutun (Ic8ed5, b/354264743) TraceSectionMetric
seçeneğini belirleyerek sonlandırılmayan dilimleri yoksayın. Daha önce bunlar, toplama veya minimum süreyi bulma sırasında -1 süreye sahip olarak kabul ediliyordu. (If74b7)FrameTimingGfxInfoMetric
'da, işlem zaten çalışmıyorsa metriğin başlatılmasının kilitlenmeye neden olduğu sorun düzeltildi. (I6e412)
Sürüm 1.3.0
21 Ağustos 2024
androidx.benchmark:benchmark-*:1.3.0
iptal edilir. 1.3.0 sürümü bu commit'leri içerir.
1.2.0 sürümünden beri yapılan mikro kıyaslama değişiklikleri
- Çoğu cihazda çalıştırıldığında mikro kıyaslama testlerinde yöntem izleme varsayılan olarak etkindir.
- Yöntem izleme, ölçümlerden sonra ayrı bir aşama olarak çalışır. Bu sayede, tek bir karşılaştırma çalıştırmasından hem doğru ölçümler hem de yöntem izlemeleri elde edilebilir.
- Bazı Android OS ve ART sürümlerinde 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
- Birçok saniye boyunca çalışırken ANR'leri önlemek için kullanıcı arayüzü iş parçacığı karşılaştırma testleri (ör. Compose/View kullanıcı arayüzleriyle etkileşimde bulunanlar) için
measureRepeatedOnMainThread
eklendi. - ANR'yi önleme son tarihini aşması beklenen 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 sorunlara neden olabileceğinden CI çalıştırmaları için önerilmez).
- Birçok saniye boyunca çalışırken ANR'leri önlemek için kullanıcı arayüzü iş parçacığı karşılaştırma testleri (ör. Compose/View kullanıcı arayüzleriyle etkileşimde bulunanlar) için
- Sadeleştirme
- Küçültme etkinleştirilmişken mikro karşılaştırmayı iyileştirmek için yerleştirilmiş ProGuard kuralları
- Kitaplık modülünde küçültme/R8 için AGP 8.3 gerekir ve
build.gradle
içindekiandroid.buildTypes.release.androidTest.enableMinification
aracılığıyla etkinleştirilebilir. - Ölü kodun ortadan kaldırılmasını önlemek için deneysel
BlackHole.consume()
API eklendi (If6812, b/286091643)
- Metrikler
- Deneysel CPU etkinlik sayacı özelliği (
perf_event_open
metrikleri, 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 sayacı özelliği (
1.2.0 sürümünden beri MACRObenchmark'ta yapılan değişiklikler
- Makro karşılaştırmalar için yöntem izleme özelliği tamamen yenilendi.
- Artık yöntem izlemeleri
measureBlock
süresiyle sınırlandırılıyor ve işlem birden çok kez başlatılırsa birden fazla oturum yakalayabiliyor. - Daha önce, yöntem izleme yalnızca
StartupMode.COLD
kıyaslama testlerinde çalışır ve hedef işlemi yeniden başlatmayanmeasureBlocks
için hiçbir şey yakalamazdı. - Makro karşılaştırma testinde yöntem izlerinin temizlenmesi düzeltildi. Böylece, daha yavaş cihazlarda bile yöntem izleri tamamen yakalanıp geçerli olacak. (I6349a, b/329904950)
- Artık yöntem izlemeleri
- İşlem sonlandırıldığında
warmUp
yinelemeler sırasında ART profilini doğru şekilde boşaltarakCompilationMode.Partial(warmup=N)
ölçümlerin daha doğru olmasını sağlayın. (I17923) - Drop Shader yayın hatası mesajı
- Drop shader yayın hatası mesajına hata ayıklama önerileri eklendi
ProfileInstaller
1.3:- olmadan uygulamalara kıyaslama testi yaparken kilitlenmeleri önlemek için gölgelendirici bırakma davranışını geçersiz kılmaya yönelik iki enstrümantasyon bağımsız değişkeni ekleyin.
androidx.benchmark.dropShaders.enable=true/false
: Özellikle henüz profileinstaller 1.3'ü kullanmayan uygulamalarda karşılaştırma yaparken,StartupMode.Cold
başlatmalarında yapılanlar da dahil olmak üzere tüm gölgelendirici bırakma işlemlerini atlamak için kullanılabilir.androidx.benchmark.dropShaders.throwOnFailure=true/false
: Örneğin, uygulamalara profileinstaller 1.3 (I4f573) olmadan kıyaslama testi yaparken gölgelendiricileri bırakmaya çalışırken hatalara tolerans göstermek için kullanılabilir.
- Tamamen özelleştirilmiş Perfetto iz kaydı için özel
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 Macrobenchmark çalıştırmadan önce arka plandaki dexopt işlerini iptal edin. (I989ed)
- Macrobenchmark artık hedef uygulamanın bir ART profilini temizlemesi için 1 saniye bekliyor (daha önce 500 ms bekliyordu). (I85a50, b/316082056)
- TraceSectionMetric'te büyük değişiklikler
- Not: Aşağıdaki
TraceSectionMetric
değişiklikler, CI kullanımındaki çıktıları etkileyebilir ve süreksizliklere neden olabilir veya ayrıştırmayı bozabilir. - Bu metriğin çoğu kullanımı tekrarlanan etkinlikler için olduğundan ve ilk değer bu durumlarda verileri sileceğinden artık varsayılan değer toplamdır.
- Daha fazla mod seçeneğiyle daha özelleştirilebilir hale getirildi.
- Mod adları artık metrik çıkış adına (Studio ve JSON'da) yerleştiriliyor.
- Artık
Trace.{begin|end}AsyncSection
kullanılarak oluşturulan dilimleri destekliyor.
- Not: Aşağıdaki
- Metrikler
- Güç:
PowerMetric.deviceSupportsHighPrecisionTracking
,PowerMetric.deviceBatteryHasMinimumCharge()
vePowerMetric.deviceSupportsPowerEnergy()
eklendi - Dönüş türüyle eşleşmesi için
Metric.getResult
,getMeasurements
olarak yeniden adlandırıldı. - Tüm başlangıç algılama hatalarına log.w / exception etiketleri eklendi. Bu değişiklik, mevcut davranışı değiştirmez (bu nedenle bazı hatalar oluşturulur, bazıları ise başlatmayı sessizce algılayamaz), yalnızca daha anlaşılır hale getirir. Genellikle
Log.w()
ve başlatma metriklerini bildiremeyenler, kare dışı etkinliklerin eksik olduğu durumlardır. Başlatma algılandığında, kare zamanlaması bilgileri (UI/RT dilimlerinden) hariç olmak üzere istisnalar oluşturulur. (Id240f, b/329145809) - Üretilen 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
'eframeCount
ölçümü eklendi (yeni animasyonlar eklendi, geçersiz kılma sorunları düzeltildi). (I1e5aa) frameOverrunMs
metriğinin, dokümanlarda kullanılabildiği durumlarda izleme için tercih edilen metrik olduğu ve bunun nedenleri açıklığa kavuşturuldu. (I18749, b/329478323)- İzlemenin başında ve sonunda sonlandırılmamış karelerin birlikte eşleştirilerek tek bir uzun kare olarak yanlış raporlanmasına neden olan sorun düzeltildi. (I39353, b/322232828)
- Kareler üretilmediğinde
FrameTimingMetric
hatası iyileştirildi 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ı çıkışı yapıldı. (I956b9) FrameTimingMetric
içinde, özellikle belirli OEM cihazlarda kare kimliğinin ayrıştırılamamasına neden olan kilitlenme düzeltildi. (Ia24bc, b/303823815, b/306235276)FrameMetrics
bölümündeki kontrollerin katılığı azaltıldı ve hata mesajlarına daha fazla ayrıntı eklendi. (Geri ödeme)
- Güç:
Baseline Profile yakalama / 1.2.0 sürümünden beri Gradle eklentisinde yapılan değişiklikler
- AGP'nin önerilen maksimum sürümü 9.0.0-alpha01'e yükseltildi.
mergeArtProfile
vemergeStartupProfile
görevlerinin her zaman temel profil oluşturma işlemini beklediğinden emin olun. (I623d6, b/343086054)- Temel profilin başarıyla oluşturulması, nelerin değiştiğine dair bir özet oluşturur (I824c8, b/269484510).
- Uyarıları devre dışı bırakmak için DSL eklendi (Ic4deb, b/331237001)
automaticGenerationDuringBuild
devre dışıyken karşılaştırmaların oluşturulan temel profil kullanmasını sağlamak için düzeltme (Ic144f, b/333024280)BaselineProfile
veya karşılaştırma derleme türünü özelleştirirken temel profil oluşturma ve karşılaştırma işlemlerini etkinleştirmek içinnonMinified
gradle eklenti özelliği geçersiz kılmalarını düzeltin. (Ib8f05, b/324837887)- AGP 8.3.0-alpha15'ten önceki sürümlerde kitaplık temel profillerinin AAR'ye dahil edilmesiyle ilgili düzeltme. (I1d2af, b/313992099)
- Oluşturma görevinin sonunda sabit temel ve başlangıç profili çıkış URL'si. (I802e5, b/313976958)
1.2.0 sürümünden beri yapılan diğer önemli değişiklikler
- Trace yakalama
- Hata durumundan kaydedilmiş uyarıya geçiş yaparken EXITCODE 2 hatası azaltıldı
- Karşılaştırmalarda AIDL izlemeyi varsayılan olarak etkinleştirme(API 28 gerektirir) (Ia0af2, b/341852305)
- Karşılaştırmalarda varsayılan olarak taşıyıcı etiket izlemeyi etkinleştirin. Örneğin, wakelock izleme noktaları bu kapsamdadır. (Icfe44, b/286551983)
- Daha yavaş cihazlarda izleme başlatılırken kilitlenmeleri önlemek için iz yakalama başlatma zaman aşımı artırıldı (I98841, b/329145808)
- JSON, textproto ve proto ikili (kodlanmamış) varyantlarına sahip
PerfettoTraceProcessor.Session.queryMetrics
API'leri genel API'ye eklendi. Bu metrikler,TraceProcessor
'de yerleşik olarak bulunan metrikleri sorgulamanıza olanak tanır (I54d7f, b/304038382). - İzlemenin başında veri kaybı riskini azaltmak için Perfetto izleme kaydında engellemeyi başlatma özelliğini etkinleştirin. Yalnızca API 33 ve sonraki sürümlerde desteklenir. (Ie6e41, b/310760059)
- JSON çıkışı
- JSON çıktısında karşılaştırma bağlamına ek bilgiler eklendi:
context.artMainlineVersion
: Art ana hat modülünün tam sayı sürümü (cihazda varsa-1
, aksi takdirde)context.build.id
- android.os.Build.ID ile eşittir.context.build.version.codename
- Equals android.os.Build.VERSION.CODENAMEcontext.build.version.abbreviatedCodename
: Yayın öncesi kod adının ilk harfine karşılık gelir (yayın derlemeleri dahil) (Ie5020)
- Profil oluşturma izleriyle (ör.Perfetto, yöntem izleri) ilgili araçları kolaylaştırmak için JSON çıkışına
profilerOutput
listesi eklendi (I05ddd, b/332604449). - Android Test Orchestrator, karşılaştırma modüllerinde kullanıldığında uyarı eklendi. Bu durum, modül başına çıktı JSON dosyalarının tekrar tekrar üzerine yazılmasına neden olur. (Ia1af6, b/286899049)
- Dosya yazma veya işleme sonrası sırasında belirsiz kilitlenmeleri önlemek için dosya adları 200 karakterden uzun olduğunda hata verilir. (I4a5ab)
- JSON çıktısında karşılaştırma bağlamına ek bilgiler eklendi:
Sürüm 1.3.0-rc01
7 Ağustos 2024
androidx.benchmark:benchmark-*:1.3.0-rc01
iptal edilir. 1.3.0-rc01 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
androidx.benchmark.cpuEventCounter
'nın talimat dışı etkinlikler için bozuk değerler üretmesi (I7386a, b/286306579) sorunu düzeltildi.- Metrik öncelik sırasına uymak için
resumeTiming
/runWithTimingDisabled
düzeltildi ve düşük öncelikli metrik duraklatma/devam ettirmenin yüksek öncelikli metrik sonuçları üzerindeki etkisi önemli ölçüde azaltıldı. Ö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 gerçekleştiğinde timeNs artık önemli ölçüde azalmaz. (I39c2e, b/286306579, b/307445225) - Yığın örnekleme dönüşümünü ana iş parçacığının dışına taşıyarak yığın örneklemenin
measureRepeatedOnMainThread
'nın ana iş parçacığına zorlu zaman aşımı uygulamasına neden olma olasılığı azaltıldı. (I487a8, b/342237318) - AGP 7.3 veya sonraki sürümleriyle (ör. R8 sürümü 3.3) R8 kullanılırken ve AGP 8.1 veya sonraki sürümleriyle (ör. D8 sürümü 8.1) tüm derlemeler için yeni platform API'lerine erişimin manuel olarak ana hatlarının oluşturulması, API modelleme aracılığıyla otomatik olarak yapıldığından kaldırıldı. AGP kullanmayan müşterilerin D8 sürüm 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 argümanı 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
iptal edilir. 1.3.0-beta02 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Uyarı günlüğe kaydetmek için Perfetto'yu başlatırken EXITCODE
2
değerini sorunsuz bir şekilde işleyin ancak devam edin.
Sürüm 1.3.0-beta01
12 Haziran 2024
androidx.benchmark:benchmark-*:1.3.0-beta01
iptal edilir. 1.3.0-beta01 sürümü bu commit'leri 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 kullanılmayan kodların kaldırılmasını önlemek için deneysel
BlackHole.consume()
API'si eklendi. (If6812, b/286091643) - Mikro karşılaştırma testi artık yöntem izlemenin ölçümleri etkilemesini önlemek için doğru şekilde hata verecek. Bu durum, belirli cihazlarda yöntem izleme zorunlu kılındığında (enstrümantasyon bağımsız değişkenleri veya
MicrobenchmarkConfig
aracılığıyla) ve yöntem izlemeden sonra ölçüm yapılmaya çalışıldığında meydana gelir. Etkilenen cihazlarda API 26-30 veya bu müdahaleden etkilenen belirli ART ana modül sürümleri çalıştırılıyor ve bu cihazlar çalışma zamanındaProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice
aracılığıyla algılanabiliyor. (Iafb92, b/303660864)
Hata Düzeltmeleri
- Önerilen maksimum AGP sürümü 9.0.0-alpha01'e yükseltildi. (I5bbb0)
- Karşılaştırma bağlamına derleme modu eklendi (If5612, b/325512900)
- Varsayılan olarak AIDL izlemeyi etkinleştirme (API 28 gerektirir) (Ia0af2, b/341852305)
- JSON çıktısında karşılaştırma bağlamına 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
- Eşittirandroid.os.Build.ID
context.build.version.codename
- Eşittirandroid.os.Build.VERSION.CODENAME
context.build.version.abbreviatedCodename
: Yayın öncesi kod adının ilk harfine karşılık gelir (yayın derlemelerinde bile) (Ie5020)
StackSampling
,androidx.benchmark.profiling.sampleDurationSeconds
'e uygun olacak şekilde düzeltildi (Ib1d53)- Makro -> ortak bağımlılığı
api()
olarak değiştirin. Böylece, örneğinPerfettoTrace
vePerfettoConfig
daha kolay kullanılabilir. (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şlemcisi 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
iptal edilir. 1.3.0-alpha05 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Makro karşılaştırma metriği tüm yinelemeler için sıfır değer döndürdüğünde daha net bir istisna oluşturma (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, Macrobenchmark sırasında ayrı bir aşama olarak çalışır ve artık ölçümleri etkilemez. (If9a50, b/285912360, b/336588271)
- Gölgelendirici yayın hatası mesajı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
iptal edilir. 1.3.0-alpha04 sürümü bu onayları içerir.
API Değişiklikleri
- Tamamen özelleştirilmiş Perfetto iz kaydı için özel
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
öğesiniPowerMetric.deviceSupportsHighPrecisionTracking
olarak yeniden adlandırın (I5b82f) - Cihazın güç ölçümü özelliğine göre karşılaştırma ölçütlerini değiştirme veya atlama özelliğini etkinleştirmek için
PowerMetric.deviceBatteryHasMinimumCharge()
vePowerMetric.deviceSupportsPowerEnergy()
eklendi. (I6a591, b/322121218)
Hata Düzeltmeleri
- Önceki temel değer profiliyle karşılaştırma eklendi (I824c8, b/269484510)
- Uyarıları devre dışı bırakmak için DSL eklendi (Ic4deb, b/331237001)
- Karşılaştırma varyantları devre dışı bırakıldığında istisna, bilgi günlüğüne dönüştürüldü (I8a517, b/332772491)
- Macrobenchmark için yöntem izlerini yakalamayı kolaylaştırın. Macrobenchmark, gerçek
measureBlock()
süresiyle sınırlıdır. Daha önce hedef süreç başlatıldığında başlıyor ve yalnızca soğuk başlatmaları destekliyordu (Iee85a, b/300651094). - Perfetto izleme işlemcisi yavaş başladığında kilitlenmeyi önleme (I98841, b/329145808)
Sürüm 1.3.0-alpha03
17 Nisan 2024
androidx.benchmark:benchmark-*:1.3.0-alpha03
iptal edilir. 1.3.0-alpha03 sürümü bu commit'leri içerir.
Yeni Özellikler
PerfettoTraceProcessor.Session.queryMetrics
JSON, textproto ve proto ikili (kodlanmamış) varyantlarına sahip herkese açık API'ler ekler. Bu metrikler, TraceProcessor'a yerleştirilmiş metrikleri (I54d7f, b/304038382) sorgulamanıza olanak tanır.- Profil oluşturma izleriyle (ör. perfetto, yöntem izleri) ilgili araçların daha kolay kullanılması için JSON çıkışına
profilerOutput
eklendi. (I05ddd, b/332604449) - Perfetto yapılandırmasını karşılaştırmak için güç etiketi eklendi. Örneğin, wakelock izleme noktaları bu kapsamdadır. (Icfe44, b/286551983)
androidx.benchmark.profiling.skipWhenDurationRisksAnr
inst bağımsız değişkeni eklendi. Beklenen süre ANR'ye neden olabileceğinde yöntem izlemelerinin atlanmasını önlemek için false olarak ayarlanabilir. CI çalıştırmalarında bu durumun önlenmesi önemle tavsiye edilir.- Deneysel 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 yükünü değerlendirirken faydalıdır. (I61fb4, b/329146942)
API Değişiklikleri
TraceSectionMetric.Mode
, sealed class olarak değiştirildi. Böylece, when ifadelerini kapsamlı bir şekilde bozmadan gelecekte genişletme yapılabilir (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 listesinde daha önce yer alacak ş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üyle eşleşmesi için
Metric.getResult
,getMeasurements
olarak yeniden adlandırıldı (I42595)
Hata Düzeltmeleri
automaticGenerationDuringBuild
devre dışıyken karşılaştırmaların oluşturulan temel profil kullanmasını sağlamak için düzeltme (Ic144f, b/333024280)BaselineProfile
veya karşılaştırma derleme türünü özelleştirirken temel profil oluşturma ve karşılaştırma işlemlerini etkinleştirmek içinnonMinified
gradle eklenti özelliği geçersiz kılmalarını düzeltin. (Ib8f05, b/324837887)- Makro karşılaştırma testinde yöntem izlerinin temizlenmesi düzeltildi. Böylece, daha yavaş cihazlarda bile yöntem izleri tamamen yakalanıp geçerli olacak. (I6349a, b/329904950)
- İzlemenin başında veri kaybı riskini azaltmak için Perfetto izleme kaydında engellemeyi başlatma özelliğini 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 uyarı eklendi. Bu durum, modül başına çıktı JSON dosyalarının tekrar tekrar üzerine yazılmasına neden olur. (Ia1af6, b/286899049)
- Cihaz yerel ayarı yoksayılarak Studio çıkışında tutarlılık için binlik ayırıcı olarak "," (virgül) kullanılması zorunlu kılındı (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 değişiklik, mevcut davranışı değiştirmez (bu nedenle bazı hatalar oluşturulur, bazıları ise başlatmayı sessizce algılayamaz), yalnızca daha anlaşılır hale getirir. Genellikle
Log.w()
ve başlatma metriklerini bildiremeyenler, kare dışı etkinliklerin eksik olduğu durumlardır. Başlatma algılandığında, kare zamanlaması bilgileri (UI/RT dilimlerinden) hariç olmak üzere istisnalar oluşturulur. (Id240f, b/329145809) - Girişimi azaltmak için Macrobenchmark çalıştırmadan önce arka plandaki dexopt işlerini iptal edin. (I989ed)
- Üretilen 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
'eframeCount
ölçümü eklendi (yeni animasyonlar eklendi, geçersiz kılma sorunları düzeltildi). (I1e5aa) frameOverrunMs
metriğinin, dokümanlarda kullanılabildiği durumlarda izleme için tercih edilen metrik olduğu ve bunun nedenleri açıklığa kavuşturuldu. (I18749, b/329478323)
Sürüm 1.3.0-alpha02
20 Mart 2024
androidx.benchmark:benchmark-*:1.3.0-alpha02
iptal edilir. 1.3.0-alpha02 sürümü bu commit'leri içerir.
Yeni Özellikler
Yerleştirilmiş ProGuard kuralları aracılığıyla mikro kıyaslamada 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. İş yüküne bağlı olarak önemli bir performans artışı sağlayacak olan R8 küçültme/optimizasyonunu karşılaştırma modülünüzün
build.gradle
bölümünde etkinleştirmek için aşağıdakileri kullanın. (I738a3, b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
Hata Düzeltmeleri
- Yöntem izleme uyarısının mikro kıyaslama çıktısından ayrı bir satırda olması düzeltildi. (I0455c, b/328308833)
Sürüm 1.3.0-alpha01
21 Şubat 2024
androidx.benchmark:benchmark-*:1.3.0-alpha01
iptal edilir. 1.3.0-alpha01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Gereksiz "should" kelimesini önlemek için
MicrobenchmarkConfig
Boole parametreleri yeniden adlandırıldı (Ia8f00, b/303387299) - Ana iş parçacığı kıyaslamalarının (ör. Görünümler veya Compose kullanıcı arayüzlerine dokunanlar) özellikle CI'daki büyük paketler sırasında ANR'leri tetiklememesi için
BenchmarkRule.measureRepeatedOnMainThread
eklendi. (I5c86d) FrameTimingMetric
'nin deneysel bir alternatif uygulaması olanFrameTimingGfxInfoMetric
eklendi. Bu uygulamada ölçümler, Perfetto izinden çıkarılmak yerine doğrudan platformdan alınır. (I457cb, b/322232828)- Ayrı ayrı
warmUp
yinelemeleri sırasında ART profili dökümü alma özelliği eklendi. (I17923) TraceSectionMetric
API'sinde çeşitli değişiklikler yapıldı:Mode.Min
ekleyin,Mode.Max
- Bölüm adını metrik etiketi olarak geçersiz kılmak için etiket bağımsız değişkeni ekleyin.
- Metrik anlamını netleştirmek için çıkışa mod adı eklendi
- Bu metriğin çoğu kullanımında tekrarlanan etkinlikler söz konusu olduğundan varsayılan değer toplam olarak değiştirildi. Sürekli entegrasyon kullanımındaki bu değişikliklerin süreksizliklere neden olabileceğini veya ayrıştırmayı bozabileceğini unutmayın. (Ic1e82, b/301892382, b/301955938)
Hata Düzeltmeleri
- Belirtilen yönetilen cihaz mevcut olmadığında temel profil Gradle eklentisindeki hata mesajı iyileştirildi (Idea2b, b/313803289)
- AGP 8.3.0-alpha15'ten önceki sürümlerde kitaplık temel profillerinin AAR'ye dahil edilmesiyle ilgili düzeltme (I1d2af, b/313992099)
- Oluşturma görevinin sonunda sabit temel ve başlangıç profili çıkış URL'si (I802e5, b/313976958)
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)]
sorununu düzeltmek için veri kaynağı zaman aşımları ayarlandı (I8dc7d, b/323601788)ProfileInstaller
1.3:- olmadan uygulamalara kıyaslama testi yaparken kilitlenmeleri önlemek için gölgelendirici bırakma davranışını geçersiz kılmaya yönelik iki enstrümantasyon bağımsız değişkeni ekleyin.
androidx.benchmark.dropShaders.enable=true/false
: Özellikle henüz profileinstaller 1.3'ü kullanmayan uygulamalarda karşılaştırma yaparken,StartupMode.Cold
başlatmalarında yapılanlar da dahil olmak üzere tüm gölgelendirici bırakma işlemlerini atlamak için kullanılabilir.androidx.benchmark.dropShaders.throwOnFailure=true/false
: Örneğin, uygulamalara profileinstaller 1.3 (I4f573) olmadan kıyaslama testi yaparken gölgelendiricileri bırakmaya çalışırken hatalara tolerans göstermek için kullanılabilir.
- Birkaç saniyeden uzun sürmesi beklenen durumlarda kullanıcı arayüzü iş parçacığında yöntem izlemeyi atlayın ve hata oluştuğunda yöntem izlemelerini temizleyin. (I6e768)
- Dosya yazma veya işleme sonrası sırasında belirsiz kilitlenmeleri önlemek için dosya adları 200 karakterden uzun olduğunda hata verilir. (I4a5ab)
- İzlemenin başında ve sonunda sonlandırılmamış karelerin birlikte eşleştirilerek tek bir uzun kare olarak yanlış raporlanmasına neden olan sorun düzeltildi. (I39353, b/322232828)
- Kullanıcı derlemelerindeki ART profillerini temizlemek için API düzeyi 30-33'te bir paketi yeniden yüklerken API düzeyi 30 ve sonraki sürümlerde
--skip verification
kullanın. Bu sayede, bazı cihaz sınıflarında hatalara neden olan Play Protect uyarıları atlanabilir. (Ic9e36) - Sistem kullanıcı arayüzü veya başlatıcı gibi bir sistem uygulaması olmadığında uygulamaları kapatmak için
am force-stop
seçeneğini kullanın. (I5e028) - Macrobenchmark artık hedef uygulamanın bir ART profilini temizlemesi için
1 second
bekliyor (önceden500 ms
bekliyordu). (I85a50, b/316082056) - Kareler üretilmediğinde
FrameTimingMetric
hatası iyileştirildi 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ı çıkışı yapıldı. (I956b9) FrameTimingMetric
içinde, özellikle belirli OEM cihazlarda kare kimliğinin ayrıştırılamamasına neden olan kilitlenme düzeltildi. (Ia24bc, b/303823815, b/306235276)FrameMetrics
bölümündeki kontrollerin katılığı azaltıldı ve hata mesajlarına daha fazla ayrıntı eklendi. (Geri ödeme)
Sürüm 1.2
Sürüm 1.2.4
17 Nisan 2024
androidx.benchmark:benchmark-*:1.2.4
iptal edilir. 1.2.4 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Temel profil srcset'inin karşılaştırma varyantlarında ayarlanmaması sorunu düzeltildi. Ayrıca, kitaplıklarda döngüsel bağımlılığa neden olan
automaticGenerationDuringBuild
sorununu da düzeltir. (I28ab7, b/333024280) - Sistem kullanıcı arayüzü veya başlatıcı gibi bir sistem uygulaması olmadığında uygulamaları kapatmak için
am force-stop
seçeneğini kullanın. Bu düzeltme, işlemin tamamen sonlandırılmaması nedeniyle "Package $package must not be running prior to cold start!" (Paket $package, sıfırdan başlatılmadan önce çalışmamalıdır!) hatasıylaStartupMode.COLD
karşılaştırmalarının kilitlenmesini önler. (I5e028)
Sürüm 1.2.3
24 Ocak 2024
androidx.benchmark:benchmark-*:1.2.3
iptal edilir. 1.2.3 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- AGP sürümü 8.3.0 veya daha yüksek olduğunda Baseline Profile Gradle eklentisinden istisna kaldırıldı.
- AGP 8.3.0-alpha15'ten önceki sürümlerde kitaplık temel profillerinin AAR'ye dahil edilmesiyle ilgili düzeltme.
Sürüm 1.2.2
1 Aralık 2023
androidx.benchmark:benchmark-*:1.2.2
iptal edilir. 1.2.2 sürümü şu commit'leri içerir.
Temel profiller
- Yürütme günlüklerinde, temel profil çıkış dosyasının yolu yerel dosya URI'si olarak gösterilir (aosp/2843918, aosp/2853665, b/313976958).
Sürüm 1.2.1
15 Kasım 2023
androidx.benchmark:benchmark-*:1.2.1
iptal edilir. 1.2.1 sürümü şu commit'leri içerir.
Yeni Özellikler
- Kullanıcı test varyantlarını devre dışı bıraktığında gösterilen hata mesajı iyileştirildi (b/307478189).
- AS test çalıştırması entegrasyonunu desteklemek için özellikler eklendi (b/309805233), (b/309116324)
Sürüm 1.2.0
18 Ekim 2023
androidx.benchmark:benchmark-*:1.2.0
iptal edilir. 1.2.0 sürümü şu commit'leri içerir.
1.1.0 sürümünden beri yapılan önemli değişiklikler
Temel profiller
- Yeni Baseline Profile Gradle Plugin, temel profilleri test ve derleme iş akışınıza dahil etme ve yakalama işlemlerini otomatikleştirir.
BaselineProfileRule.collect
artık kararlı, önceki deneyselBaselineProfileRule.collectBaselineProfile
API'nin basitleştirilmiş ve kolaylaştırılmış bir sürümü- Yalnızca
packageName
belirtin ve uygulamanızı kullanın
- Yalnızca
- Temel profil oluşturan kitaplıklar için artık oluşturulan kuralları kodda (
BaselineProfileRule.collect
bağımsız değişkeni) veya daha da basit bir şekilde Gradle eklentisinde filtreleyebilirsiniz. - Düzeltmeler
- Android U+'da temel profil toplama sorunu düzeltildi (Id1392, b/277645214)
Macrobenchmark
- Derleme
- Macrobenchmark artık her derleme için derleme durumunu doğru şekilde tamamen sıfırlıyor. Bu işlem için Android 14'ten önce APK'nın yeniden yüklenmesi gerekiyor. Bu nedenle, ölçülenlerde durumu (ör. kullanıcı girişi) korumak istiyorsanız Android 14 ve sonraki sürümlerde karşılaştırma yapmanız önemle tavsiye edilir.
- Uygulama derlemesini ayrı ayrı kontrol ederek ve
CompilationMode.Ignore()
veya enstrümantasyon bağımsız değişkeni ile derlemeyi atlayarak bu sorunu da çözebilirsiniz.
Araç Bağımsız Değişkenleri
- Daha hızlı doğrulama çalıştırmaları için
androidx.benchmark.dryRunMode.enable
enstrümantasyon bağımsız değişkeni desteği (ör. karşılaştırma oluştururken veya göndermeden önce) (mikro karşılaştırmada zaten kullanılabilir) androidx.benchmark.profiling.mode=StackSampling
veMethodTracing
için destek.- Çalışma zamanı filtreleme temel profili 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. Örneğin, Compose yeniden oluşturma izleme.StartupMode.COLD
ile kullanıldığında, izleme kitaplığı uygulama başlatma sırasında 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ı için
Şartlar
- Macrobenchmark artık profil yakalama / sıfırlama ve gölgelendirici önbelleğini temizleme işlemlerini etkinleştirmek için hedef uygulamada
ProfileInstaller
1.3.0 veya daha yeni bir sürüm gerektiriyor.
- Macrobenchmark artık profil yakalama / sıfırlama ve gölgelendirici önbelleğini temizleme işlemlerini etkinleştirmek için hedef uygulamada
Yeni deneysel metrik API'leri
- Uygulamanızdaki
trace("") {}
bloklarından basit zamanlamalar çıkarmanıza veya Perfetto'nunTraceProcessor
tam sorgu özelliğinden yararlanmak için TraceMetric kullanmanıza olanak tanıyan deneyselTraceSectionMetric
eklendi. - Güç kullanımı bilgilerini yakalamak için deneysel
PowerMetric
eklendi - Sayfa hatalarını saymak için deneysel
MemoryCountersMetric
eklendi. - Sistem izlerinden (Perfetto izleri olarak da bilinir) metrikleri çıkarmak için dahili olarak kullanılan deneysel
PerfettoTraceProcessor
API'si eklendi.
- Uygulamanızdaki
Düzeltmeler
- Birden fazla APK'dan (ör. uygulama paketinden) yüklenen bir uygulamadan profil yüklenirken veya profiller çıkarılırken yaşanan kilitlenme sorunları düzeltildi.
- Tutarsız çerçeve kimliklerine sahip çerçevelerin (genellikle API 31 ve sonraki sürümlerdeki dalgalanmalar sırasında oluşan çerçeveler) yoksayılması sorunu düzeltildi (I747d2, b/279088460).
FrameTimingMetric
- 64 MB'tan büyük izlemelerde ayrıştırma hataları düzeltildi (Ief831, b/269949822).
- Cihaz (özellikle emülatör) işletim sistemi görüntüsü izleme veya derleme için doğru şekilde yapılandırılmadığında oluşan hatalar netleştirildi.
- Pili olmayan cihazlarda (mikro ve makro) pil seviyesi kontrolünü atlama
- Geçersiz çıkış dizinleri için daha net hatalar ve daha güvenli varsayılan değerlerle dosya çıkışı iyileştirildi.
- Tutarlı bir şekilde gölgelendirici önbelleği bırakılarak
StartupMode.COLD
kararlılığı iyileştirildi (MacrobenchmarkScope.dropShaderCache
üzerinden de sunulur). startActivityAndWait
için sabit leanback yedeği.
Mikro karşılaştırma testi
- Özellikler
- Diğer metriklerden sonra profil oluşturma ayrı bir aşamaya taşındı. Böylece tek bir test çalıştırması hem doğru zamanlama hem de profil oluşturma sonuçlarını gösterebilir.
- Deneysel API'ler
- Özel metrikleri tanımlamak, izlemeyi ve profil oluşturmayı yapılandırmak için deneysel
MicrobenchmarkConfig
API eklendi. Yöntem izlemelerini veya izleme noktalarını yakalamak için kullanılabilir (ancak izleme ek yüküne dikkat edin). - JUnit olmadan
BenchmarkState
'ıBenchmarkRule
'dan ayrı olarak kontrol etmek için deneysel API'ler eklendi. - Referans değeri 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 profil oluşturmayı yapılandırmak için deneysel
- Düzeltmeler
- Android Studio karşılaştırma çıkışında eksik olan baştaki boşlukları geçici olarak çözün.
- Uyarıların Android Studio karşılaştırma testinde yazdırılamaması sorunu düzeltildi.
- Android 13 (API 33) ve sonraki sürümlerdeki
SampledProfiling
kilitlenme sorunu düzeltildi. IsolationActivity
ve Perfetto izleme atlanarakdryRunMode
'nın performansı büyük ölçüde iyileştirildi (Eski işletim sistemi sürümlerinde 10 kata kadar daha hızlı deneme modu).
Sürüm 1.2.0-rc02
6 Ekim 2023
androidx.benchmark:benchmark-*:1.2.0-rc02
iptal edilir. 1.2.0-rc02 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Benchmark dosya çıkışının artık
BaselineProfile
eklenti dosyası kopyalamayı bozmaması için düzeltildi. Dosyalar oluşturulup cihazdan kopyalanmış ancak Gradle eklentisinin göremeyeceği şekilde yeniden adlandırılmış. (I8dbcc, b/303034735, b/296453339) - Makrobenchmark modülünden hedef uygulamaya yerleştirme yapılırken
tracing-perfetto
yükleme hata mesajları netleştirildi.
Sürüm 1.2.0-rc01
20 Eylül 2023
androidx.benchmark:benchmark-*:1.2.0-rc01
iptal edilir. 1.2.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Perfetto SDK izleme bir kıyaslama testinde başlatılamadığında artık bir istisna (çözüm talimatlarıyla birlikte) oluşturuluyor. (I6c878, b/286228781)
- ART yöntemi izlemesi -> perfetto biçimi dönüştürülürken OOM kilitlenmesi düzeltildi. (I106bd, b/296905344)
- (Macrobenchmark) Studio test çıkışında bağlantı oluşturulduğunda yöntem izleme etiketi netleştirildi ve yöntem izleme dosya adlarının cihazda/ana makinede benzersiz olması için düzeltildi. Böylece, birden fazla karşılaştırma testi çalıştırıldığında üzerine yazılmayacak. (I08e65, b/285912360)
- Temel profil yakalanırken cihazın uyanık olmasını sağlar. (I503fc)
Sürüm 1.2.0-beta05
30 Ağustos 2023
androidx.benchmark:benchmark-*:1.2.0-beta05
iptal edilir. 1.2.0-beta05 sürümü şu commit'leri içerir.
Yeni Özellikler
- Baseline Profile Gradle eklentisi artık Android Gradle eklentisi 8.3'ü destekliyor. (aosp/2715214)
Sürüm 1.2.0-beta04
23 Ağustos 2023
androidx.benchmark:benchmark-*:1.2.0-beta04
iptal edilir. 1.2.0-beta04 sürümü şu commit'leri içerir.
Yeni Özellikler
- Baseline Profiles Gradle eklentisi artık Android Gradle eklentisi 8.3'ü destekliyor. (aosp/2715214)
Hata Düzeltmeleri
- Çıkış dosyası adlarını daha fazla temizleyerek, çıkış dosyası adlarında "=" ve ":" karakterlerini kullanmayarak dosyaları yazma / taşıma ve çekme işlemlerindeki (özellikle parametrelendirilmiş testlerden gelenler) hataları düzeltin. (I759d8)
Sürüm 1.2.0-beta03
9 Ağustos 2023
androidx.benchmark:benchmark-*:1.2.0-beta03
iptal edilir. 1.2.0-beta03 sürümü şu commit'leri içerir.
API Değişiklikleri
TraceSectionMetric
filtresine yalnızca hedef paketi filtreleme argümanı eklendi. Bu argüman varsayılan olarak etkindir (Ia219b, b/292208786).
Hata Düzeltmeleri
fullTracing.enable
enstrümantasyon bağımsız değişkeni, yapıt adıyla ve diğer referanslarla tutarlılık sağlamak içinperfettoSdkTracing.enable
olarak yeniden adlandırıldı.fullTracing.enable
, yedek olarak çalışmaya devam edecek. (I7cc00)- Dahili izleme noktaları (mikro kıyaslama döngüsü/aşama izleme dahil) içeren kıyaslama kitaplığı artık Studio sistem izleme görüntüleyicisinde gösterilecek ve Perfetto'da doğru işlem altında yer alacak. (I6b2e7, b/293510459)
- API 31 ve sonraki sürümlerde NOT-PROFILEABLE macrobenchmark hatası kaldırıldı ve eng/userdebug root edilmiş cihazlarda profil oluşturulabilirliği kontrolü atlandı. (I2abac, b/291722507)
- Dex Layout Optimizations kullanılırken başlangıç profili kuralları artık temel profil kuralları olarak da kabul ediliyor. (aosp/2684246, b/293889189)
Sürüm 1.2.0-beta02
26 Temmuz 2023
androidx.benchmark:benchmark-*:1.2.0-beta02
iptal edilir. 1.2.0-beta02 sürümü şu commit'leri içerir.
API Değişiklikleri
- Mikro karşılaştırma özel metrikleri ve yapılandırması (ör. profil oluşturucu ve izleme) için deneysel API'ler eklendi. (I86101, b/291820856)
Hata Düzeltmeleri
- Yakın zamanda API 26/28 ARM64 emülatörlerinde düzeltildiği gibi, işletim sistemi izleme için yanlış yapılandırıldığında makro karşılaştırmada hata bildirilir. (I0a328, b/282191686)
- Bazı emülatörler bu sorunu yakın zamanda düzelttiğinden, derleme sıfırlama hatasıyla ilgili ayrıntı eklenerek emülatörün güncellenmesi önerildi. (I8c815, b/282191686)
androidx.test.uiautomator:uiautomator:2.2.0
öğesiniimplementation
bağımlılığı yerineapi
bağımlılığı yapın. (I1981e)
Sürüm 1.2.0-beta01
18 Temmuz 2023
androidx.benchmark:benchmark-*:1.2.0-beta01
iptal edilir. 1.2.0-beta01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Studio'daki karşılaştırma çıktısında bazen gizlenen uyarılar düzeltildi ve Studio'da karşılaştırma çıktısından gelen, başta yer alan boşlukların gösterilmemesi sorunu giderildi (Ia61d0, b/227205461, b/286306579, b/285912360).
FrameTimingMetric
için sabit yorum. 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
iptal edilir. 1.2.0-alpha16 sürümü şu commit'leri içerir.
API Değişiklikleri
BaselineProfileRule.collectBaselineProfile()
API'sinin adıBaselineProfileRule.collect()
olarak değiştirildi. (I4b665)
Hata Düzeltmeleri
androidx.benchmark.profiling.mode = MethodTracing
için makro karşılaştırma desteği. (I7ad37, b/285912360)- Mikro karşılaştırma profili oluşturma ayrı bir aşamaya taşındı. Bu nedenle, ölçümün yerini almak yerine sonrasında sırayla gerçekleşir.
MethodTracing
Varsa izleme bölümleri de artık yakalanan Perfetto izine dahil ediliyor. (I9f657, b/285014599) Mode.Sum
ileTraceSectionMetric
'ya sayı ölçümü ekleyin. (Ic121a, b/264398606)
Sürüm 1.2.0-alpha15
7 Haziran 2023
androidx.benchmark:benchmark-*:1.2.0-alpha15
iptal edilir. 1.2.0-alpha15 sürümü şu commit'leri içerir.
Yeni Özellikler
- Hedef uygulamanın bellek kullanımını izlemek için deneysel
MemoryUsageMetric
eklendi. (I56453, b/133147125, b/281749311) PerfettoTrace.record
ile tamamen özel Perfetto yapılandırmaları için destek ekleyin (If9d75, b/280460183)- Temel profil oluşturmayı atlama özelliği 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
'nınfilterPredicate
argümanı, varsayılan filtre davranışının dokümanlarda daha net olması için eşdeğer bir varsayılan değerle birlikte null olmayan olarak değiştirildi. (I3816e)
Hata Düzeltmeleri
- Çalışma zamanının büyük bir bölümünü oluşturdukları için
IsolationActivity
vedryRunMode
'de Perfetto izlemeyi devre dışı bırakarak performansı önemli ölçüde artırın. (Ie4f7d) - Enstrümantasyon testi bağımsız değişkenleri
androidx.benchmark.profiling.mode=StackSampling
veandroidx.benchmark.profiling.sampleFrequency
kullanılarak Macrobenchmark'larda çağrı yığını örnekleme desteği. (I1d13b, b/282188489) - Android U (API 34) ve emülatörlerde gölgelendiriciler bırakılırken yaşanan kilitlenme sorunu düzeltildi. (I031ca, b/274314544)
Sürüm 1.2.0-alpha14
3 Mayıs 2023
androidx.benchmark:benchmark-*:1.2.0-alpha14
iptal edilir. 1.2.0-alpha14 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Tutarsız çerçeve kimliklerine sahip çerçevelerin
FrameTimingMetric
tarafından yoksayılması sorunu düzeltildi. Bu durum, son platform sürümlerindeki (API 31+) bazı animasyonlarınRenderThread
animasyon yaparken (ör. dalgalanma sırasında) birçok kareyi yoksaymasına neden oluyordu. (I747d2, b/279088460) - 64 MB'tan büyük izler için iz işleme birimi ayrıştırma işlemi düzeltildi. (Ief831, b/269949822)
pm dump-profiles
komutunun farklı çıkışı nedeniyle Android U'da temel profil oluşturma işleminin başarısız olmasına yol açan sorun düzeltildi. (Id1392, b/277645214)- Dizeleri doğru şekilde karşılaştırmak için GPU saat kilitleme komut dosyasını düzeltin (I53e54, b/213935715)
Sürüm 1.2.0-alpha13
5 Nisan 2023
androidx.benchmark:benchmark-*:1.2.0-alpha13
iptal edilir. 1.2.0-alpha13 sürümü şu commit'leri içerir.
API Değişiklikleri
- Gelecekte kullanıma sunulacak başlangıç profili özelliğini desteklemek için temel profiller oluşturulurken profil türü parametresi eklendi (Ie20d7, b/275093123).
- Perfetto izinin içeriğine göre tamamen özel metrikler tanımlamak için yeni bir deneysel
TraceMetric
API eklendi. (I4ce31, b/219851406) - Bir karşılaştırma sırasında sayfa hatalarının 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
iptal edilir. 1.2.0-alpha12 sürümü şu commit'leri 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ır ve geliştirici iş akışını basitleştirir.
API Değişiklikleri
- API 21 ve 22'de Perfetto izleme desteği kaldırıldı. Bu, hem mikro karşılaştırmaları hem de deneysel
PerfettoTrace
API'lerini içerir. Bu sürümden önce, bazı cihazlardaUiAutomation
bağlantıları güvenilir değildi. (I78e8c) - İzleme içeriğinin ayrıştırılmasını sağlamak için
PerfettoTraceProcessor
ile ilgili herkese açık deneysel API eklendi. Bu, Perfetto izleme verilerine dayalı tamamen özel metriklere doğru atılan bir adımdır. (I2659e, b/219851406)
Sürüm 1.2.0-alpha11
8 Mart 2023
androidx.benchmark:benchmark-*:1.2.0-alpha11
iptal edilir. 1.2.0-alpha11 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Birden fazla APK içeren bir uygulama paketinden profiller yeniden yüklenirken veya çıkarılırken
MacrobenchmarkRule
veBaselineProfileRule
'de kilitlenme sorunu düzeltildi. (I0d8c8, b/270587281)
Sürüm 1.2.0-alpha10
22 Şubat 2023
androidx.benchmark:benchmark-*:1.2.0-alpha10
iptal edilir. 1.2.0-alpha10 sürümü şu commit'leri içerir.
Yeni Özellikler
- Android 14 ve sonraki sürümlerde, yeni bir platform özelliği sayesinde Macrobenchmark artık derleme durumunu sıfırlamak için hedef uygulamaları yeniden yüklemiyor. Daha önce, cihazın root edilmiş olması veya her karşılaştırma testi çalıştırılmadan önce tüm uygulama durumunun (ör. kullanıcı girişi) kaldırılması gerekiyordu. (I9b08c, b/249143766)
Hata Düzeltmeleri
- Derleme atlandığı için
DryRunMode
artık boş profille kilitlenmeyecek şekilde düzeltildi. Bunun yerine, tek bir yineleme çalıştırır ve bir şeyin yakalandığından emin olmak için profili çıkarır. (I2f05d, b/266403227) - Eski API düzeylerinde powerstats varlığı kontrol edilirken yaşanan
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
iptal edilir. 1.2.0-alpha09 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Tüm karşılaştırmaları / temel profil oluşturmayı devre dışı bırakmak için
None
değerininandroidx.benchmark.enabledRules
enstrümantasyon bağımsız değişkenine iletilmesi etkinleştirildi. (I3d7fd, b/258671856) - Uygulama modüllerinde (ör.kendi kendine enstrüman oluşturmayan test APK'ları)
PerfettoTrace
yakalamayla ilgili sorun düzeltildi (I12cfc). - Studio çıkışında temel profil adb çekme bağımsız değişken sırası düzeltildi (I958d1, b/261781624)
- Arm emulator api 33 artık bir makro karşılaştırma testi çalıştırmaya çalışırken doğru şekilde tanınıyor ve uyarıyı doğru şekilde yazdırıyor. (69133b,b/262209591)
- Macrobenchmark'ta pili olmayan cihazlarda pil seviyesi kontrolünü atlama (fe4114, b/232448937)
Sürüm 1.2.0-alpha08
7 Aralık 2022
androidx.benchmark:benchmark-*:1.2.0-alpha08
iptal edilir. 1.2.0-alpha08 sürümü şu commit'leri içerir.
API Değişiklikleri
- Testin bir parçası olarak Perfetto izlerini (Sistem İzleri olarak da bilinir) yakalamak, test davranışını ve performansını incelemek için deneysel yeni API'ler
PerfettoTrace.record {}
vePerfettoTraceRule
eklendi. (I3ba16) BaselineProfileRule
artık paket ön ekleri listesi yerine filtre yüklemi kabul ediyor. Bu, testin filtreleme üzerinde tam kontrol sahibi olmasını sağlar. (I93240)- Temel profil N yineleme boyunca sabit olana kadar bekleyen deneysel bir API
BaselineProfileRule.collectStableBaselineProfile
ekleyin. (I923f3) BaselineProfileRule
kullanarak temel profil oluştururken çıkış dosyası adı öneki belirtme özelliği eklendi. (I7b59f, b/260318655)
Hata Düzeltmeleri
- Dosya çıkışı yazma işleminin güvenliğini artırın. Bu sayede, özellikle API 21 / 22'de çıkış dosyalarının sessizce yazılmaması/eklenmemesi önlenir. (If8c44, b/227510293)
- Dosyanın doğru şekilde oluşturulup yerleştirilmesi için
simpleperf
izleme çıkışını düzeltin. Bu, genel olarak bir dosyanın gradle tarafından başarıyla çekilemediği sorunları da düzeltir. (I12a1c, b/259424099) - Profileinstaller çok eski olduğunda yazdırılan profileinstaller hata mesajı iyileştirildi. Bu mesajda artık desteklenmediği belirtilmek yerine API 31-33'te temel profilleri ölçmek için profileinstaller sürümünün (1.2.1) güncellenmesi gerektiği belirtiliyor. (Ia517f, b/253519888)
- Hata mesajında birkaç kabuk komutu hatasını düzeltin. Başarısız perfetto yakalama ikili kurulumu ve iz yakalama hataları da dahil olmak üzere gerekli API'nin <=23 olduğunu yazdırın (Ib6b87, b/258863685).
- Oluşturulan profil kurallarını, zaman içinde değişirken (kaynak kontrolüne profil kuralları eklenirken) değişiklik sayısını en aza indirecek şekilde otomatik olarak sıralayın. (Ie2509)
- Android 13'ten (API düzeyi 33) önceki sürümlerde, root erişimi olmayan derlemelerde
Expected no stderr from echo 3 > /proc/sys/vm/drop_caches
mesajıyla kilitlenme sorunu düzeltildi (I6c245, b/259508183).
Bilinen Sorunlar
- MacrobenchmarkScope.dropShaderCache()
, henüz yayınlanmamış olan profileinstaller manifest dosyasında yayın kaydının eksik olması nedeniyle kilitlenebilir. (I5c728, b/258619948) profileinstaller:1.3.0-alpha02
'deki sorunu geçici olarak çözmek için uygulamanızın (karşılaştırmanızın değil) AndroidManifest.xml dosyasına aşağıdakileri ekleyin:
<!-- workaround bug in profileinstaller 1.3.0-alpha02, remove when updating to alpha03+ -->
<receiver
android:name="androidx.profileinstaller.ProfileInstallReceiver"
android:permission="android.permission.DUMP"
android:exported="true">
<intent-filter>
<action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
</intent-filter>
</receiver>
Sürüm 1.2.0-alpha07
9 Kasım 2022
androidx.benchmark:benchmark-*:1.2.0-alpha07
iptal edilir. 1.2.0-alpha07 sürümü şu commit'leri içerir.
API Değişiklikleri
- Makro karşılaştırmalarda enerji ve gücü ölçmek için
PowerMetric
API'si ekler. (Ife601, b/220183779) - Gölgelendirici önbelleğinin gerçekten bırakılması için
MacrobenchmarkScope.dropShaderCache()
düzeltildi. Bu işlem, gölgelendiriciler artık her yinelemede tutarlı bir şekilde temizlendiğindenStartupMode.COLD
karşılaştırma testlerinden yaklaşık 20 ms'lik gürültüyü kaldırır. Daha önce,Partial
derleme işlemi, ısınma yinelemeleri kullanılarak yapıldığında yanlış şekilde hızlı sayılar bildiriyordu. Bunun nedeni, ısınma sırasında gölgelendirici önbelleğe almanın daha olası olmasıydı. Bu düzeltme için cihazın root edilmiş olması 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 geçirilen toplam sürenin ölçülmesine olanak tanıyan
TraceSectionMode("label", Mode.Sum)
eklendi. Örneğin,TraceSectionMetric("inflate", Mode.Sum)
, bir makro karşılaştırma testinde enflasyon için harcanan toplam süreyle ilgiliinflateMs
metriğini raporlar. Ayrıca, hedef uygulamadaforceEnableAppTracing
kullanılarakTraceSectionMetric
veandroidx.tracing.Trace
'nin daha düşük API düzeyleriyle birlikte çalışması sağlandığından API 29 şartı 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)
- Temel profil
adb pull
komutunda cihazı belirtin. Böylece birden fazla cihaz bağlıysa (en fazla bir emülatör) çekme komutu kolayca kopyalanabilir (I6ac6c, b/223359380). - Makro karşılaştırma testi APK'sı kendi kendine enstrümanlı olarak ayarlanmamışsa hata ekleyin. Bu hata, hedef uygulamanın işlemi içinde makro karşılaştırma yapılmasını engeller. İşlem sırasında makro karşılaştırma testi, uygulamayı derleyemez/sonlandıramaz/soğuk başlatamaz veya kendi izinlerini kontrol edemez (I4279b).
measureRepeated()
'da,setupBlock
işleminden sonraStartupMode.COLD
komutunun hedef işlemi sonlandırmamasına neden olan sorun düzeltildi. ArtıksetupBlock
uygulamayla etkileşimde bulunulduğunda uygulama işlemi çalışmaya devam etmeyecek ve geçersiz bir baştan başlatma ölçümü yapılmayacak. (I8ebb7)
Sürüm 1.2.0-alpha06
24 Ekim 2022
androidx.benchmark:benchmark-*:1.2.0-alpha06
iptal edilir. 1.2.0-alpha06 sürümü şu commit'leri içerir.
API Değişiklikleri
BaselineProfileRule
artık Android 13'te (API 33) root erişimi gerektirmiyor ve deneysel bir özellik olmaktan çıktı. (Ie0a7d, b/250083467, b/253094958)- Bu değişiklik, bir uygulamadaki profillerin root erişimi olmayan cihazlarda diske nasıl boşaltıldığını da düzeltir ancak hedef uygulamanın profileinstaller bağımlılığının güncellenmesini gerektirir.
- Root erişimi olmayan bir cihazda
BaselineProfileRule
veyaCompilationMode.Partial(warmupIterations)
kullanmak için hedef uygulamanızı daandroidx.profileinstaller.profileinstaller:1.3.0-alpha01
kullanacak şekilde güncellemeniz gerekir. Bu, profilin derlenip çıkarılabilmesi için diske doğru şekilde boşaltılmasını sağlar.
Hata Düzeltmeleri
- API 33 ve sonraki sürümlerdeki
SampledProfiling
kilitlenme sorunu düzeltildi. (I40743, b/236109374)
Sürüm 1.2.0-alpha05
5 Ekim 2022
androidx.benchmark:benchmark-*:1.2.0-alpha05
iptal edilir. 1.2.0-alpha05 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Yakalanan karşılaştırma izleri için Studio sistem izi görüntüleyicideki kare dökümünü düzeltme (I3f3ae, b/239677443)
FrameTimingMetric
,FrameOverrun
'nin 29 yerine API 31 gerektirecek şekilde listelenmesi için düzeltildi (I716dd, b/220702554)BaselineProfileRule
içinde yinelemeyi ayarlayın ve hedef paket yüklenmemişse açıkça hata verin (MacrobenchmarkRule için zaten yapılmıştı). (Ic09a3, b/227991471)
Sürüm 1.2.0-alpha04
21 Eylül 2022
androidx.benchmark:benchmark-*:1.2.0-alpha04
iptal edilir. 1.2.0-alpha04 sürümü şu commit'leri içerir.
Yeni Özellikler
Daha hızlı yerel geliştirme ve uygulama otomasyonunu doğrulama (ör. ön gönderme aşamasında) için makro karşılaştırma testine
dryRunMode.enable
enstrümantasyon bağımsız değişkeni desteği ekleyin (mikro karşılaştırma testinde zaten mevcuttur). Bu işlem, yinelemeleri 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
StartupTimingMetric
artık ölçülen etkinliklerinMacrobenchmarkScope.startActivityAndWait()
üzerinden başlatılmasını gerektirmiyor. Bu, metriğin örneğin bildirimler,Context.startActivity()
, uygulama içi etkinliğe dayalı gezinme veya kabuk komutlarından başlatmaları alabileceği anlamına gelir. (Ia2de6, b/245414235)- Kare algılamanın katılığı azaltılarak
startActivityAndWait
'nın emülatörlerde başlatma işleminin 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
iptal edilir. 1.2.0-alpha03 sürümü şu commit'leri içerir.
Yeni Özellikler
BenchmarkState
'nınBenchmarkRule
/JUnit4
'dan bağımsız olarak kullanılması için deneysel API'ler eklendi. (Id478f, b/228489614)
Hata Düzeltmeleri
startActivityAndWait
için Leanback yedekleme özelliği eklendi. (01ed77, b/242899915)
Sürüm 1.2.0-alpha02
24 Ağustos 2022
androidx.benchmark:benchmark-*:1.2.0-alpha02
iptal edilir. 1.2.0-alpha02 sürümü şu commit'leri içerir.
API Değişiklikleri
- Temel profil oluşturma işlemi hariç olmak üzere, root edilmiş olsa bile
MacrobenchmarkScope.killProcess()
için varsayılan olarakam force stop
kullanılır. Bu, isteğe bağlı bir boolean 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üç metriklerinin kontrolü desteklenir. (a38c78, b/229623230)
Sürüm 1.2.0-alpha01
27 Temmuz 2022
androidx.benchmark:benchmark-*:1.2.0-alpha01
iptal edilir. 1.2.0-alpha01 sürümü şu commit'leri içerir.
Yeni Özellikler
- Araçların, Perfetto SDK izlemeyi kullanıma sunan bir uygulamada etkinleştirmesine olanak tanıyan yeni tracing-perfetto-common bileşeni (I2cc7f)
Yalnızca karşılaştırma testlerine veya yalnızca temel profil oluşturmaya göre filtreleme yapmayı sağlayan
androidx.benchmark.enabledRules
enstrümantasyon bağımsız değişkeni eklendi. Yalnızca bir tür testi çalıştırmak için "Macrobenchmark" veya "BaselineProfile" değerini iletin. Örneğin, yalnızca bir emülatördeBaselineProfiles
oluştururken. 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' } }
Dilerseniz Gradle komut satırından da yapabilirsiniz:
./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
'ya yeni bir parametre eklendi (If7338, b/220146561) - Geliştiricinin, güç tüketimini ölçmek için cihazın pilini boşaltmasını sağlar. (I6a6cb)
MacrobenchmarkScope
'da gölgelendirici önbelleğini temizleme özelliği eklendi. (I32122)- Geliştiricinin, istenen metrik türünün ve ayrıntılı alt sistem kategorilerinin gösterimini yapılandırmasına olanak tanır. (I810c9)
- Daha önce, desteklenmeyen bir cihazda çalıştırıldığında karşılaştırmada
UnsupportedOperationException
hatası veriliyordu. Artık UOE yalnızca metrik desteklenmeyen cihazda (ör.PowerMetric.configure
) kullanılıyorsa gerçekleşir. (I5cf20, b/227229375) - Makro karşılaştırma testlerindeki her sistem kategorisinde toplam güç ve enerjiyi ölçmek için
TotalPowerMetric
veTotalEnergyMetric
eklendi. (I3b26b, b/224557371)
Hata Düzeltmeleri
- Derlenen yöntemlerin, kök erişimi olmayan derlemelerde her makro karşılaştırma testi arasında doğru şekilde sıfırlanmamasına neden olan sorun düzeltildi. Bu işlem, her yinelemede APK'nın yeniden yüklenmesini gerektirir. Bu da her makro karşılaştırma testi için uygulama verilerini temizler. (I31c74, b/230665435)
- API 21/22'de iz kaydı kilitlenmesi düzeltildi (If7fd6, b/227509388, b/227510293, b/227512788)
- Başlangıç makro karşılaştırmalarında "Metrik okunamıyor" istisnasını düzeltmek için etkinlik başlatma tamamlanma algılamasını tamamen yenileyin. (Ia517c)
Sürüm 1.1.1
Sürüm 1.1.1
9 Kasım 2022
androidx.benchmark:benchmark-*:1.1.1
iptal edilir. 1.1.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Bazı Android 11 (API 30) ve sonraki sürümlerin yüklü olduğu cihazlarda meydana gelen
android.system.ErrnoException: open failed: EACCES
sorunu düzeltildi. Bu,1.2.0-alpha01
adresindeki bir düzeltmenin seçilerek eklenmiş halidir. (aosp/2072249)
Sürüm 1.1.0
Sürüm 1.1.0
15 Haziran 2022
androidx.benchmark:benchmark-*:1.1.0
iptal edilir. 1.1.0 sürümü şu commit'leri içerir.
- Bu sürüm,
androidx.benchmark:benchmark-*:1.1.0-rc03
ile aynıdır.
1.0.0 sürümünden beri yapılan önemli değişiklikler
Başlatma ve kaydırma gibi uygulama genelindeki etkileşimleri ölçmenize olanak tanıyan Jetpack Macrobenchmark'ları desteği, izlemeleri yakalama ve izleme bölümlerini ölçme olanağı sunar.
Temel Profiller için destek
CompilationMode.Partial
, temel profillerin etki düzeyini ölçmek için kullanılır.- Belirli bir kritik kullanıcı yolculuğu için otomatik olarak temel profiller oluşturmak üzere
@BaselineProfileRule
simgesini tıklayın.
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
iptal edilir. 1.1.0-rc03 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
Hedef paketi her karşılaştırma yinelemesinde yeniden yüklemekten kaçının. ( aosp/2093027, b/231976084)
pressHome()
öğesinden300ms
gecikmesini kaldırın. (aosp/2086030, b/231322975)Arka planda kullanılan Shell komutlarını optimize ederek Macrobenchmark yineleme hızını iyileştirin. (aosp/2086023, b/231323582)
Macrobenchmark'larla temel profiller oluşturulurken 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
iptal edilir. 1.1.0-rc02 sürümü şu commit'leri içerir.
- Bu sürümde, doğru ölçümler sağlamak için uygulamaların her karşılaştırma arasında tamamen yeniden yüklendiği bir davranış değişikliği yapıldığını unutmayın.
Hata Düzeltmeleri/Davranış Değişiklikleri
Uygulama derlemesinin makro karşılaştırmalar arasında doğru şekilde sıfırlanmamasına ve kök erişimi olmayan derlemelerde hiç sıfırlanmamasına neden olan sorun düzeltildi. Bu, birden fazla test çalıştırmanın ölçümler üzerinde
CompilationMode
çok az veya hiç etkisi olmadığı birçok durumu düzeltir. Bu sorunu geçici olarak çözmek için hedef uygulama artık her test yöntemini tamamen yeniden yüklüyor. Bu sayede, her makro karşılaştırma testi arasında uygulama verileri temizleniyor. (I31c74, b/230665435)Bu durum, uygulamaların testlerden önce durum ayarlamasını engellediğinden artık bu sorunu çözmek için derleme / yeniden yükleme işlemini atlamak mümkün. Örneğin, hedefi
cmd package compile -f -m speed <package>
kabuk komutuyla tamamen derleyebilir ve ardından makro karşılaştırma testinin 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' } }
Dilerseniz Gradle komut satırından da yapabilirsiniz:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
androidx.benchmark.enabledRules
enstrümantasyon bağımsız değişkeni eklenerek bir modülün makro karşılaştırmalar ve temel profil oluşturma testleri arasında paylaşılması sağlandı. Yalnızca bir tür testi çalıştırmak için "Macrobenchmark" veya "BaselineProfile" değerini iletin. Örneğin, emülatördeBaselineProfiles
oluştururken. (I756b7, b/230371561)Örneğin, makro karşılaştırmanızın build.gradle dosyasında:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
Dilerseniz Gradle komut satırından da yapabilirsiniz:
./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
iptal edilir. 1.1.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Android Studio'daki temel profil çıkış bağlantıları artık benzersiz bir dosya adı kullanıyor. Bu sayede çıkış, her zaman
BaselineProfileRule
kullanımını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
iptal edilir. 1.1.0-beta06 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- API 21/22'de iz kaydı kilitlenmesi düzeltildi (If7fd6, b/227509388)
- Başlangıç makro karşılaştırmalarında "Metrik okunamıyor" istisnasını düzeltmek için etkinlik başlatma tamamlanma algılamasını tamamen yenileyin. (Ia517c)
CompilationMode.None()
kullanıldığında Macrobenchmark'lar için başlangıç metriklerini düzeltin. Bu değişiklikten önceCompilationMode.Partial()
,Compilation.None()
'den daha yavaş görünüyordu. (611ac9).
Sürüm 1.1.0-beta05
23 Mart 2022
androidx.benchmark:benchmark-*:1.1.0-beta05
iptal edilir. 1.1.0-beta05 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
CompilationMode.None
kullanılırken profil yükleme işlemi atlandıktan sonra paketi sonlandırın. (aosp/1991373)- Macrobenchmark'ların,
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
iptal edilir. Version 1.1.0-beta04 contains these commits.
Hata Düzeltmeleri
Android 10'da eksik metriklerin düzeltilmesi ve izlerde işlem adlarının doğru şekilde yakalanmamasından kaynaklanan
NoSuchElementException
. (Ib4c17, b/218668335)Q (API 29) ve sonraki sürümlerde termal kısıtlama algılama için
PowerManager
kullanın. Bu, termal kısıtlama algılamada yanlış pozitiflerin sıklığını önemli ölçüde azaltır (90 saniyelik soğuma süresinden sonra karşılaştırma testi yeniden denenir) ve kullanıcı derlemelerinde karşılaştırma testlerini önemli ölçüde hızlandırır. Ayrıca, saatler kilitlendiğinde bile (cihazın fiziksel ortamı için çok yüksek bir değere kilitlendiyse) frekans sınırlama algılama özelliği sunar. (I9c027, b/217497678, b/131755853)İncelemeyi kolaylaştırmak için simpleperf örneklenmiş profillemeyi yalnızca
measureRepeated
iş parçacığına filtreleyin (Ic3e12, b/217501939)Çok işlemli uygulamalarda adlandırılmış kullanıcı arayüzü alt işlemlerinden gelen metrikleri destekleme (Ice6c0, b/215988434)
Android 9'u (SDK 28) hedeflemek için temel profil kurallarını filtreleyin. aosp/1980331 b/216508418
Compilation.None()
kullanırken profil yüklemeyi atlayın. Ayrıca, uygulamaandroidx.profileinstaller
ve Android Gradle eklentisinin eski bir sürümünü kullandığında uyarılar bildirilir. aosp/1977029
Sürüm 1.1.0-beta03
9 Şubat 2022
androidx.benchmark:benchmark-*:1.1.0-beta03
iptal edilir. Version 1.1.0-beta03 contains these commits.
API Değişiklikleri
- Ses yetersizliklerinin algılanmasına olanak tanımak için deneysel işaret altında makro karşılaştırma testi kitaplığına
AudioUnderrunMetric
eklendi (Ib5972) BaselineProfileRule
,profileBlock
ile aynı işlevi gördüğü için artıksetup
engellemeyi 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 mikrobenchmark profiler izlerinin sonraki çalıştırmalarda güncellenmemesine neden olan sorun düzeltildi (I5ae4d, b/214917025).
- API 23'te (Ice380) derleme kabuğu komutlarını engelleme
- Bunların zaman damgası değil, süre olduğunu netleştirmek ve önekleri 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
iptal edilir. 1.1.0-beta02 sürümü şu commit'leri 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ışına bağlanıyor ve ayırma metriğini bastırmıyor. (Idcb65, b/214440748, b/214253245)
- BaselineProfileRule artık oluşturulan BaselineProfile metin dosyasını çekmek için 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
iptal edilir. 1.1.0-beta01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Profiler bağımsız değişkeninin etkinleştirilmesinin yoksayılması sorunu düzeltildi. (I37373, b/210619998)
- Kullanımdan kaldırılan
CompliationModes
kaldırıldı (I98186, b/213467659) CompilationMode.Partial
işlevinin temel profil bağımsız değişkeni, daha anlaşılır olması için enum olarak değiştirildi. (Id67ea)
Sürüm 1.1.0-alpha13
15 Aralık 2021
androidx.benchmark:benchmark-*:1.1.0-alpha13
iptal edilir. 1.1.0-alpha13 sürümü şu commit'leri içerir.
API Değişiklikleri
- Android Q'da (API 29+) mikro kıyaslama çıkışına düşük ek yük içeren Sistem İzleme'yi 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 gelen kararsızlıkları teşhis etmek için yararlı olmalıdır. (I298be, b/205636583, b/145598917) CompilationModes
üç sınıfa ayrılır: Tam, Hiçbiri, Kısmi. Daha önce, derleme bağımsız değişkenlerine (artık uygulama ayrıntıları olarak ele alıyoruz) ve özelliklere göre tutarsız bir şekilde adlandırılıyordu. Bu sayede, platform sürümleri arasındaki denge unsurları, olası kombinasyonlar ve davranışlar daha net hale gelir. (I3d7bf, b/207132597)- Kurulum ve ölçüm artık her zaman sırayla çiftler halinde yapılır. Artık paket adını ve yinelemeyi sorgulayabilirsiniz (ancak yineleme, belirli ısınma senaryolarında
null
olabilir). (Id3b68, b/208357448, b/208369635)
Hata Düzeltmeleri
CompilationMode.Speed
öğesinin yanlışlıklaNone
olarak değerlendirilmesi düzeltildi (I01137)
Sürüm 1.1.0-alpha12
17 Kasım 2021
androidx.benchmark:benchmark-*:1.1.0-alpha12
iptal edilir. 1.1.0-alpha12 sürümü şu commit'leri 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 edilebilmesi için her yinelemede cihazı uyandırın. Bunun için kilit ekranının devre dışı bırakılması gerekir. (Ibfa28, b/180963442)
- Emülatörlerde ve root erişimi olmayan cihazlarda StackSampling profilleme modundaki birden fazla kilitlenme düzeltildi (Icdbda, b/202719335).
- Her yinelemenin sonundaki 0, 5 saniyelik uyku süresi kaldırıldı.Bu değişiklikle birlikte eksik metrikler görürseniz lütfen hata kaydı oluşturun. (Iff6aa)
- Veri kaybı olasılığını azaltın ve izleme nedeniyle oluşan bellek yükünü düşürün (Id2544, b/199324831, b/204448861)
- Compact sched depolama biçimine geçerek iz boyutunu yaklaşık% 40 küçültün. (Id5fb6, b/199324831)
- Başlangıç metriklerinin uygulamaları, her zaman oluşturma iş parçacığının sonunda bitecek şekilde güncellendi. Bu, platform sürümlerinde daha tutarlı olacak ve uygulama içi ölçümlerle daha yakından eşlenecek. (Ic6b55)
Sürüm 1.1.0-alpha11
3 Kasım 2021
androidx.benchmark:benchmark-*:1.1.0-alpha11
iptal edilir. 1.1.0-alpha11 sürümü şu commit'leri içerir.
API Değişiklikleri
- Macrobenchmark artık
minSdkVersion
23
'ye sahip. (If2655) - Uygulamanın kritik kullanıcı yolculuğu için temel profiller oluşturabilen yeni bir deneysel
BaselineProfileRule
ekler. Ayrıntılı belgeler paylaşılacaktır. (Ibbefa, b/203692160) - Yöntemin tamamlanması/çözümlenmesinde belirsizliğe neden olduğundan, Java çağrıları için eklenen measureRepeated arayüzü varyantı kaldırıldı. Java arayanların, measureRepeated'dan Unit.Instance döndürmesi gerekecek. Bu durum rahatsız ediciyse lütfen hata bildiriminde bulunun. Bu konuyu gelecekteki bir sürümde yeniden değerlendirebiliriz. (Ifb23e, b/204331495)
Sürüm 1.1.0-alpha10
27 Ekim 2021
androidx.benchmark:benchmark-*:1.1.0-alpha10
iptal edilir. Version 1.1.0-alpha10 contains these commits.
API Değişiklikleri
- StartupTimingMetric'i API 23'e kadar geriye dönük olarak çalışacak şekilde geri taşıyın. Bu yeni uygulama, ilgili içerik oluşturulana kadar beklemek için reportFullyDrawn() işlevini de daha iyi yönetir. (If3ac9, b/183129298)
- Java arayanlar için birden fazla MacrobenchmarkScope yöntemine JvmOverloads eklendi. (I644fe, b/184546459)
- Java dilinde deyimsel kullanım için
Consumer<MacrobenchmarkScope>
kullanan alternatif bir MacrobenchmarkRule.measureRepeated işlevi sağlayın. (If74ab, b/184546459)
Hata Düzeltmeleri
- İzlemelerin yeterince erken başlamaması ve metrik verilerinin eksik olması sorunları düzeltildi. Bu güncellemenin, kitaplığın kendisinden kaynaklanan "Karşılaştırma sırasında herhangi bir metrik okunamadı" istisnalarını düzeltmesi bekleniyor. (I6dfcb, b/193827052, b/200302931)
- FrameNegativeSlack, anlamını netleştirmek için FrameOverrun olarak yeniden adlandırıldı. Bu işlev, karenin zaman bütçesini ne kadar aştığını gösterir. (I6c2aa, b/203008701)
Sürüm 1.1.0-alpha09
13 Ekim 2021
androidx.benchmark:benchmark-*:1.1.0-alpha09
iptal edilir. Version 1.1.0-alpha09 contains these commits.
Hata Düzeltmeleri
- API 31/S+ üzerinde kök erişimi olmadan çekirdek sayfa önbelleğinin bırakılması desteklenir. Bu, StartupMode.COLD başlatmalarının doğruluğunu artırır. (Iecfdb, b/200160030)
Sürüm 1.1.0-alpha08
29 Eylül 2021
androidx.benchmark:benchmark-*:1.1.0-alpha08
iptal edilir. Version 1.1.0-alpha08 contains these commits.
API Değişiklikleri
- Kaydırma makro karşılaştırmalarının API 23'e kadar geriye dönük olarak çalıştırılmasını sağlama (If39c2, b/183129298)
- Kullanıcı arayüzüne ve JSON çıkışına, yineleme 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 (Studio kullanıcı arayüzünde kısaltılmış) kayan nokta metriklerine geçiş yapın. (I69249, b/197008210)
Sürüm 1.1.0-alpha07
1 Eylül 2021
androidx.benchmark:benchmark-*:1.1.0-alpha07
iptal edilir. 1.1.0-alpha07 sürümü şu commit'leri 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. Desteklenen mevcut minimum API, RequiredApi() aracılığıyla iletilmeye devam ediyor ve şu anda 29 (I440d6, b/183129298)
Hata Düzeltmeleri
ProfileInstaller
düzeltmeleri, temel profilleri kullanan uygulamalarınCompilationMode.BaselineProfile
kullanarak MacroBenchmark'ları çalıştırmasını kolaylaştırır. (I42657, b/196074999) NOT:androidx.profileinstaller:profileinstaller:1.1.0-alpha04
veya daha yeni bir sürüme de güncellenmesi gerekir.StartupMode.COLD
veCompilationMode.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
iptal edilir. 1.1.0-alpha06 sürümü şu commit'leri içerir.
API Değişiklikleri
- Yerel olarak test/profil oluşturma sırasında yineleme 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 profil oluşturucu olarak Simpleperf'e geçildi. (Ic4b34, b/158303822)
Bilinen Sorunlar
CompilationMode.BaselineProfile
henüz geliştirme aşamasında olan bir hizmettir. Şimdilik bir profilin ne kadar iyi olduğunu belirlemek için kullanmaktan kaçının.
Sürüm 1.1.0-alpha05
4 Ağustos 2021
androidx.benchmark:benchmark-*:1.1.0-alpha05
iptal edilir. Version 1.1.0-alpha05 contains these commits.
1.1.0-alpha04
, aralıklı olarak yaşanan kilitlenme nedeniyle yayınlanmadan önce iptal edildi. b/193827052
API Değişiklikleri
- startActivityAndWait,
am start
aracılığıyla başlatmayı tetikleyecek şekilde değiştirildi. Bu değişiklik, her ölçüm yinelemesinin süresini yaklaşık 5 saniye kısaltıyor ancak artık intent parcelable'ları desteklemiyor. (I5a6f5, b/192009149
Hata Düzeltmeleri
- Termal kısıtlama algılamanın agresifliğini azaltın ve kısıtlamalar sık sık algılanırsa temel çizgiyi yeniden hesaplayın. (I7327b)
- FrameTimingMetric'in Android S beta sürümünde çalışması için düzeltmeler yapıldı (Ib60cc, b/193260119).
EmptyActivity
kullanarak hedef uygulamayı zorla durdurulmuş durumdan çıkarın veCompilationMode.BaselineProfile
'ı daha iyi destekleyin. (Id7cac, b/192084204)- Platform standardına uygun olması için izleme dosyası uzantısı
.perfetto-trace
olarak değiştirildi. (I4c236, b/174663039) - StartupTimingMetric artık uygulamanızın oluşturma işlemini tamamlamasına kadar geçen süreyi ölçmek için "fullyDrawnMs" metriğini çıkış olarak veriyor. Uygulamanız için bu metriği tanımlamak üzere, ilk içeriğiniz hazır olduğunda (ör. ilk liste öğeleriniz veritabanından veya ağdan yüklendiğinde) Activity.reportFullyDrawn'ı çağırın. (reportFullyDrawn yöntemi, ComponentActivity'de derleme sürümü kontrolleri olmadan kullanılabilir). Testinizin, metriği yakalayacak kadar uzun süre çalışması gerektiğini unutmayın (startActivityAndWait, reportFullyDrawn'ın tamamlanmasını beklemez). (If1141, b/179176560)
- İzlere kullanıcı arayüzü meta verileri ekleme maliyetini 50 ms'den fazla azaltma (Ic8390, b/193923003)
- İzleme durdurulduğunda yoklama sıklığı önemli ölçüde artırıldı.Bu, örneğin başlangıç karşılaştırması çalışma süresini %30'dan fazla azaltabilir (Idfbc1, b/193723768).
Sürüm 1.1.0-alpha03
16 Haziran 2021
androidx.benchmark:benchmark-*:1.1.0-alpha03
iptal edilir. 1.1.0-alpha03 sürümü şu commit'leri 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 dizimiyle birlikte kullanımdan kaldırılmamış bir API'yi kullanacak şekilde güncellendi.
Örnek:
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
Sürüm 1.1.0-alpha02
18 Mayıs 2021
Karşılaştırma sürümü 1.1.0-alpha02, karşılaştırmaya büyük bir bileşen olan Macrobenchmark'ı getiriyor. Benchmark, CPU döngülerini ölçmenize olanak tanımanın yanı sıra macrobenchmark, başlatma ve kaydırma gibi uygulama genelindeki etkileşimleri ölçmenize ve izleri yakalamanıza olanak tanır. Daha fazla bilgi için kitaplık belgelerine bakın.
androidx.benchmark:benchmark-*:1.1.0-alpha02
iptal edilir. 1.1.0-alpha02 sürümü şu commit'leri içerir.
Yeni Özellikler
Macrobenchmark yapıları eklendi (androidx.benchmark:benchmark-macro-junit4
ve androidx.benchmark:benchmark-macro
)
- Uygulamanızdan yerel olarak veya CI'da başlatma, kaydırma/animasyon performansı metriklerini yakalama
- Android Studio'da izleri yakalama ve inceleme
Hata Düzeltmeleri
- Android 12'de çıkış diziniyle ilgili kabuk izinleri sorununa geçici çözüm getirildi (Not: Etkilenen cihazlarda çıkış dosyalarını yakalamaya devam etmek için Android Gradle eklentisinin 7.0.0 canary sürümüne ve Android Studio'nun Arctic Fox (2020.3.1) sürümüne güncellenmesi gerekebilir). (Icb039)
- BenchmarkPlugin'de yapılandırma önbelleğe almayı destekleme (6be1c1, b/159804788)
- Basitleştirilmiş dosya çıkışı: Varsayılan olarak etkindir ve
requestLegacyExternalStorage=true
gerektirmeyen bir dizindedir (8b5a4d, b/172376362) - Kitaplık yazdırma logcat uyarılarının, JIT iş parçacığının bulunmadığı platform sürümlerinde bulunamamasıyla ilgili sorunu düzeltir. (I9cc63, b/161847393)
- Okuma cihazının 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ü şu commit'leri içerir.
1.1 sürümündeki yeni özellikler
- Ayırma metriği: Karşılaştırmalar artık ısınma ve zamanlamadan sonra ek bir aşama çalıştırarak ayırma sayılarını yakalıyor. Ayırmalar, platformun eski sürümlerinde performans sorunlarına neden olabilir (O'da 140 ns olan süre, M'de 8 ns'ye düşmüştür. Bu süre, saatler kilitliyken Nexus 5X'te ölçülmüştür). Bu metrik, Android Studio konsol çıkışında ve
- Profil oluşturma desteği: Artık kodunuzun neden yavaş çalışıyor olabileceğini incelemek için bir karşılaştırma çalıştırmasıyla ilgili profil oluşturma verilerini yakalayabilirsiniz. Benchmark, ART'den yöntem izleme veya yöntem örnekleme yakalamayı destekler. Bu dosyalar, Android Studio'daki Profiler ile Dosya > Aç kullanılarak incelenebilir.
- Benchmark Gradle eklentisi artık daha basit kurulum için varsayılan değerler sunuyor:
testBuildType
, yerleşik kod kapsamına sahip bağımlılıkların kullanılmaması için varsayılan olarak yayınlanacak şekilde ayarlanır. Release buildType, varsayılan buildType olarak da yapılandırılır. Bu sayede Android Studio, bir projeyi ilk kez açarken doğru build varyantını otomatik olarak seçebilir. (b/138808399)signingConfig.debug
, varsayılan imzalama yapılandırması olarak kullanılır (b/153583269)
** Hata Düzeltmeleri **
- Isınma geçişi ek yükünü önemli ölçüde azalttık. Bu ek yükte, her karşılaştırma için ilk ölçüm diğerlerinden yapay olarak daha yüksekti. Bu sorun, çok küçük karşılaştırma testlerinde (1 mikrosaniye veya daha kısa) 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'da çalıştırarak veya sonuçlar için JSON çıkış dosyasını ayrıştırarak çözebilirsiniz.
- Karşılaştırma raporlaması, applicationId'si "android" veya "download" ile biten (büyük/küçük harf duyarlı değildir) bir uygulamanın yüklü olduğu cihazlardan raporu çekemiyor. Bu sorunla karşılaşan kullanıcılar Android Gradle eklentisini 4.2-alpha01 veya sonraki bir sürüme yükseltmelidir.
Sürüm 1.0.0
Benchmark Version 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 yapılmadan yayınlandı. Version 1.0.0 contains these commits.
1.0.0 sürümünün temel özellikleri
Benchmark kitaplığı, uygulama kodunun performans karşılaştırmalarını yazmanıza ve sonuçları hızlı bir şekilde almanıza olanak tanır.
Derleme 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 gerilemeleri önlemek için karşılaştırma testlerini doğrudan Android Studio'da veya sürekli entegrasyonda çalıştırın.
Başlıca özellikler:
- Saat sabitleme
- İleti dizilerine otomatik öncelik verme
- RecyclerView Örneği'nde olduğu gibi kullanıcı arayüzü performans testi desteği
- JIT'ye duyarlı ısınma ve döngü
- Sonraki işlem için JSON karşılaştırma testi çıktısı
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ı. Sürüm 1.0.0-rc01 şu commit'leri içerir.
Yeni özellikler
- Karşılaştırmalara systrace izleme özelliği eklendi
Hata düzeltmeleri
- Önceliğin düşürülmesi nedeniyle JIT'nin ısınmadan önce tamamlanmamasıyla ilgili metrik kararsızlığı sorunu düzeltildi (b/140773023).
- Android Gradle eklentisi 3.5 ve 3.6'da birleştirilmiş JSON çıkış dizini
Sürüm 1.0.0-beta01
9 Ekim 2019
androidx.benchmark:benchmark-common:1.0.0-beta01
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01
ve androidx.benchmark:benchmark-junit4:1.0.0-beta01
yayınlandı. 1.0.0-beta01 sürümü şu commit'leri içerir.
Yeni özellikler
- Bir karşılaştırma ölçütünden diğerine bellek sızıntısını önlemek için her ısınma işleminden önce çöp toplama işlemini çalıştırın (b/140895105).
Hata düzeltmeleri
androidx.annotation:android-experimental-lint
bağımlılığı eklendi. Böylece, deneysel API kullanılmadığında Java kodu, Kotlin arayanlar için Kotlin deneysel ek açıklaması tarafından sağlananlara benzer şekilde lint hatalarını doğru şekilde üretecek.- Artık AGP'nin veri kopyalama işlemini ne zaman yapacağını öğrenmek için Android Gradle eklentisi 3.6'da
additionalTestOutputDir
enstrümantasyon bağımsız değişkeninin kullanımını doğru şekilde algılıyor. -1
(b/141945670) öğesinin doğru şekilde yazdırılması 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ü şu commit'leri içerir.
Yeni özellikler
- Test çalıştırıcısı için eski paketin yanlış kullanımına yönelik bir kontrol eklendi. Bu kontrol artık daha faydalı bir hata mesajı sunuyor.
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 commit'leri burada bulabilirsiniz.
API değişiklikleri
BenchmarkState.reportData
API'si artık deneysel olarak işaretleniyor
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.-c
işaretini desteklemeyen eski bir su yardımcı programı sürümüyle root edilmiş cihazlarda./gradlew lockClocks
görevinin kilitlenmesine 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 commit'leri burada bulabilirsiniz.
Ayrıca, Benchmark kitaplığının Gradle olmadan nasıl kullanılacağıyla ilgili yeni belgeler eklendi. Bu belgelerde, farklı derleme sistemleriyle (ör. Bazel veya Buck) kullanımın yanı sıra CI'da çalıştırma hakkında bilgiler yer alıyor. Daha fazla bilgi için Gradle olmadan karşılaştırma oluşturma ve Sürekli entegrasyonda 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 varsayılan olarak
AndroidBenchmarkRunner
ayarını yapar (b/138374050). - AGP 3.6 veya sonraki sürümler kullanılırken ve karşılaştırma testleri çalıştırılırken yeni AGP tabanlı veri kopyalama için destek eklendi.
- Artık test kapsamını otomatik olarak devre dışı bırakır ve varsayılan olarak
- JSON biçiminde eklemeler
- Toplam çıktı karşılaştırma testi çalıştırma süresi (b/133147694)
- Ad dizesi kullanan
@Parameterized
karşılaştırmalar (ör.@Parameters(name = "size={0},depth={1}")
) artık JSON çıkışında (b/132578772) karşılaştırma başına parametre adlarını ve değerlerini çıkış olarak veriyor.
- Prova modu (b/138785848)
- Ölçüm almadan hataları/kilitlenmeleri kontrol etmek için her bir karşılaştırma testi döngüsünü yalnızca bir kez çalıştırmaya yönelik "deneme çalıştırması" modu eklendi. Bu özellik, örneğin, gönderim öncesinde karşılaştırma testlerini hızlı bir şekilde çalıştırarak bozuk olmadıklarını kontrol etmek için faydalı olabilir.
API değişiklikleri
- Kitaplığı bölen modül yapısı değiştirildi (b/138451391)
benchmark:benchmark-junit4
, JUnit bağımlılığı olan sınıflar içeriyor:AndroidBenchmarkRunner
veBenchmarkRule
. Bu sınıfların her ikisi deandroidx.benchmark.junit4
paketine taşındı.benchmark:benchmark-common
, BenchmarkState API dahil olmak üzere mantığın geri kalanını içerir.- Bu ayrım, kitaplığın gelecekte JUnit4 API'leri olmadan karşılaştırmayı desteklemesine olanak tanır.
- Yapılandırma uyarıları artık hata olarak değerlendiriliyor ve testi kilitliyor (b/137653596).
- Bu işlem, özellikle CI'da doğru ölçümleri daha da teşvik etmek için yapılır.
- Bu hatalar, bir enstrümantasyon bağımsız değişkeniyle tekrar 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 yazarken oluşan hatalar, sorunun nasıl çözüleceğine dair önerilerle birlikte daha açıklayıcı mesajlar sağlar.
- Ekran kapalıyken başarısız olmak yerine, kıyaslama çalıştırmaları sırasında ekranlar otomatik olarak açılır.
Harici katkılar
- JSON çıkışını iyileştirmeye ve ekranın kapalı kalması sorununu 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 commit'leri burada bulabilirsiniz.
Yeni özellikler
- Tam JSON raporunda, termal kısma nedeniyle uyku süresini karşılaştırma ölçütü başına gösterme
Hata düzeltmeleri
- Gradle eklentisinin artık Android eklentilerinden ve Android bloğundan sonra uygulanması gerekmiyor.
- Kapsamlı depolama kullanan Android 10 cihazlarda karşılaştırma raporları için destek eklenir.
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
işlemeleri burada bulabilirsiniz.
JSON şemasını API olarak değerlendirdiğimizi unutmayın. Diğer API'lerle aynı kararlılık kısıtlamalarını uygulamayı planlıyoruz: Beta sürümünde çok nadir istisnalar dışında kararlı, son sürümde düzeltilmiş, küçük sürümlerde yalnızca eklemeler, büyük sürümlerde ise değişiklikler/kaldırmalar.
API değişiklikleri
JSON şeması yenilendi. JSON şemasında yapılacak diğer değişikliklerin eklemelerle sınırlı olması beklenmektedir:
- Gelecekte ek metrik gruplarını desteklemek için sonuç nesnesi yapısı yeniden düzenlendi (b/132713021)
- Cihaz ve derleme bilgileri ile saatlerin kilitli olup olmadığı gibi test çalıştırması bağlam bilgileri, üst düzey nesneye (b/132711920) eklendi.
- Süre metriği adlarında artık "ns" ifadesi yer alıyor (b/132714527)
- Bildirilen metrik başına eklenen ek istatistikler (maksimum, ortalama, minimum) ve basitleştirilmiş "nanos" özet istatistiğinin kaldırılması (b/132713851)
XML çıkışı kaldırıldı (b/132714414)
BenchmarkState.reportData
API'sinden termal kısma algılama özelliği kaldırıldı (b/132887006)
Hata düzeltmeleri
./gradlew lockClocks
simgesinin bazı yeni işletim sistemli cihazlarda sabitlenmemesi sorunu düzeltildi. (b/133424037)- Emülatör için kısıtlama algılama devre dışı bırakıldı (b/132880807)
Sürüm 1.0.0-alpha01
7 Mayıs 2019
androidx.benchmark:benchmark:1.0.0-alpha01
iptal edilir. Bu sürüme dahil edilen işlemeler burada bulunabilir.