Karşılaştırma
| Son Güncelleme | Kararlı Sürüm | Sürüm Adayı | Beta Sürümü | Alfa Sürümü |
|---|---|---|---|---|
| 7 Ekim 2026 | 1.5.0 | - | - | 1.6.0-alpha01 |
Bağımlılıkları bildirme
Benchmark'a bağımlılık eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposu başlıklı makaleyi okuyun.
Macrobenchmark
Projenizde Macrobenchmark'ı kullanmak için macrobenchmark modülünüzün build.gradle dosyasına aşağıdaki bağımlılıkları ekleyin:
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.5.0" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.5.0") }
Mikro karşılaştırma
Projenizde Microbenchmark'ı kullanmak için mikro karşılaştırma modülünüzün build.gradle dosyasına aşağıdaki bağımlılıkları ekleyin:
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.5.0" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.5.0") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Microbenchmark kitaplığı, mikro karşılaştırma modülünüzle kullanabileceğiniz bir Gradle eklentisi de sağlar.
Bu eklenti, modül için derleme yapılandırma varsayılanlarını ayarlar, ana makineye karşılaştırma çıkış kopyasını oluşturur ve
./gradlew lockClocks görevini sağlar.
Eklentiyi kullanmak için üst düzey build.gradle dosyanızdaki "plugins" bloğuna aşağıdaki satırı ekleyin:
Groovy
plugins { id 'androidx.benchmark' version '1.5.0' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.5.0" apply false }
Ardından eklentiyi karşılaştırma modülünüzün build.gradle dosyasına uygulayın.
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ştirmek için fikirleriniz varsa lütfen bize bildirin. Lütfen yeni bir tane oluşturmadan önce 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 Issue Tracker belgelerine bakın.
Sürüm 1.6
Sürüm 1.6.0-alpha01
7 Ekim 2026
androidx.benchmark:benchmark-*:1.6.0-alpha01 yayınlandı. 1.6.0-alpha01 sürümü bu kayıtları içerir.
Yeni Özellikler
- Karşılaştırma
:lockClocksgörevi, önceki yalnızca kök erişimli uygulama yerine artık mümkün olduğunda sabit performans modunu kullanıyor. Bu sayede, özellikle kararlı mikro karşılaştırmalar için yararlı olan kararlı sonuçlar elde etmek amacıyla çok daha fazla fiziksel cihazda saatleri kilitleyebilirsiniz. Yeni davranışla ilgili termal kısıtlama sorunları görürseniz lütfen bildirin. (I0d032)
API değişiklikleri
- Makro karşılaştırma çalıştırmalarının Perfetto öbek profili oluşturma özelliğini etkinleştirmesine izin vermek için
MemoryProfilingConfig,ExperimentalConfigdosyasına eklendi. (Ibc931)
Hata düzeltmeleri
- Mikro karşılaştırmada, ANR'leri önlemek için yöntem izi yakalama işleminin bazen aşırı dikkatli bir şekilde atlanmasına neden olan hata düzeltildi. (Ifc307)
:<suffix>adlandırma kalıbını kullanmayan işlemler için Baseline profili yakalama sorununu düzeltir. (I512ab)- Profiler izleme bağlantıları artık IDE özetlerinde ayrı bir "Profil Oluşturma İzleri" bölümünde raporlanıyor. (Id639f)
- Sanal dosya temizleme işleminde
Unable to flush profiles for <packagename>hatasına neden olan bir hata düzeltildi. (I48ccc) - Sistem izlemeye yerleştirilmiş yöntem izlemelerindeki senkronizasyonu düzeltir. Ifd2e33 b/537688349
- Baseline Profile Gradle Eklentisi: Alt dizinlerdeki
test-result.pbdosyalarının bulunmasını desteklemek içinCollectBaselineProfileTaskgeliştirildi. Böylece yeni yerleşik test platformuyla uyumluluk sağlandı. Id9c488 b/543799367
Sürüm 1.5
Sürüm 1.5.0
9 Eylül 2026
androidx.benchmark:benchmark-*:1.5.0 yayınlandı. 1.5.0 sürümü bu commit'leri içerir.
Sürüm 1.5.0-rc02
26 Ağustos 2026
androidx.benchmark:benchmark-*:1.5.0-rc02 yayınlandı. 1.5.0-rc02 sürümü bu kayıtları içerir.
Sürüm 1.5.0-rc01
12 Ağustos 2026
androidx.benchmark:benchmark-*:1.5.0-rc01 yayınlandı. 1.5.0-rc01 sürümü bu kayıtları içerir.
Sürüm 1.5.0-beta01
29 Temmuz 2026
androidx.benchmark:benchmark-*:1.5.0-beta01 yayınlandı. 1.5.0-beta01 sürümü bu kayıtları içerir.
API değişiklikleri
PerfettoCapturevePerfettoTraceRuleartık devam eden işlemlerdeki izleri yakalayabilir ve bunları hedef paket için birleştirebilir. (I9a00b, b/497959820)
Sürüm 1.5.0-alpha07
1 Temmuz 2026
androidx.benchmark:benchmark-*:1.5.0-alpha07 yayınlandı. 1.5.0-alpha07 sürümü bu kayıtları içerir.
API Değişiklikleri
- Cihazda basitleştirilmiş Perfetto izi yakalama. (I48810)
- Deneysel
TraceProcessor.runServeruzantı API'leriniandroidx.benchmark:benchmark-macroyerineandroidx.benchmark:benchmark-commonveandroidx.benchmarkpaketine taşıyın. Bu, gelecekte mikro kıyaslamalarda kullanılmalarını sağlar. (Ie25bb, b/393640753)
Hata Düzeltmeleri
- traceprocessor uygulamasını (ayrıca paketlenmemiş Perfetto Trace yakalama) Perfetto v56.0'ı (I8fb9d) kullanacak şekilde güncelleyin.
androidx.benchmark.requireAotveandroidx.benchmark.requireAotayarlarını varsayılan olarak doğru değerine ayarlayın. Bu daha güvenli varsayılanlar, derlemenin mikro kıyaslama testleri çalıştırılmadan önce yapılmasını (AGP 8.4 ve sonraki sürümler kullanılırken benchmark gradle eklentisiyle varsayılan olarak etkinleştirilir) vemeasureRepeated'nın, ANR'lere neden olabileceği ana iş parçacığında kullanılmamasını sağlar. (I1bc3c, b/379115078)- Perfetto oturumlarının sonlandırılma zaman aşımı süresi 5 saniyeden 30 saniyeye çıkarıldı (yalnızca Perfetto oturumları için). Sorun oluştuğunda daha net hata günlükleri eklendi. (If188f, b/435589290)
Sürüm 1.5.0-alpha06
6 Mayıs 2026
androidx.benchmark:benchmark-*:1.5.0-alpha06 yayınlandı. 1.5.0-alpha06 sürümü bu kayıtları içerir.
Hata düzeltmeleri
- Dosyaları karşılaştırma çıkış dizininden ek test çıkış dizinine taşırken çok kullanıcılı ortamları sorunsuz bir şekilde yönetin. (I90da5, b/489358149)
Sürüm 1.5.0-alpha05
25 Mart 2026
androidx.benchmark:benchmark-*:1.5.0-alpha05 yayınlandı. 1.5.0-alpha05 sürümü bu kayıtları içerir.
Hata düzeltmeleri
- Üst düzey paketleri hesaba katmak için
ArtMetricgüncellendi. Bu, özellikle AGP/R8 9.1+ veya-repackageclassesglobal seçeneği kullanılırken önemlidir. Daha önceArtMetric,artClassLoad...ölçümlerinde bu sınıf yüklemelerini algılayamıyordu. (If8a35, b/487402058)
Yeni Özellikler
- Root erişimli cihazlarda CPU saatlerinin kilitli olup olmadığını kontrol etmeyi sağlayan yeni bir araçlandırma bağımsız değişkeni (androidx.benchmark.requireLockedClocks) eklendi. (Id82e8, b/468039042)
Sürüm 1.5.0-alpha04
11 Mart 2026
androidx.benchmark:benchmark-*:1.5.0-alpha04 yayınlandı. 1.5.0-alpha04 sürümü bu kayıtları içerir.
API Değişiklikleri
JvmOverloads,PowerMetric.EnergyvePowerMetric.Power'ye eklendi (Iac0d0, b/481371562).
Hata düzeltmeleri
ArtMetric, üst düzey paketleri hesaba katacak şekilde güncellendi. Bu, özellikle AGP/R8 9.1+ veya-repackageclassesgenel seçeneği kullanılırken önemlidir. Daha önceArtMetric,artClassLoad...ölçümlerinde bu sınıf yüklerini algılayamıyordu. (I207ca, b/487402058)
1.5.0-alpha03 sürümü
11 Şubat 2026
androidx.benchmark:benchmark-*:1.5.0-alpha03 yayınlandı. 1.5.0-alpha03 sürümü bu commit'leri içerir.
- UiAutomator 2.4 beta sürümüne bağlı olacak şekilde güncellendi.
Sürüm 1.5.0-alpha02
28 Ocak 2026
androidx.benchmark:benchmark-*:1.5.0-alpha02 yayınlandı. 1.5.0-alpha02 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
Kotlin çoklu platform modülleri için temel profil oluşturma konusunda kısmi destek eklendi. Genellikle profillerdeki bağımlılıklar, bağımlılıklar bloğunda
baselineProfileGradle yapılandırması kullanılarak tanımlanabilir ancak bu, şu anda KMP modülleri için çalışmamaktadır.kotlin { androidLibrary { namespace = "com.example.namespace" compileSdk = 36 } sourceSets { androidMain.dependencies { // THIS DOES NOT WORK // baselineProfile(":yourProducerProject") } } }Bunun yerine, bağımlılıklarınızı
baselineProfile**uzantısını kullanarak tanımlamanız gerekir. (Ie19c4)plugins { id("org.jetbrains.kotlin.multiplatform") id("com.android.kotlin.multiplatform.library") id("androidx.baselineprofile.consumer") } kotlin { androidLibrary { namespace = "com.example.namespace" compileSdk = 36 } sourceSets { androidMain.dependencies { // ... } } } // Define dependencies // This works ! baselineProfile { variants { androidMain { from(project(":yourProducerProject")) } } }
Sürüm 1.5.0-alpha01
17 Aralık 2025
androidx.benchmark:benchmark-*:1.5.0-alpha01 yayınlandı. 1.5.0-alpha01 sürümü bu kayıtları içerir.
- Macrobenchmark 1.5, ölçülen uygulamayla etkileşimi basitleştirmek için
UiAutomator2.4'ü kullanır. MacrobenchmarkScope nesnesi artık UiAutomatorTestScope'u genişletiyor. Bu sayedeUiAutomatorAPI'lerini (ör.onElement { ... }.click()) kullanabilirsiniz. UiAutomator2.4 hakkında daha fazla bilgi için belgelere bakın.
Yeni Özellikler
- Baseline Profile Gradle eklentisi artık AGP 9.0'da
newDsl=falsegerektirmiyor (Iaaac7, b/443311090) - İzleme yapılandırmasını, karşılaştırmada yakalanan sistem/Perfetto izlemelerine temel boyutu (ör. küçük/büyük) içerecek şekilde genişletin. (I8e397, b/457469959)
API Değişiklikleri
- (UiAutomator'da)
startActivitybekleme süresi, yeni pencereyi bekleme süresi olarak değiştirildi. (I35da6, b/440021797) - androidx.benchmark'teki
BlackHoleAPI'lerini kararlı hale getirin. (I2b67e, b/451749438) PerfettoTraceRuleiçin kolaylık oluşturucularına@JvmOverloadsekleyin. (I1510a, b/443763207)
Sürüm 1.4
Sürüm 1.4.1
10 Eylül 2025
androidx.benchmark:benchmark-*:1.4.1 yayınlandı. 1.4.1 sürümü bu commit'leri içerir.
Hata düzeltmeleri
- Sabit
perfettoSdkTracing=true(ör. mikro karşılaştırmada Compose izlenirken) hedef işlem zaten çalışıyorsa ve bir StartupMode belirtilmemişse hedef işlemi sonlandırıyordu. (Ib2c1f)
Sürüm 1.4.0
30 Temmuz 2025
androidx.benchmark:benchmark-*:1.4.0 yayınlandı. 1.4.0 sürümü bu commit'leri içerir.
1.3.0 sürümünden sonra yapılan önemli değişiklikler
Mikro karşılaştırma
- Gradle proje yalıtımına uymak için Gradle görevleri
lockClocksveunlockClocks, ü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ımeasureRepeatedOnMainThreadile çalıştırılmalıdır.
Makro karşılaştırma testi
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 gösteriyordu.- Deneysel özellik: Başlangıç Analizleri,
MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true)))değerini ileterek başlangıç makro karşılaştırmasındaki bazı yaygın sorunları vurgulayabilir. - JIT derlemeyi ve optimize edilmemiş sınıf yüklemeyi algılamak için kullanılabilecek ArtMetric eklendi. Bu iki özellik de Baseline Profile optimizasyonlarını doğrulamak için kullanışlıdır.
Temel profiller
BaselineProfileRuleartık çok süreçli uygulamalar için profiller topluyor.
Diğer Değişiklikler
- TraceProcessor,
Macrobenchmarkmetriklerinin dışında diğer durumlarda da kullanılabilmesi için kendi kitaplığına (androidx.benchmark:benchmark-traceprocessor) taşındı. 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 yayınlandı. 1.4.0-rc01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Çalışma zamanı görüntülerinin ilk iterasyondan sonra en kötü durum performansını ölçmemesine neden olan
CompilationMode.None()için geçici çözüm eklendi. Maalesef bu geçici çözüm, her makro karşılaştırma paketinin (I4a4f1) başında çalışma zamanı görüntüsünü kasıtlı olarak bozmak için 5 saniyelik bir gecikme gerektirir.
Sürüm 1.4.0-beta02
4 Haziran 2025
androidx.benchmark:benchmark-*:1.4.0-beta02 yayınlandı. 1.4.0-beta02 sürümü bu kayıtları içerir.
API Değişiklikleri
- Java geliştiricilerinin
BaselineProfileRule.collectWithResults()çağrısı yapmasını kolaylaştırmak içinBaselineProfileConfig.Buildereklendi. (I94905)
Sürüm 1.4.0-beta01
7 Mayıs 2025
androidx.benchmark:benchmark-*:1.4.0-beta01 yayınlandı. 1.4.0-beta01 sürümü bu commit'leri içerir.
API değişiklikleri
PerfettoConfigkabul edenPerfettoTraceRuleoluşturucu varyantı eklendi (Ie53ba)
Hata Düzeltmeleri
- Doğru eklentiyi ve daha net bir sınırlayıcıyı kullanmak için
TraceProcessorbaşlangıç analizleri bağlantı biçimi güncellendi (:,%3Adeğerinden daha kısa ve her ikisi de destekleniyor) (Ie18ef) - Root erişimi olsa ve sistem uygulamaları sonlandırılsa bile işlemleri sonlandırmak için her zaman zorla durdurma özelliğini kullanın. Şu formun istisnalarını düzeltir:
Expected no stdout/stderr from killall ... No such process. (Idca2c)
Harici Katkı
TraceProcessorHttpServeriçin proxy istisnası işleyici eklendi (I480f5)
Sürüm 1.4.0-alpha11
9 Nisan 2025
androidx.benchmark:benchmark-*:1.4.0-alpha11 yayınlandı. 1.4.0-alpha11 sürümü bu kayıtları içerir.
API Değişiklikleri
TraceProcessoriçin bağımsız değişken zaman aşımı değiştirildi: Java çağrısı kullanılabilirliği için zaman aşımı süresi milisaniye olarak ayarlandı. (I9fbb5)TraceProcessoroluşturucusunu dahili olarak işaretleyin. ArayanlarTraceProcessor.startServerveyaTraceProcessor.runServerkullanmalıdır. (Ia8c5b)
Hata düzeltmeleri
- Uygulamayı
MacrobenchmarkScope.killProcessile 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 düzeyini 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 yayınlandı. 1.4.0-alpha10 sürümü bu kayıtları içerir.
API Değişiklikleri
TraceProcessorsunucu 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
profileinstalleriçermeyen bir uygulamanın karşılaştırması yapılırken veya profilleri yakalanırken ortaya çıkan bazı sorunlar düzeltildi veBroadcastRecievereklendi. Bu durum yalnızca root erişimli cihazlardaki çalıştırmaları etkiler. (Ied308)
Sürüm 1.4.0-alpha09
12 Mart 2025
androidx.benchmark:benchmark-*:1.4.0-alpha09 yayınlandı. 1.4.0-alpha09 sürümü bu kayıtları içerir.
API Değişiklikleri
- Özel yaşam döngüleriyle daha kolay kullanım için kapatılabilir işleyicilere sahip
TraceProcessorve Session API eklendi. Bu aynı zamanda Coroutine ve Java API'nin daha kolay kullanılmasını sağlama yolunda atılmış bir adımdır.TraceProcessor.runServer {}için uzantı işlevleri, gelecekte taşınma ve deneysel olmaktan çıkarılma olasılığı nedeniyle artık deneysel olarak işaretlenmiştir. (I358b4)
Hata Düzeltmeleri
pgreptoybox'ta yapılan ve artık tam komut satırının yazdırılması için-agerektiren bir değişiklik nedeniyle, karşılaştırma ve temel profil yakalamanın API 36 ile çalışmaması sorunu düzeltildi. (Idc991)- Daha yeni API düzeylerindeki izlerde veri kaybı riskini azaltmak için varsayılan izleme yapılandırmasını filtreleyin. (I54e8a)
- Mevcut perfetto izleme yakalama işleminin devam etmesine izin vermek için
falseolarak ayarlanabilen deneyselandroidx.benchmark.killExistingPerfettoRecordingsaraç bağımsız değişkeni eklendi. Varsayılan olarak, cihazda önceden bulunan 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 sonraki sürümlerde yayınlanan OS sürümlerinde JSON alanı
context.osCodenameAbbreviatedartıkRELolacak. (Ib17fd) - Yeniden senkronize edilen kareler oluştuğunda
FrameTimingMetricuygulamasında meydana gelen kilitlenme düzeltildi. (I7c6f4, b/394610806) Choreographer#doFrameartıkFrameTimingQueryiçin ana iş parçacığındaki yığın çerçevesinin en üstünde yer almıyor. (Iee0e0, b/340206285)
Sürüm 1.4.0-alpha08
12 Şubat 2025
androidx.benchmark:benchmark-*:1.4.0-alpha08 yayınlandı. 1.4.0-alpha08 sürümü bu kayıtları içerir.
API değişiklikleri
TraceProcessor.runSession()uzantısı API'leri, Android'de nihai oluşturuculara dönüşme ihtimalleri nedeniyle deneysel olarak işaretlendi. (Ib0528, b/393640753)- Startup Insights'ın çoğu uygulaması artık herkese açık/deneyseldir ve
TraceProcessoryapısına taşınmıştır.StartupInsightsadresini inceleyin. (I0aa00) - Davranışı daha net bir şekilde açıklayan
BenchmarkRule.runWithMeasurementDisabled {}lehineBenchmarkRule.runWithTimingDisabled {}desteği sonlandırıldı. Tüm metrikler duraklatılır. Ayrıca,runWithMeasurementDisablediş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) - Karşılaştırma kitaplıkları Kotlin 2.0'a taşındı. (I9d1e0)
androidx.benchmark.startupProfiles.enableenstrümantasyon bağımsız değişkeni kaldırıldı.BaselineProfileRule.collect()içindekiincludeInStartupProfileargümanı ile kontrol edilebildiğinden artık kullanışlı değildir. (I39eb4)
Hata düzeltmeleri
- Profil oluşturma sırasında çağrılan Microbenchmark dahili işlevlerinin sayısı azaltıldı.Böylece yöntem izleri gibi öğeler daha net hale getirildi (Ifaed8).
- Kilitlenmeler için tahmini düzeltme: "[
ProcessPid(processName=perfetto, pid=...)] durdurulamadı". Artık Benchmark, karşılaştırma çalıştırılmadan önce arka plandaki Perfetto işlemi durdurulamadığında kilitlenmek yerine bir mesaj kaydedecek. (I37d3e, b/323601788) - Aşırı katı çıkış biçimi kontrolünden kaynaklanan "Beklenen
pm dump-profilesstdout" etiketliIllegalStateExceptionssorununu düzeltin. (I358dc)
Sürüm 1.4.0-alpha07
29 Ocak 2025
androidx.benchmark:benchmark-*:1.4.0-alpha07 yayınlandı. 1.4.0-alpha07 sürümü bu kayıtları içerir.
Yeni özellikler
BaselineProfileRuleartık hesaplanan profillerin yollarının listesini içeren bircollectWithResults(...)API'si sunuyor. (I056f8)- Yerel test için
measureRepeatedOnMainThread'in son tarih davranışını devre dışı bırakmak üzere false olarak ayarlanabilenandroidx.benchmark.measureRepeatedOnMainThread.throwOnDeadlineenstrümantasyon bağımsız değişkeni eklendi. Testler sırasında ANR olasılığını artırdığı için başka durumlarda önerilmez. (Idbeec, b/353226476)
API Değişiklikleri
MicrobenchmarkConfigoluşturucusuna@JvmOverloadseklendi. (I13fd3)BenchmarkRule, coroutine'ler üzerine kurulacak ve daha iyiyield()davranışı destekleyecek şekilde yeniden düzenlendi. Bu yeniden düzenleme işlemi, birkaç deneyselBenchmarkStateAPI'yi kaldırdı ancak gerektiğinde bunların yerine yenileri eklenecek. Ayrıca, davranışı netleştirmek içinrunWithMeasurementDisabledeklendi (tüm ölçümler duraklatılır). GelecekterunWithTimingDisableddesteği sonlandırılacaktır. (I19837, b/389149423, b/311242861)PerfettoTraceProcessor, yeni birandroidx.benchmark:benchmark-traceprocessoryapısındaTraceProcessorolarak taşınır ve API'sinin çoğu deneysel olmayan bir hâle getirilir. ÖzelTraceMetricveya izlerden okuma yapan her şeyin yeniTraceProcessoriçe aktarma işlemine göre güncellenmesi gerekir. YeniTraceProcessorAPI, eski API ile tamamen aynı şekilde çalışır ancak Macrobenchmark'ta yerleşik olarak bulunan Android'e özgü bir uygulamaya sahip bağımsız bir arayüz kitaplığıdır (Room'dakiandroidx.sqlitekatmanına benzer). Yeni yapı, JVM'de de kullanılabilir ancak şu andaTraceProcessorikili programının 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.startActivityAndWaithedef işlemi başlatamadığında (hedef işlemde kilitlenme nedeniyle olabilir) "Etkinlik başlatma işleminin tamamlandığı onaylanamıyor" (I3539b) gibi daha belirsiz bir mesaj yerine daha net bir hata mesajı gösterilir.- Kotlin örneklerindeki çeşitli söz dizimi hataları ve çeşitli Java / build.gradle örneklerindeki söz dizimi vurgulama sorunları düzeltildi. (Ib3808)
ArtMetricveCaptureInfoparametre belgeleri netleştirildi. (I96e60)
Sürüm 1.4.0-alpha06
11 Aralık 2024
androidx.benchmark:benchmark-*:1.4.0-alpha06 yayınlandı. 1.4.0-alpha06 sürümü bu kayıtları 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 boşluk ek açıklamalarını kullanıyor. Kotlin geliştiricileri, doğru kullanımı zorunlu kılmak için şu 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) ArtMetric, sınıf yüklemesini (başlatmayı değil) raporlayacak şekilde düzeltildi ve çalışma zamanı davranışını netleştirmek için dokümanlar iyileştirildi. (I9915c)- Android Multiuser'da, komutları yalnızca root erişimli cihazlarda root olarak yürütün. (I88b44)
Sürüm 1.4.0-alpha05
13 Kasım 2024
androidx.benchmark:benchmark-*:1.4.0-alpha05 yayınlandı. 1.4.0-alpha05 sürümü bu commit'leri içerir.
Hata düzeltmeleri
- API 34 ve sonraki sürümlerde,
CompilationMode.None()yönteminin ilk ve en kötü durum performansını temsil etmeyen tutarsız performans göstermesine neden olan sorun düzeltildi. Bu, ART'nin derleme durumununverifyuygulamaları ilk başlatılmalarından kısa süre sonra 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ının kesilmesi nedeniyle yerleşik Macrobenchmark metriklerinden ölçüm bildirmeyen (özellikle kısa) izlerin yakalanabilmesi sorunu düzeltildi. Macrobenchmark artık beklenen paket adına ek olarak tüm yerleşik sorgularda kısaltılmış paket adını arayarak bu sorunu giderir. Özel
TraceMetricuygulamalarının veyaPerfettoSession.query'in diğer doğrudan çağrıcılarının, Perfetto sorgusundakiprocess.name LIKE "$packageName"değerini(process.name LIKE "$packageName" OR process.name LIKE "$(packageName.takeLast(15))")olarak değiştirerek aynı davranışı uygulayabileceğini unutmayın. (I5bf01, b/377565760)
Sürüm 1.4.0-alpha04
30 Ekim 2024
androidx.benchmark:benchmark-*:1.4.0-alpha04 yayınlandı. 1.4.0-alpha04 sürümü bu kayıtları içerir.
Yeni Özellikler
- (Deneysel) Temel Profil oluşturmayı ve ikincil bir kullanıcıya yüklenen uygulamalarda (ör. gözetimsiz Android Auto cihazlarındaki tüm uygulamalar) karşılaştırmayı etkinleştirin. Bu destek bazı senaryolarda test edilmiştir ancak sizin için çalışmazsa hata bildirimi göndererek bize bildirin. (I9fcbe, b/356684617, b/373641155)
Hata Düzeltmeleri
isProfileableartık karşılaştırma derlemelerinde her zaman geçersiz kılınır veisDebuggablede artık hem karşılaştırma hem denonMinified(temel profil yakalama) derlemelerinde her zaman geçersiz kılınır. (I487fa, b/369213505)- API 28'den önceki bazı fiziksel cihazlarda derleme algılamasıyla ilgili sorunlar düzeltildi. Bu düzeltme,
context.compilationModejson'ı veandroidx.benchmark.requireAot=truedavranışını (artık yanlışlıkla hata vermiyor) etkiler (Ic3e08, b/374362482). CpuEventCountermetriklerinde, 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 yayınlandı. 1.4.0-alpha03 sürümü bu commit'leri içerir.
API Değişiklikleri
- Macrobenchmark: Profil kapsamını veya genel Android Çalışma Zamanı performansını incelemek için kullanılabilecek
ArtMetricekler. JIT, sınıf başlatma (varsa) ve sınıf doğrulama işlemlerinin sayısını ve toplam süresini yakalar. Ayrıca, varsayılan olarak isteğe bağlı ART ana hattı sürümünü içerecek şekildeCaptureInfodeğ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
coefficientOfVariationekleyin. (Ib14ea)
Hata Düzeltmeleri
- AVD cihazında boşluk olduğunda
CollectBaselineProfileTaskdüzeltildi. (Ia0225, b/371642809) StartupMode.COLDistisnalarından kaynaklanan hatalar için spekülatif düzeltme:Package <packagename> must not be running prior to cold start!. ArtıkMacrobenchmarkScope.killProcess()(her iterasyondan önce çalıştırılan veStartupMode.COLDdavranışını uygulamak için kullanılan dahil), uygulamanın tüm işlemlerinin durdurulduğunu doğrulamak için bekleyecek. (I60aa6, b/351582215)- Root erişimli bazı emülatörlerde UNLOCKED_ hatasının gösterilmesi sorunu 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 şu 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 yayınlandı. 1.4.0-alpha02 sürümü bu commit'leri içerir.
API değişiklikleri
lockClocksveunlockClocksGradle görevleri, üst düzeyde kullanılabilir olmak yerine karşılaştırma projelerinde olacak şekilde taşındı. Bu değişiklik, proje izolasyonunu bozmadan bunları üst düzey işlemler olarak kaydetmenin bir yolu olmadığı için gerekliydi. (I02b8f, b/363325823)
Hata Düzeltmeleri
BaselineProfileRuleartık profilleri dökümlemek için bloğun sonunda çalışan her işleme sinyal göndererek çok işlemli uygulamalar için profil topluyor. Profile dayalı bir derleme, yayınlanacak bir işlemi hiçbir zaman başarıyla bulamazsa derleme başarısız olur. Çünkü içinde profil verilerinin olması beklenmez. Ayrıca, döküm bekleme süresini kontrol etmek için bir araç bağımsız değişkeni eklendi:androidx.benchmark.saveProfileWaitMillis(I0f519, b/366231469)- Benchmark
1.3.2: Firebase Test Lab'in (FTL), Baseline Profile Gradle eklentisinden Baseline Profile veya Macrobenchmark sonuç dosyalarını alamaması sorunu düzeltildi. (I2f678, b/285187547)
FTL'yi kullanmak için eklentiyi, eklenti bloğundaki temel profil modülüne şunlarla uygulayın:
plugins {
...
id("com.google.firebase.testlab")
}
ve ardından Firebase Test Lab'i şunlarla yapılandırın:
firebaseTestLab {
// Credentials for FTL service
serviceAccountCredentials.set(file("credentials.json"))
// Creates one or more managed devices to run the tests on.
managedDevices {
"ftlDeviceShiba34" {
device = "shiba"
apiLevel = 34
}
}
// Ensures the baseline profile is pulled from the device.
// Note that this will be automated as well later with aosp/3272935.
testOptions {
results {
directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
}
}
}
Ayrıca, oluşturulan FTL cihazının temel profil uzantısına eklenmesi gerekir:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
Sürüm 1.4.0-alpha01
18 Eylül 2024
androidx.benchmark:benchmark-*:1.4.0-alpha01 yayınlandı. 1.4.0-alpha01 sürümü bu 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ırmak, yaygın sorunları aramak için izi analiz eder ve bunları, karşılaştırma sekmesindeki Studio test çıkışındaki metriklerden sonra yazdırı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.suppressWarningseklendi. (314153a) - Mikro karşılaştırma metrikleri artık Perfetto izlerinde sayaç olarak gösterilir. (3214854)
- Jit'i 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 testleri atlamak için karşılaştırma bağımsız değişkeni eklendi.
automaticGenerationDuringderlemesi etkinleştirildiğinde karşılaştırmalar, temel profil oluşturmayı da tetikler. Emülatörler kullanılıyorsa bu işlem başarısız olur. Yeni bağımsız değişkenskipBenchmarksOnEmulatorile 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
PerfettoConfigbağımsız değişkeniMacrobenchmarkRule.measureRepeated(), yeniExperimentalConfignesnesine taşındı.
Hata düzeltmeleri
lockClocks.shyeniden deneme sayısını artırın (99e9dac)- Mevcutsa
nonMinifiedve karşılaştırma derleme türleri oluşturmayın. Bir hata nedeniyle,nonMinifiedve karşılaştırma derleme türleri mevcut olsa bile yeniden oluşturuluyordu. (e75f0a5) TraceSectionMetricsonuçlarındaki sonlandırılmayan dilimleri yoksay. (a927d20)- Emülatör kontrolü,
sdk_önekini dikkate alacak şekilde iyileştirildi. (1587de8) - Çalışmayan paketleri
FrameTimingGfxInfoMetric'da 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 uyacak şekilde düzeltildi
resumeTiming/runWithTimingDisabledve düşük öncelikli metrik duraklatma/devam ettirmenin yüksek öncelikli metrik sonuçları üzerindeki etkisi önemli ölçüde azaltıldı. Örneğin,cpuEventCounter.enablearaç bağımsız değişkeni aracılığıyla CPU performans sayaçları kullanılıyorsa duraklatma/devam ettirme işlemleri gerçekleştiğinde timeNs artık önemli ölçüde azaltılmaz. (5de0968)
Sürüm 1.3
Sürüm 1.3.4
26 Mart 2025
androidx.benchmark:benchmark-*:1.3.4 yayınlandı. 1.3.4 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Benchmark Baseline Gradle eklentisindeki Gradle Project Isolation uyumsuzlukları düzeltildi. (b/404523257)
Sürüm 1.3.3
16 Ekim 2024
androidx.benchmark:benchmark-*:1.3.3 yayınlandı. 1.3.3 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- AVD cihazında boşluk olduğunda
CollectBaselineProfileTaskdüzeltildi (Ia0225, b/371642809)
Sürüm 1.3.2
2 Ekim 2024
androidx.benchmark:benchmark-*:1.3.2 yayınlandı. 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ı alamaması sorunu düzeltildi. (I2f678, b/285187547)
FTL'yi kullanmak için eklentiyi, eklenti bloğundaki temel profil modülüne şunlarla uygulayın:
plugins {
...
id("com.google.firebase.testlab")
}
ve ardından Firebase Test Lab'i şunlarla 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 yayınlandı. 1.3.1 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Tüm referans profil uyarılarını engellemek için
androidx.baselineprofile.suppressWarningsGradle özelliği eklendi (I7c36e, b/349646646) - 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
automaticGenerationDuringBuildetkinleştirildiğindejava.lang.AssertionError: ERRORS (not suppressed): EMULATORsorunu düzeltildi. Bunun yerine testi atlamak için yeni bir bağımsız değişken kullanılır. (If3f51, b/355515798) - Mikro karşılaştırma sadeleştirmesi: Karşılaştırma kitaplığı proguard'ında
org.junit.runner.notification.RunListeneralt sınıflarını koruma (Ic8ed5, b/354264743) - Sonlandırılmayan dilimleri yoksaymak için
TraceSectionMetricdeğerini düzeltin. Daha önce, toplama veya minimum süreyi bulma gibi durumlarda bu etkinliklerin süresi -1 olarak kabul ediliyordu. (If74b7) FrameTimingGfxInfoMetricuygulamasında, işlem zaten çalışmıyorsa metriğin başlatılmasının kilitlenmesine neden olan bir sorun düzeltildi. (I6e412)
Sürüm 1.3.0
21 Ağustos 2024
androidx.benchmark:benchmark-*:1.3.0 yayınlandı. 1.3.0 sürümü bu commit'leri içerir.
1.2.0 sürümünden sonraki Microbenchmark 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 izleri elde edilir.
- 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 kapalı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
measureRepeatedOnMainThreadeklendi. - ANR'den kaçınma son tarihini aşması beklenen yöntem izleri atlanır. Bu davranışı devre dışı bırakmak için
androidx.benchmark.profiling.skipWhenDurationRisksAnrdeğ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 sadeleştirme/R8 için AGP 8.3 gerekir ve
build.gradledosyanızdaandroid.buildTypes.release.androidTest.enableMinificationaracılığıyla etkinleştirilebilir. - Ölü kodların kaldırılmasını önlemek için deneysel
BlackHole.consume()API eklendi (If6812, b/286091643)
- Metrikler
- Deneysel CPU etkinlik sayacı özelliği (platformun çoğu sürümünde root erişimi gerektiren
perf_event_openmetrikleri),InstrumentationArgumentandroidx.benchmark.cpuEventCounter.enableüzerinden erişim (trueolarak ayarlanabilir) veandroidx.benchmark.cpuEventCounter.events, (Instructions,CpuCycles) olarak ayarlanabilir. Bu özellik bazı userdebug emülatörlerinde desteklenir ancak destek, mevcut tüm emülatörlerde test edilmemiştir.
- Deneysel CPU etkinlik sayacı özelliği (platformun çoğu sürümünde root erişimi gerektiren
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 izleri
measureBlocksü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.COLDkarşılaştırmaları için çalışıyordu ve hedef süreci yeniden başlatmayanmeasureBlocksiçin hiçbir şey yakalamıyordu. - 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 izleri
- İşlem sonlandırıldığında tek tek
warmUpiterasyonları sırasında ART profilini doğru şekilde dökerekCompilationMode.Partial(warmup=N)ölçümlerinin daha doğru olmasını sağlayın. (I17923) - Drop Shader yayın hatası mesajı
- Gölgeleyici yayınlama hatası mesajını bırakmak için hata ayıklama önerileri eklendi.
ProfileInstaller1.3 olmadan uygulamalara kıyaslama testi yaparken kilitlenmeleri önlemek için gölgelendirici bırakma davranışını geçersiz kılacak 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 testi yaparken,StartupMode.Coldlansmanları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: Gölgelendiricileri bırakmaya çalışırken oluşan hataları tolere etmek için kullanılabilir. Örneğin, profileinstaller 1.3 olmadan uygulamaları karşılaştırırken (I4f573)
- Tamamen özelleştirilmiş Perfetto iz kaydı için özel
PerfettoConfigalan deneyselMacrobenchmarkRule#measureRepeatedvaryantı 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) - Paraziti 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şiklik
- Not: Aşağıdaki
TraceSectionMetricdeğişiklikleri, CI kullanımındaki çıkışları etkileyebilir ve kesintilere neden olabilir veya ayrıştırmayı bozabilir. - Bu metriğin çoğu kullanımı tekrarlanan etkinlikler için olduğundan ve ilk etkinlik bu durumlarda verileri siler. Bu nedenle, varsayılan olarak toplam kullanılır.
- Daha fazla mod seçeneğiyle daha özelleştirilebilir hale getirildi.
- Mod adları artık metrik çıkış adına yerleştirilmiştir (Studio ve JSON'da).
- Artık
Trace.{begin|end}AsyncSectionkullanılarak oluşturulan dilimleri destekliyor.
- Not: Aşağıdaki
- Metrikler
PowerMetric.deviceSupportsHighPrecisionTracking,PowerMetric.deviceBatteryHasMinimumCharge()vePowerMetric.deviceSupportsPowerEnergy()eklendi- Dönüş türüyle eşleşmesi için
Metric.getResult,getMeasurementsolarak yeniden adlandırıldı. - Tüm başlatma algılama hatalarına log.w / istisna etiketleri eklendi. Bu değişiklik, mevcut davranışı değiştirmez (bazı hatalar oluşturulur, bazıları ise başlangıcı sessizce algılayamaz). Yalnızca daha anlaşılır hale getirir. Genellikle
Log.w()ve başlatma metriklerini raporlayamayanlar, kare dışı etkinliklerin eksik olduğu, kare zamanlama bilgileri (UI/RT dilimlerinden) dışında başlatma algılandığında istisnaların oluşturulduğu etkinliklerdir. (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'yeframeCountölçümü eklendi (yeni animasyonlar eklendi, geçersiz kılma sorunları düzeltildi). (I1e5aa) frameOverrunMsmetriğinin, dokümanlarda kullanılabildiği durumlarda izleme için tercih edilen metrik olduğu ve bunun nedenleri netleştirildi. (I18749, b/329478323)- İzlemenin başındaki ve sonundaki sonlandırılmamış karelerin eşleştirilerek tek bir son derece uzun kare olarak yanlış raporlanmasına neden olan sorun düzeltildi. (I39353, b/322232828)
- Kareler oluşturulmadığında
FrameTimingMetrichatasını iyileştirin ve sorunun teşhis edilmesine yardımcı olmak için metrik ayrıştırma başarısız olduğunda her zaman izleme bağlantısı oluşturun. (I956b9) - Özellikle belirli OEM cihazlarda kare kimliğinin ayrıştırılamaması nedeniyle
FrameTimingMetricuygulamasında yaşanan kilitlenme sorunu düzeltildi. (Ia24bc, b/303823815, b/306235276) FrameMetricsbölümündeki kontrollerin katılığı azaltıldı ve hata mesajlarına daha fazla ayrıntı eklendi. (Iadede)
1.2.0 sürümünden sonraki Baseline Profile yakalama / Gradle eklentisi değişiklikleri
- Önerilen maksimum AGP sürümü 9.0.0-alpha01'e yükseltildi.
mergeArtProfilevemergeStartupProfilegörevlerinin her zaman referans profil oluşturma işlemini beklemesini sağlayın. (I623d6, b/343086054)- Referans profili başarıyla oluşturulduğunda, değişenlerin özeti gösterilir (I824c8, b/269484510).
- Uyarıları devre dışı bırakmak için DSL eklendi (Ic4deb, b/331237001)
automaticGenerationDuringBuilddevre dışı olduğunda karşılaştırmaların oluşturulan referans profillerini kullanmasını sağlamak için düzeltme (Ic144f, b/333024280)- Bir
nonMinifiedveya karşılaştırma derleme türünü özelleştirirken temel profil oluşturmayı ve karşılaştırmayı etkinleştirmek içinBaselineProfileGradle eklentisi özellik geçersiz kılmalarını düzeltin. (Ib8f05, b/324837887) - Kitaplık temel profillerinin AGP 8.3.0-alpha15'ten önceki AAR'ye dahil edilmesiyle ilgili düzeltme. (I1d2af, b/313992099)
- Oluşturma görevinin sonunda sabit referans ve başlangıç profili çıkış URL'si. (I802e5, b/313976958)
1.2.0 sürümünden sonra yapılan diğer önemli değişiklikler
- İz yakalama
- Hata durumundan kaydedilmiş uyarıya geçerken 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 porter etiketi izlemeyi varsayılan olarak etkinleştirir. Bu, örneğin uyanık kalma kilidi izleme noktalarını yakalar. (Icfe44, b/286551983)
- Daha yavaş cihazlarda izleme başlatılırken kilitlenmeleri önlemek için izleme yakalama başlatma zaman aşımı süresi artırıldı (I98841, b/329145808).
- JSON, textproto ve proto ikili (kodu çözülmemiş) varyantları içeren genel API
PerfettoTraceProcessor.Session.queryMetricsAPI'leri eklendi. Bunlar,TraceProcessor'te yerleşik olarak bulunan metrikleri sorgulamanıza olanak tanır (I54d7f, b/304038382). - İzlemenin başında veri eksikliği 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 çıkışında karşılaştırma bağlamına ek bilgiler eklendi:
context.artMainlineVersion: Art ana modülünün tam sayı sürümü (cihazda varsa, aksi takdirde-1)context.build.id- android.os.Build.ID ile aynıdır.context.build.version.codename- android.os.Build.VERSION.CODENAME ile aynıdır.context.build.version.abbreviatedCodename: Yayın öncesi kod adının ilk harfine karşılık gelir (yayınlanan derlemeler dahil) (Ie5020)
- Profil oluşturma izleriyle (ör.Perfetto, yöntem izleri) ilgili araçların daha kolay kullanılması için JSON çıkışına
profilerOutputlistesi eklendi (I05ddd, b/332604449). - Android Test Orchestrator, karşılaştırma modüllerinde kullanıldığında modül başına çıkış JSON dosyalarının tekrar tekrar üzerine yazılmasına neden olacağı için bir uyarı eklendi. (Ia1af6, b/286899049)
- Dosya yazma veya sonradan işleme sırasında belirsiz kilitlenmeleri önlemek için dosya adları 200 karakterden uzun olduğunda hata ver. (I4a5ab)
- JSON çıkışı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 yayınlandı. 1.3.0-rc01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Talimat dışı etkinlikler için bozuk değerler üreten
androidx.benchmark.cpuEventCounterdüzeltildi (I7386a, b/286306579). - Metrik öncelik sırasına uymak ve daha düşük öncelikli metrik duraklatma/devam ettirme işleminin daha yüksek öncelikli metrik sonuçları üzerindeki etkisini önemli ölçüde azaltmak için
resumeTiming/runWithTimingDisableddüzeltildi. Örneğin,cpuEventCounter.enablearaç bağımsız değişkeni aracılığıyla CPU performans sayaçları kullanılıyorsa duraklatma/devam ettirme işlemleri gerçekleştiğinde timeNs artık önemli ölçüde azaltılmaz. (I39c2e, b/286306579, b/307445225) - Yığın örnekleme dönüşümü ana iş parçacığından çıkarılarak yığın örneklemenin ana iş parçacığı kesin zaman aşımına ulaşarak
measureRepeatedOnMainThreadhatası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 derlemelerde bu işlem API modelleme aracılığıyla otomatik olarak yapıldığından, yeni platform API'lerine erişimin manuel olarak ana hatlarının oluşturulması kaldırıldı. AGP kullanmayan müşterilerin D8'in 8.1 veya sonraki bir sürümüne 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 önce hedef uygulama paketi adı, enstrümantasyon bağımsız değişkenleri aracılığıyla enstrümantasyon uygulamasına gönderilemiyordu. (0c72a3f)
Sürüm 1.3.0-beta02
10 Temmuz 2024
androidx.benchmark:benchmark-*:1.3.0-beta02 yayınlandı. 1.3.0-beta02 sürümü bu kayıtları içerir.
Hata düzeltmeleri
- Perfetto'yu başlatırken EXITCODE
2hatasını düzgün bir şekilde işleyerek uyarıyı günlüğe kaydedin ancak devam edin.
Sürüm 1.3.0-beta01
12 Haziran 2024
androidx.benchmark:benchmark-*:1.3.0-beta01 yayınlandı. 1.3.0-beta01 sürümü bu kayıtları içerir.
API değişiklikleri
- Tutarlılık için
MethodTracing.affectsMeasurementOnThisDevice,AFFECTS_MEASUREMENT_ON_THIS_DEVICEolarak 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) - Microbenchmark artık yöntem izlemenin ölçümlere müdahale etmesini önlemek için doğru şekilde hata verecek. Bu durum, yöntem izleme zorunlu kılındığında (enstrümantasyon bağımsız değişkenleri veya
MicrobenchmarkConfigaracılığıyla) ve yöntem izlemeden sonra ölçüm yapılmaya çalışıldığında belirli cihazlarda ortaya çıkar. Etkilenen cihazlar, API 26-30 veya bu müdahaleden etkilenen belirli ART ana hat modülü sürümlerini çalıştırır ve çalışma zamanındaProfilerConfig.MethodTracing.affectsMeasurementOnThisDevicearacılığıyla tespit edilebilir. (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)
- AIDL izlemeyi varsayılan olarak etkinleştirme (API 28 gerektirir) (Ia0af2, b/341852305)
- JSON çıkışına karşılaştırma bağlamında ek bilgiler eklendi:
context.artMainlineVersion: Art ana modülünün tam sayı sürümü (cihazda varsa, yoksa -1)context.build.id- Eşittirandroid.os.Build.IDcontext.build.version.codename- Eşittirandroid.os.Build.VERSION.CODENAMEcontext.build.version.abbreviatedCodename: Yayın öncesi kod adının ilk harfine karşılık gelir (yayınlanan derlemelerde bile) (Ie5020)
androidx.benchmark.profiling.sampleDurationSecondsdeğerine uyması içinStackSamplingdüzeltildi (Ib1d53)- Makro->ortak bağımlılığını
api()olarak değiştirin. BöylecePerfettoTracevePerfettoConfiggibi öğeleri kullanmak daha kolay olur. (Icdae3, b/341851833) mergeArtProfilevemergeStartupProfilegörevlerinin her zaman referans profil oluşturma işlemini beklemesini sağlayın. (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 yayınlandı. 1.3.0-alpha05 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Makro karşılaştırma metriği tüm iterasyonlar için sıfır değer döndürdüğünde daha net bir istisna 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)
- Shader yayın hatası mesajını bırakmak için ek hata ayıklama önerileri eklendi. (I5efa6, b/325502725)
Sürüm 1.3.0-alpha04
1 Mayıs 2024
androidx.benchmark:benchmark-*:1.3.0-alpha04 yayınlandı. 1.3.0-alpha04 sürümü bu kayıtları içerir.
API Değişiklikleri
- Tamamen özelleştirilmiş Perfetto iz kaydı için özel
PerfettoConfigalan deneyselMacrobenchmarkRule#measureRepeatedvaryantı eklendi. Yanlış yapılandırılmış yapılandırmaların, yerleşik Metric sınıflarının başarısız olmasına neden olabileceğini unutmayın. (Idfd3d, b/309841164, b/304038384) - Daha net olması için
PowerMetric.deviceSupportsPowerEnergy,PowerMetric.deviceSupportsHighPrecisionTrackingolarak yeniden adlandırıldı (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()simgeleri eklendi. (I6a591, b/322121218)
Hata Düzeltmeleri
- Önceki temel değer profiliyle (I824c8, b/269484510) karşılaştırma eklendi.
- Uyarıları devre dışı bırakmak için DSL eklendi (Ic4deb, b/331237001)
- Karşılaştırma varyantları devre dışı bırakıldığında istisna, bilgi günlüğü olarak değiştirildi (I8a517, b/332772491).
- Macrobenchmark için yöntem izlerini yakalamayı kolaylaştırma, gerçek
measureBlock()süresiyle sınırlıdır. Daha önce, hedef işlem başlatıldığında başlıyordu ve yalnızca baştan başlatmaları destekliyordu (Iee85a, b/300651094). - Perfetto izleme işlemcisinin yavaş başlatılması durumunda kilitlenme önlendi (I98841, b/329145808).
Sürüm 1.3.0-alpha03
17 Nisan 2024
androidx.benchmark:benchmark-*:1.3.0-alpha03 yayınlandı. 1.3.0-alpha03 sürümü bu kayıtları içerir.
Yeni özellikler
- JSON, textproto ve proto ikili (kodlanmamış) varyantlarına sahip herkese açık API'ler
PerfettoTraceProcessor.Session.queryMetricseklendi. Bu sayede TraceProcessor'a yerleştirilmiş metrikleri sorgulayabilirsiniz (I54d7f, b/304038382). - Profil oluşturma izleriyle (ör. perfetto, yöntem izleri) ilgili araçların kullanımını kolaylaştırmak için JSON çıkışına
profilerOutputeklendi. (I05ddd, b/332604449) - Perfetto Yapılandırması'nı karşılaştırmak için güç etiketi eklendi. Bu, örneğin uyanık kalma kilidi izleme noktalarını yakalar. (Icfe44, b/286551983)
androidx.benchmark.profiling.skipWhenDurationRisksAnrinst bağımsız değişkeni eklendi. Beklenen süre ANR'ye neden olabileceğinden yöntem izlerinin atlanmasını önlemek için bu bağımsız değişken false değerine ayarlanabilir. CI çalıştırmalarında bu durumun önlenmesi önemle tavsiye edilir.- Deneysel inst bağımsız değişkeni
androidx.benchmark.profiling.perfCompare.enableeklendi. Ölçüm ve profil oluşturma aşamaları arasında karşılaştırma zamanlaması çalıştırmak için bunu doğru olarak ayarlayın. Örneğin, yöntem izlemenin ek yükünü değerlendirirken kullanışlıdır. (I61fb4, b/329146942)
API değişiklikleri
- Kapsamlı when ifadelerini bozmadan gelecekte genişletmeye olanak tanımak için
TraceSectionMetric.Mode, kapalı sınıf olarak değiştirildi (I71f7b). TraceSectionMetric.Mode.Averageve.Counteklendi. Daha yaygın olan bağımsız değişkenin (mod) bağımsız değişken listesinde daha önce yer alması için bağımsız değişkenler yeniden sıralandı. Böylece parametre adlarını belirtme ihtiyacı azaltıldı. (Ibf0b0, b/315830077, b/322167531)- Dönüş türüyle eşleşmesi için
Metric.getResult,getMeasurementsolarak yeniden adlandırıldı (I42595)
Hata Düzeltmeleri
automaticGenerationDuringBuildkapalıyken karşılaştırmaların oluşturulan referans profilleri kullanmasını sağlayan düzeltme (Ic144f, b/333024280)nonMinifiedveya karşılaştırma derleme türünü özelleştirirken temel profil oluşturmayı ve karşılaştırmayı etkinleştirmek içinBaselineProfileGradle eklentisi özellik geçersiz kılmalarını düzeltin. (Ib8f05, b/324837887)- Makro karşılaştırmada yöntem izlerinin temizlenmesi düzeltildi. Böylece yöntem izleri, daha yavaş cihazlarda bile tamamen yakalanabilir ve geçerli olabilir. (I6349a, b/329904950)
- İzlemenin başında veri eksikliği 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 modül başına çıkış JSON dosyalarının tekrar tekrar üzerine yazılmasına neden olacağı için bir uyarı eklendi. (Ia1af6, b/286899049)
- Studio çıkışında tutarlılık için cihaz yerel ayarını yok sayarak "," (virgül) binlik ayırıcıları zorunlu kılma (I3e921, b/313496656)
TraceSectionMetricartıkTrace.{begin|end}AsyncSectionkullanılarak oluşturulan dilimleri destekliyor. (I91b32, b/300434906)- Tüm başlatma algılama hatalarına log.w / istisna etiketleri eklendi. Bu durum mevcut davranışı değiştirmez (bu nedenle bazı hatalar oluşur ve diğerleri 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 süresi 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ının değişmesi (yeni animasyonlar eklendi, geçersiz kılma sorunları düzeltildi) nedeniyle ölçümlerin değiştiği senaryoların tespit edilmesine yardımcı olmak için
FrameTimingMetricöğesineframeCountölçümü eklendi. (I1e5aa) - Belgelerde mevcut olduğunda izleme için tercih edilen metriğin
frameOverrunMsolduğu ve bunun nedeni açıklandı. (I18749, b/329478323)
Sürüm 1.3.0-alpha02
20 Mart 2024
androidx.benchmark:benchmark-*:1.3.0-alpha02 yayınlandı. 1.3.0-alpha02 sürümü bu kayıtları içerir.
Yeni Özellikler
Yerleşik proguard kuralları aracılığıyla mikro karşılaştırmada deneysel R8 desteği. Bu desteğin deneysel olduğunu ve kitaplık modülü testlerinin küçültülmesi için AGP 8.3'ün gerekli olduğunu unutmayın. Karşılaştırma modülünüzün
build.gradledosyasında R8 sadeleştirmesini/optimizasyonunu etkinleştirmek için aşağıdakileri kullanın. Bu, iş yüküne bağlı olarak performansta önemli bir artış sağlayacaktır. (I738a3, b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
Hata Düzeltmeleri
- Yöntem izleme uyarısının microbench çıkışı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 yayınlandı. 1.3.0-alpha01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Gereksiz "should" kelimesini önlemek için
MicrobenchmarkConfigBoole parametreleri yeniden adlandırıldı (Ia8f00, b/303387299) - Ana iş parçacığı karşılaştırmalarının (ör. Görünümler veya Oluşturma kullanıcı arayüzlerine dokunanlar) özellikle CI'daki büyük paketler sırasında ANR'leri tetiklemesini önlemek için
BenchmarkRule.measureRepeatedOnMainThreadeklendi. (I5c86d) - Ölçümleri Perfetto izinden ayıklamak yerine doğrudan platformdan alan,
FrameTimingMetric'in deneysel bir alternatif uygulaması olanFrameTimingGfxInfoMetriceklendi. (I457cb, b/322232828) - Ayrı
warmUpiterasyonları sırasında ART profili dökümü alma özelliği eklendi. (I17923) TraceSectionMetricAPI'sinde yapılan çeşitli değişiklikler:Mode.Min,Mode.Maxekle- 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ı tekrarlanan etkinlikler için olduğundan varsayılan değer toplam olarak değiştirildi. Sürekli entegrasyon kullanımındaki bu değişikliklere dikkat edin. Bu değişiklikler kesintilere neden olabilir veya ayrıştırmayı bozabilir. (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).
- Kitaplık temel profillerinin AGP 8.3.0-alpha15'ten önceki sürümlerde 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).ProfileInstaller1.3 olmadan uygulamaları karşılaştırırken kilitlenmeleri önlemek için gölgelendirici bırakma davranışını geçersiz kılan iki araçlandırma bağımsız değişkeni ekleyin:androidx.benchmark.dropShaders.enable=true/false: Tüm gölgelendirici bırakma işlemlerini (StartupMode.Coldbaşlatmalarında yapılanlar dahil) atlamak için kullanılabilir. Özellikle henüz profileinstaller 1.3'ü kullanmayan uygulamaları karşılaştırırken kullanılabilir.androidx.benchmark.dropShaders.throwOnFailure=true/false: Gölgelendiricileri bırakmaya çalışırken oluşan hataları tolere etmek için kullanılabilir. Örneğin, profileinstaller 1.3 olmadan uygulamaları karşılaştırırken (I4f573)
- Birkaç saniyeden uzun sürmesi beklenen kullanıcı arayüzü iş parçacığında yöntem izlemeyi atlayın ve hata oluştuğunda yöntem izlerini temizleyin. (I6e768)
- Dosya yazma veya sonradan işleme sırasında belirsiz kilitlenmeleri önlemek için dosya adları 200 karakterden uzun olduğunda hata ver. (I4a5ab)
- İzlemenin başındaki ve sonundaki sonlandırılmamış karelerin eşleştirilerek tek bir son derece uzun kare olarak yanlış raporlanmasına neden olan sorun düzeltildi. (I39353, b/322232828)
- Kullanıcı derlemelerindeki ART profillerini temizlemek için API 30-33'te bir paketi yeniden yüklerken API 30 ve sonraki sürümlerde
--skip verificationkullanın. Bu sayede, bazı cihaz sınıflarında hatalara neden olan Play Protect uyarıları atlanabilir. (Ic9e36) - Sistem arayüzü veya başlatıcı gibi sistem uygulaması olmayan uygulamaları sonlandırmak için
am force-stopkullanın. (I5e028) - Macrobenchmark artık hedef uygulamanın bir ART profilini temizlemesi için
1 secondbekliyor (daha önce500 msbekleniyordu). (I85a50, b/316082056) - Kareler oluşturulmadığında
FrameTimingMetrichatasını iyileştirin ve sorunu teşhis etmeye yardımcı olmak için metrik ayrıştırma başarısız olduğunda her zaman izleme bağlantısı oluşturun. (I956b9) - Özellikle belirli OEM cihazlarda kare kimliğinin ayrıştırılamaması nedeniyle
FrameTimingMetriciçinde kilitlenmeye neden olan sorun düzeltildi. (Ia24bc, b/303823815, b/306235276) FrameMetricsiçindeki 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 yayınlandı. 1.2.4 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Karşılaştırma varyantlarında temel profil srcset'inin ayarlanmaması sorunu düzeltildi. Ayrıca, kitaplıklarda döngüsel bağımlılığa neden olan
automaticGenerationDuringBuildsorununu da düzeltir. (I28ab7, b/333024280) - Sistem arayüzü veya başlatıcı gibi sistem uygulaması olmayan uygulamaları sonlandırmak için
am force-stopkullanın. Bu sayede, işlemin tamamen sonlandırılamaması nedeniyle "Package $package must not be running prior to cold start!" hatasıyla kilitlenenStartupMode.COLDkarşılaştırmaları düzeltildi. (I5e028)
Sürüm 1.2.3
24 Ocak 2024
androidx.benchmark:benchmark-*:1.2.3 yayınlandı. 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 eklentisindeki istisna kaldırıldı.
- Kitaplık temel profillerinin AGP 8.3.0-alpha15'ten önceki AAR'ye dahil edilmesiyle ilgili düzeltme.
Sürüm 1.2.2
1 Aralık 2023
androidx.benchmark:benchmark-*:1.2.2 yayınlandı. 1.2.2 sürümü bu commit'leri içerir.
Temel profiller
- Yürütme günlükleri, temel profil çıkış dosyası yolunu yerel dosya URI'si olarak gösterir (aosp/2843918, aosp/2853665, b/313976958).
Sürüm 1.2.1
15 Kasım 2023
androidx.benchmark:benchmark-*:1.2.1 yayınlandı. 1.2.1 sürümü bu 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 yayınlandı. 1.2.0 sürümü bu 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 yakalama ve test ile derleme iş akışınıza dahil etme işlemlerini otomatikleştirir.
BaselineProfileRule.collectartık kararlı sürümde. Önceki deneyselBaselineProfileRule.collectBaselineProfileAPI'nin daha akıcı ve basit bir sürümü.packageNamedeğerini belirtip uygulamanızı yönlendirin
- Temel profiller oluşturan kitaplıklar için artık kodda (
BaselineProfileRule.collectbağımsız değişkeni) veya daha basit bir şekilde Gradle eklentisinde oluşturulan kuralları filtreleyebilirsiniz. - Düzeltmeler
- Android U+'da temel profil koleksiyonu düzeltildi (Id1392, b/277645214)
Makro karşılaştırma testi
- Derleme
- Macrobenchmark artık her derleme için derleme durumunu doğru şekilde tamamen sıfırlıyor. Bu işlem, Android 14'ten önce APK'nın yeniden yüklenmesini gerektirir. Bu nedenle, ölçülen öğede durumu (kullanıcı girişi gibi) 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 da bu sorunu çözebilirsiniz.
Araç Bağımsız Değişkenleri
- Daha hızlı doğrulama çalıştırmaları için (ör. karşılaştırma oluştururken veya göndermeden önce)
androidx.benchmark.dryRunMode.enableenstrümantasyon bağımsız değişkeni desteği (mikro karşılaştırmada zaten mevcuttur) androidx.benchmark.profiling.mode=StackSamplingveMethodTracingiçin destek.- Çalışma zamanı filtreleme temel profili ile makro karşılaştırma kuralı testlerine izin vermek için
androidx.benchmark.enabledRuleseklendi. - Tracing-perfetto ile izlemeyi (ör. Compose yeniden oluşturma izleme) etkinleştirmek için
androidx.benchmark.perfettoSdkTracing.enablebağımsız değişkeni eklendi.StartupMode.COLDile kullanıldığında, izleme kitaplığı uygulama başlatılırken yüklendiği ve etkinleştirildiği için zamanlamanın önemli ölçüde etkileneceğini unutmayın.
- Daha hızlı doğrulama çalıştırmaları için (ör. karşılaştırma oluştururken veya göndermeden önce)
Şartlar
- Macrobenchmark artık profil yakalama / sıfırlama ve gölgelendirici önbelleği temizleme özelliklerini etkinleştirmek için hedef uygulamada
ProfileInstaller1.3.0 veya sonraki bir sürümü gerektiriyor.
- Macrobenchmark artık profil yakalama / sıfırlama ve gölgelendirici önbelleği temizleme özelliklerini etkinleştirmek için hedef uygulamada
Yeni deneysel metrik API'leri
- Uygulamanızdaki
trace("") {}bloklarından basit zamanlama ayıklamaya olanak tanıyan deneyselTraceSectionMetricveya Perfetto'nunTraceProcessortüm sorgu özelliklerinden yararlanmak için TraceMetric eklendi. - Güç kullanımı bilgilerini yakalamak için deneysel
PowerMetriceklendi - Sayfa hatalarını saymak için deneysel
MemoryCountersMetriceklendi. - Sistem izlerinden (Perfetto izleri olarak da bilinir) metrikleri ayıklamak için dahili olarak kullanılan deneysel
PerfettoTraceProcessorAPI eklendi.
- Uygulamanızdaki
Düzeltmeler
- Birden fazla APK'dan (ör. uygulama paketinden) yüklenen bir uygulamadan profil yüklenirken veya çıkarılırken yaşanan kilitlenmeler düzeltildi.
- Tutarsız çerçeve kimliklerine sahip çerçevelerin (genellikle API 31 ve sonraki sürümlerdeki dalgalanmalar sırasında çerçeveler)
FrameTimingMetrictarafından yoksayılması sorunu düzeltildi (I747d2, b/279088460). - 64 MB'tan büyük izlerdeki ayrıştırma hataları düzeltildi (Ief831, b/269949822).
- Cihaz (özellikle emülatör) OS 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ılanlar içeren iyileştirilmiş dosya çıkışı
- Gölgeleyici önbelleği tutarlı bir şekilde silinerek
StartupMode.COLDuygulamasının kararlılığı artırıldı (MacrobenchmarkScope.dropShaderCacheüzerinden de gösterilir) startActivityAndWaitiçin Leanback yedek reklamı düzeltildi.
Mikro karşılaştırma testi
- Özellikler
- Profil oluşturma, diğer metriklerden sonra ayrı bir aşamaya taşındı. Böylece tek bir test çalıştırması hem doğru zamanlama hem de profil oluşturma sonuçlarını gösterebilir.
- Deneysel API'ler
- Özel metrikleri tanımlamak ve izleme ile profil oluşturmayı yapılandırmak için deneysel
MicrobenchmarkConfigAPI eklendi. Yöntem izlerini veya izleme noktalarını yakalamak için kullanılabilir (ancak izleme ek yükünün farkında olun). - JUnit olmadan
BenchmarkState'iBenchmarkRule'ten ayrı olarak kontrol etmek için deneysel API'ler eklendi. - Benchmark API'lerinden ayrı olarak özel yapılandırmayla Perfetto izlerinin yakalanmasını sağlamak için deneysel
PerfettoTracekaydı eklendi.
- Özel metrikleri tanımlamak ve izleme ile 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 çözme.
- Android Studio karşılaştırma çıkışında uyarıların yazdırılamamasına neden olan sorun düzeltildi.
- Android 13 (API 33) ve sonraki sürümlerde
SampledProfilingkilitlenme sorunu düzeltildi. IsolationActivityve Perfetto izleme atlanarakdryRunModeperformansı önemli ölçüde artırıldı (Eski OS sürümlerinde 10 kata kadar daha hızlı prova modu).
Sürüm 1.2.0-rc02
6 Ekim 2023
androidx.benchmark:benchmark-*:1.2.0-rc02 yayınlandı. 1.2.0-rc02 sürümü bu kayıtları içerir.
Hata düzeltmeleri
- Benchmark dosya çıkışının
BaselineProfileeklenti dosyası kopyalama işlemini bozması sorunu 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-perfettoyükleme hata mesajları netleştirildi.
Sürüm 1.2.0-rc01
20 Eylül 2023
androidx.benchmark:benchmark-*:1.2.0-rc01 yayınlandı. 1.2.0-rc01 sürümü şu commit'leri içerir.
Hata düzeltmeleri
- Perfetto SDK izleme, Benchmark'ta başlatılamadığında artık bir istisna (çözüm talimatlarıyla birlikte) oluşturulur. (I6c878, b/286228781)
- ART yöntemi izini perfetto biçimine dönüştürürken OOM kilitlenmesi düzeltildi. (I106bd, b/296905344)
- (Macrobenchmark) Studio test çıkışında bağlantı verildiğinde yöntem izleme etiketi netleştirildi ve yöntem izleme dosya adları cihazda/ana makinede benzersiz olacak şekilde düzeltildi. Böylece birden fazla karşılaştırma çalıştırıldığında dosya adlarının ü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 yayınlandı. 1.2.0-beta05 sürümü bu kayıtları 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 yayınlandı. 1.2.0-beta04 sürümü bu kayıtları içerir.
Yeni özellikler
- Baseline Profiles Gradle eklentisi artık Android Gradle Plugin 8.3'ü destekliyor. (aosp/2715214)
Hata düzeltmeleri
- Çıkış dosyası adlarında "=" ve ":" karakterlerini kullanmayarak çıkış dosyası adlarını daha fazla temizleyip dosya yazma / taşıma ve çekme işlemlerindeki (özellikle parametreleştirilmiş testlerden kaynaklanan) hataları düzeltin. (I759d8)
Sürüm 1.2.0-beta03
9 Ağustos 2023
androidx.benchmark:benchmark-*:1.2.0-beta03 yayınlandı. 1.2.0-beta03 sürümü bu kayıtları içerir.
API Değişiklikleri
TraceSectionMetricöğesini yalnızca hedef pakete göre filtrelemek için bağımsız değişken eklendi. Varsayılan olarak etkin (Ia219b, b/292208786)
Hata düzeltmeleri
fullTracing.enableenstrümantasyon bağımsız değişkeni, yapıt adıyla ve diğer referanslarla tutarlılık sağlamak içinperfettoSdkTracing.enableolarak yeniden adlandırıldı.fullTracing.enable, yedek olarak çalışmaya devam edecek. (I7cc00)- Karşılaştırma kitaplığı dahili izleme noktaları (mikro karşılaştırma döngüsü/aşama izleme dahil) artık Studio sistem izleme görüntüleyicisinde gösterilecek ve Perfetto'da doğru işlemin altında yer alacak. (I6b2e7, b/293510459)
- API 31 ve sonraki sürümlerdeki makro benchmark NOT-PROFILEABLE hatası kaldırıldı ve eng/userdebug root erişimli cihazlarda profileable kontrolü atlandı. (I2abac, b/291722507)
- Dex düzeni optimizasyonları kullanılırken başlangıç profili kuralları da artık temel profil kuralları olarak kabul edilir. (aosp/2684246, b/293889189)
Sürüm 1.2.0-beta02
26 Temmuz 2023
androidx.benchmark:benchmark-*:1.2.0-beta02 yayınlandı. 1.2.0-beta02 sürümü ş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
- İşletim sistemi izleme için yanlış yapılandırıldığında makro karşılaştırmada hata bildirin. Bu hata, yakın zamanda API 26/28 ARM64 emülatörlerinde düzeltilmiştir. (I0a328, b/282191686)
- Derleme sıfırlama hatasına, emülatörün güncellenmesini öneren ayrıntılar eklendi. Bazı emülatörler bu sorunu yakın zamanda düzeltti. (I8c815, b/282191686)
androidx.test.uiautomator:uiautomator:2.2.0öğesiniimplementationbağımlılığı yerineapibağımlılığı yapın. (I1981e)
Sürüm 1.2.0-beta01
18 Temmuz 2023
androidx.benchmark:benchmark-*:1.2.0-beta01 yayınlandı. 1.2.0-beta01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Studio'daki Benchmark çıkışında uyarıların bazen gizlenmesi ve Benchmark çıkışındaki baştaki boşlukların Studio'da görünmemesine neden olan geçici çözüm düzeltildi (Ia61d0, b/227205461, b/286306579, b/285912360).
FrameTimingMetriciç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 yayınlandı. 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 = MethodTracingiçin Macrobenchmark 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 ölçümden sonra sırayla gerçekleşir.
MethodTracingizleme bölümleri de artık varsa yakalanan Perfetto izine dahil ediliyor. (I9f657, b/285014599) Mode.SumileTraceSectionMetriciçin sayım ölçümü ekleyin. (Ic121a, b/264398606)
Sürüm 1.2.0-alpha15
7 Haziran 2023
androidx.benchmark:benchmark-*:1.2.0-alpha15 yayınlandı. 1.2.0-alpha15 sürümü bu commit'leri içerir.
Yeni Özellikler
- Hedef uygulamanın bellek kullanımını izlemek için deneysel
MemoryUsageMetriceklendi. (I56453, b/133147125, b/281749311) PerfettoTrace.recordile tamamen özel Perfetto yapılandırmaları için destek ekleyin (If9d75, b/280460183)- Temel profil oluşturma işlemini atlamak için özellik eklendi. Kullanım:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration. (I37fda, b/283447020)
API değişiklikleri
collectBaselineProfileAPI her zaman kararlı temel profiller oluşturur.collectStableBaselineProfileAPI'si kaldırıldı. Bunun yerinecollectBaselineProfilekullanılmalıdır. (I17262, b/281078707)BaselineProfileRule'nınfilterPredicatebağımsız değişkeni, 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 performansı önemli ölçüde artırmak amacıyla
IsolationActivityvedryRunMode'de Perfetto izlemeyi devre dışı bırakın. (Ie4f7d) - Enstrümantasyon testi bağımsız değişkenleri
androidx.benchmark.profiling.mode=StackSamplingveandroidx.benchmark.profiling.sampleFrequencykullanılarak Macrobenchmark'larda çağrı yığını örneklemesi desteği. (I1d13b, b/282188489) - Android U (API 34) ve emülatörlerde gölgelendiriciler bırakılırken oluşan 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 yayınlandı. 1.2.0-alpha14 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
FrameTimingMetricöğesinin, tutarsız kare kimliklerine sahip kareleri yoksayması sorunu düzeltildi. Bu durum,RenderThreadanimasyon yaparken (ör. dalgalanma sırasında) son platform sürümlerindeki (API 31+) bazı animasyonların birçok kareyi yoksaymasına neden oluyordu. (I747d2, b/279088460)- 64 MB'tan büyük izler için iz işlemci ayrıştırma sorunu düzeltildi. (Ief831, b/269949822)
- Android U'da
pm dump-profileskomutunun farklı çıkışı nedeniyle başarısız olan referans profil oluşturma sorunu düzeltildi. (Id1392, b/277645214) - Dizeleri doğru şekilde karşılaştırmak için GPU saat kilitleme komut dosyasını düzeltin (I53e54, b/213935715)
Sürüm 1.2.0-alpha13
5 Nisan 2023
androidx.benchmark:benchmark-*:1.2.0-alpha13 yayınlandı. 1.2.0-alpha13 sürümü bu kayıtları içerir.
API Değişiklikleri
- Yakında kullanıma sunulacak başlangıç profili özelliğini desteklemek için temel profiller oluşturulurken profil türü parametresi eklendi (Ie20d7, b/275093123).
- Perfetto izleme içeriğine göre tamamen özel metrikler tanımlamak için yeni deneysel
TraceMetricAPI 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 yayınlandı. 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ı. Buna hem mikro karşılaştırmalar hem de deneysel
PerfettoTraceAPI'leri dahildir. Bu sürümden önce, bazı cihazlardaUiAutomationbağlantıları güvenilir değildi. (I78e8c) - İzleme içeriğinin ayrıştırılmasını sağlamak için
PerfettoTraceProcessoriçin herkese açık deneysel API eklendi. Bu, Perfetto izleme verilerine dayalı tamamen özel metriklere yönelik bir adımdır. (I2659e, b/219851406)
Sürüm 1.2.0-alpha11
8 Mart 2023
androidx.benchmark:benchmark-*:1.2.0-alpha11 yayınlandı. 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 ayıklanırken
MacrobenchmarkRuleveBaselineProfileRuleuygulamasında yaşanan kilitlenme sorunları düzeltildi. (I0d8c8, b/270587281)
Sürüm 1.2.0-alpha10
22 Şubat 2023
androidx.benchmark:benchmark-*:1.2.0-alpha10 yayınlandı. 1.2.0-alpha10 sürümü bu kayıtları içerir.
Yeni özellikler
- Android 14 ve sonraki sürümlerde Macrobenchmark, yeni bir platform özelliği sayesinde derleme durumunu sıfırlamak için hedef uygulamaları yeniden yüklemez. 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 atlaması nedeniyle boş profille kilitlenmemesi için
DryRunModedüzeltildi. Bunun yerine, tek bir iterasyon çalıştırır ve bir şeylerin yakalanmasını sağlamak için profili ayıklar. (I2f05d, b/266403227) - Eski API düzeylerinde güç istatistiklerinin varlığı kontrol edilirken yaşanan
PowerMetrickilitlenme sorunu düzeltildi. (5faaf9, b/268253898)
Sürüm 1.2.0-alpha09
11 Ocak 2023
androidx.benchmark:benchmark-*:1.2.0-alpha09 yayınlandı. 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,androidx.benchmark.enabledRulesaraçlandırma bağımsız değişkenine iletildi. (I3d7fd, b/258671856) - Uygulama modüllerinde (ör.kendi kendine enstrümantasyon yapmayan test APK'ları)
PerfettoTraceyakalama sorunu düzeltildi (I12cfc). - Studio çıkışında sabit temel profil adb çekme bağımsız değişken sırası (I958d1, b/261781624)
- Arm emülatör API 33, artık bir makro karşılaştırma çalıştırmaya çalışırken doğru şekilde tanınır ve uyarıyı doğru şekilde yazdırır. (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 yayınlandı. 1.2.0-alpha08 sürümü bu kayıtları 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 {}vePerfettoTraceRuleeklendi. (I3ba16) BaselineProfileRuleartık paket önekleri listesi yerine filtre yüklemi kabul ediyor. Bu, testin filtreleme üzerinde tam kontrol sahibi olmasını sağlar. (I93240)- Temel profil N iterasyon boyunca kararlı olana kadar bekleyen deneysel bir API
BaselineProfileRule.collectStableBaselineProfileekleyin. (I923f3) BaselineProfileRulekullanarak referans profiller oluştururken çıkış dosyası adı öneki belirtme özelliği eklendi. (I7b59f, b/260318655)
Hata Düzeltmeleri
- Dosya çıkışı yazma güvenliğini iyileştirerek çıkış dosyalarının özellikle API 21 / 22'de sessizce yazılmamasını/eklenmemesini önler. (If8c44, b/227510293)
- Dosyayı doğru şekilde oluşturup yerleştirmek için
simpleperfizleme çıktısını düzeltin. Bu, bir dosyanın Gradle tarafından başarıyla alınamadığı sorunları da genel olarak düzeltir. (I12a1c, b/259424099) - profileinstaller çok eski olduğunda yazdırılan profileinstaller hata mesajı iyileştirildi. Bu mesaj artık desteklenmediğini söylemek yerine, API 31 ila 33'te temel profilleri ölçmek için profileinstaller sürümünü (1.2.1) güncellemenizi söyler. (Ia517f, b/253519888)
- Başarısız perfetto yakalama ikili program kurulumu ve iz yakalama hataları dahil olmak üzere, onerror mesajında gerekli API <=23 yazdırılmasına neden olan çeşitli kabuk komutu hataları düzeltildi (Ib6b87, b/258863685).
- Oluşturulan profil kurallarını, zaman içinde değişirken (profil kurallarını kaynak kontrolüne kaydederken) 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_cachesmesajı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 sürümündeki sorunu geçici olarak çözmek için uygulamanızın (karşılaştırmanızın değil) AndroidManifest.xml dosyasına aşağıdakileri ekleyin:
<!-- workaround bug in profileinstaller 1.3.0-alpha02, remove when updating to alpha03+ -->
<receiver
android:name="androidx.profileinstaller.ProfileInstallReceiver"
android:permission="android.permission.DUMP"
android:exported="true">
<intent-filter>
<action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
</intent-filter>
</receiver>
Sürüm 1.2.0-alpha07
9 Kasım 2022
androidx.benchmark:benchmark-*:1.2.0-alpha07 yayınlandı. 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
PowerMetricAPI'si eklendi. (Ife601, b/220183779) MacrobenchmarkScope.dropShaderCache(), gölgelendirici önbelleğini gerçekten bırakacak şekilde düzeltildi. Gölgelendiriciler artık her iterasyonda tutarlı bir şekilde temizlendiğinden, bu işlemStartupMode.COLDkarşılaştırmalarından yaklaşık 20 ms gürültüyü kaldırır. Daha önce, gölgelendirici önbelleğe alma işleminin ısınma sırasında gerçekleşme olasılığı daha yüksek olduğundan, ısınma iterasyonları kullanılarak yapılanPartialderlemesi yanlış şekilde hızlı sayılar bildiriyordu. Bu düzeltme için root erişimli bir cihaz veya hedef uygulamadaprofileinstaller:1.3.0-alpha02kullanılması gerekir.ProfileInstallerkitaplığının API değişiklikleri için lütfen ProfileInstaller 1.30-alpha02 sayfasına bakın. (Ia5171, b/231455742)TraceSectionMode("label", Mode.Sum)eklendi. Bu sayede, aynı etikete sahip birden fazla izleme bölümünde harcanan toplam süre ölçülebilir. Örneğin,TraceSectionMetric("inflate", Mode.Sum), bir makro karşılaştırma testinde enflasyon için harcanan toplam süreyle ilgiliinflateMsmetriğini raporlar. Ayrıca,TraceSectionMetric, hedef uygulamadaforceEnableAppTracingkullanımıyla daha düşük API düzeylerine kadarandroidx.tracing.Traceile birlikte çalıştığından API 29 şartı da kaldırıldı. (Id7b68, b/231455742)
Hata düzeltmeleri
- Tüm çıkış/hatalar doğrulanarak tüm dahili kabuk komutlarının güvenliği iyileştirildi. (I5984d, b/255402908, b/253094958)
- Temel profil
adb pullkomutunda 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çinden makro karşılaştırma yapılmasını engeller. İşlem sırasında macrobench, uygulamayı derleyemez/sonlandıramaz/soğuk başlatamaz veya kendi izinlerini kontrol edemez (I4279b).
measureRepeated()içinde,StartupMode.COLDkomutununsetupBlockişleminden sonra hedef işlemi sonlandırmamasına neden olan sorun düzeltildi. ArtıksetupBlockuygulamasında 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 yayınlandı. 1.2.0-alpha06 sürümü bu kayıtları içerir.
API değişiklikleri
BaselineProfileRuleAndroid 13'te (API 33) artık root erişimi gerektirmiyor ve deneysel bir özellik olmaktan çıktı. (Ie0a7d, b/250083467, b/253094958)- Bu değişiklik, root erişimi olmayan cihazlarda bir uygulamadaki profillerin diske yazılma şeklini de düzeltir ancak hedef uygulamanın profileinstaller bağımlılığının güncellenmesini gerektirir.
- Root edilmemiş bir cihazda
BaselineProfileRuleveyaCompilationMode.Partial(warmupIterations)kullanmak için hedef uygulamanızı daandroidx.profileinstaller.profileinstaller:1.3.0-alpha01kullanacak şekilde güncellemeniz gerekir. Bu sayede profil, derlenebilmesi/ayıklanabilmesi için diske doğru şekilde aktarılabilir.
Hata Düzeltmeleri
- API 33 ve sonraki sürümlerde
SampledProfilingkilitlenmesi düzeltildi. (I40743, b/236109374)
Sürüm 1.2.0-alpha05
5 Ekim 2022
androidx.benchmark:benchmark-*:1.2.0-alpha05 yayınlandı. 1.2.0-alpha05 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Karşılaştırma için yakalanan izler için Studio sistem izleme görüntüleyicisindeki kare dökümü düzeltildi (I3f3ae, b/239677443).
FrameTimingMetric,FrameOverrun'nin 29 yerine API 31 gerektirdiğini belirtecek şekilde düzeltildi (I716dd, b/220702554).BaselineProfileRuleiçinde iterasyonu ayarlayın ve hedef paket yüklü değilse 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 yayınlandı. 1.2.0-alpha04 sürümü bu kayıtları içerir.
Yeni özellikler
Daha hızlı yerel geliştirme ve uygulama otomasyonunu doğrulama (ör. ön gönderimde) için makro karşılaştırmaya
dryRunMode.enablearaçlandırma bağımsız değişkeni desteği ekleyin (mikroda zaten mevcut). Bu, yinelemeleri 1 olarak geçersiz kılar, derlemeyi atlar, tüm yapılandırma hatalarını engeller ve ölçüm .json dosyası çıkışını devre dışı bırakır. (Ib51b4, b/175149857)Gradle komut satırında:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=truebuild.gradle dosyasında:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true' } }
Hata düzeltmeleri
StartupTimingMetricdüzeltildi. Artık ölçülen etkinliklerinMacrobenchmarkScope.startActivityAndWait()üzerinden başlatılması gerekmiyor. Bu, metriğin örneğin bildirimler,Context.startActivity(), uygulama içi etkinliğe dayalı gezinme veya kabuk komutlarından başlatmaları algılayabileceği anlamına gelir. (Ia2de6, b/245414235)- Kare algılama katılığı azaltılarak emülatörlerde başlatma işleminin tamamlanmasını beklerken
startActivityAndWaituygulamasının zaman aşımına uğraması hatası düzeltildi. (Ibe2c6, b/244594339, b/228946895)
Sürüm 1.2.0-alpha03
7 Eylül 2022
androidx.benchmark:benchmark-*:1.2.0-alpha03 yayınlandı. 1.2.0-alpha03 sürümü bu kayıtları içerir.
Yeni Özellikler
BenchmarkState'yıBenchmarkRule/JUnit4'dan bağımsız olarak kullanmak için deneysel API'ler eklendi. (Id478f, b/228489614)
Hata düzeltmeleri
startActivityAndWaitiçin Leanback yedek reklamı eklendi. (01ed77, b/242899915)
Sürüm 1.2.0-alpha02
24 Ağustos 2022
androidx.benchmark:benchmark-*:1.2.0-alpha02 yayınlandı. 1.2.0-alpha02 sürümü bu kayıtları içerir.
API değişiklikleri
- Temel profil oluşturma işlemi hariç olmak üzere, cihaz root edilmiş olsa bile
MacrobenchmarkScope.killProcess()için varsayılan olarakam force stopkullanılır. Bu, isteğe bağlı bir boole bağımsız değişkeniyle geçersiz kılınabilir. (02cce9, b/241214097)
Hata Düzeltmeleri
- Sistem uygulamaları için temel profil oluşturma desteği. (I900b8, b/241214097)
- Root erişimi olmayan cihazlarda ODPM güç metriklerini kontrol etme desteği (a38c78, b/229623230)
Sürüm 1.2.0-alpha01
27 Temmuz 2022
androidx.benchmark:benchmark-*:1.2.0-alpha01 yayınlandı. 1.2.0-alpha01 sürümü şu taahhütleri 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)
Makro karşılaştırma çalıştırmalarının yalnızca karşılaştırmalara veya yalnızca temel profil oluşturmaya göre filtrelenmesini sağlamak için
androidx.benchmark.enabledRulesaraçlandırma bağımsız değişkeni eklendi. Yalnızca bir test türü çalıştırmak için "Macrobenchmark" veya "BaselineProfile" parametresini iletin (ör. emülatörde yalnızcaBaselineProfilesoluş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' } }Alternatif olarak Gradle komut satırından:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
API değişiklikleri
- Karşılaştırmalarda enerji ve güç görevlerini ölçmek için yeni
PowerMetriceklendi. (I9f39b, b/220183779) - Profil sıfırlama ve derlemeyi atlamak için yeni bir derleme modu
CompilationMode.Ignoreeklendi. (Ibbcf8, b/230453509) - Çıkış dosyasını paket adlarına göre filtrelemek için
BaselineProfileRule#collectBaselineProfileöğesine yeni bir parametre eklendi (If7338, b/220146561) - Geliştiricinin, güç tüketimini ölçmek için cihazın şarjını boşaltmasını sağlar. (I6a6cb)
MacrobenchmarkScopebölümünde gölgelendirici önbelleğini temizleme özelliği eklendi. (I32122)- Geliştiricinin, metrik türünün görüntülenmesini yapılandırmasına ve istenen alt sistem kategorilerini ayrıntılı olarak belirtmesine olanak tanır. (I810c9)
- Daha önce, desteklenmeyen bir cihazda çalıştırıldığında karşılaştırmada
UnsupportedOperationExceptionhatası 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ırmalarda her sistem kategorisindeki toplam gücü ve enerjiyi ölçmek için
TotalPowerMetricveTotalEnergyMetriceklendi. (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ındaki "Hiçbir metrik okunamıyor" istisnasını düzeltmek için etkinlik başlatma tamamlama algılamasını elden geçirin. (Ia517c)
Sürüm 1.1.1
Sürüm 1.1.1
9 Kasım 2022
androidx.benchmark:benchmark-*:1.1.1 yayınlandı. 1.1.1 sürümü bu 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: EACCESsorunu düzeltildi. Bu,1.2.0-alpha01sürümündeki bir düzeltmenin değişiklik aktarımıdır. (aosp/2072249)
Sürüm 1.1.0
Sürüm 1.1.0
15 Haziran 2022
androidx.benchmark:benchmark-*:1.1.0 yayınlandı. 1.1.0 sürümü bu commit'leri içerir.
- Bu sürüm,
androidx.benchmark:benchmark-*:1.1.0-rc03ile aynı.
1.0.0 sürümünden sonra 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 sayesinde izlemeleri yakalayabilir ve izleme bölümlerini ölçebilirsiniz.
Temel Profiller için destek
CompilationMode.PartialTemel Profiller'in etkinliğini ölçmek için kullanılır.- Belirli bir kritik kullanıcı yolculuğu için otomatik olarak temel profiller oluşturmak üzere
@BaselineProfileRuleseçeneğini tıklayın.
Mikro karşılaştırma çalıştırmaları sırasında ayırma metrikleri ve profillendirme desteği.
Sürüm 1.1.0-rc03
1 Haziran 2022
androidx.benchmark:benchmark-*:1.1.0-rc03 yayınlandı. 1.1.0-rc03 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
Her karşılaştırma iterasyonunda hedef paketi yeniden yüklemekten kaçının. ( aosp/2093027, b/231976084)
pressHome()için300msgecikmesini kaldırın. (aosp/2086030, b/231322975)Arka planda kullanılan kabuk komutlarını optimize ederek Macrobenchmark iterasyon hızını artırın. (aosp/2086023, b/231323582)
Makro karşılaştırmalarla temel profiller oluştururken yönetilen Gradle cihazları için destek (aosp/2062228, b/228926421)
Sürüm 1.1.0-rc02
11 Mayıs 2022
androidx.benchmark:benchmark-*:1.1.0-rc02 yayınlandı. 1.1.0-rc02 sürümü bu kayıtları içerir.
- Bu sürümün, doğru ölçümler sağlamak için uygulamaların artık her karşılaştırma arasında tamamen yeniden yüklendiği bir davranış değişikliği içerdiğini 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 root erişimi olmayan derlemelerde hiç sıfırlanmamasına neden olan sorun düzeltildi. Bu, birden fazla test çalıştırmanın
CompilationModeölçümler üzerinde çok az veya hiç etkisi olmadığı birçok durumu düzeltir. Bu sorunu çözmek için hedef uygulama artık her test yöntemini tamamen yeniden yükler. Bu işlem, her makro karşılaştırma arasında uygulama verilerini temizler. (I31c74, b/230665435)Bu durum, uygulamaların testlerden önce durum ayarlamasını engellediğinden, bu sorunu çözmek için derleme / yeniden yükleme işlemini atlamak artık mümkündür. Ö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ırma testinizin build.gradle dosyasında:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }Veya Gradle komut satırından:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=falseandroidx.benchmark.enabledRulesaraçlandırma bağımsız değişkeni eklenerek makro karşılaştırmalar ile temel profil oluşturma testleri arasında bir modülün paylaşılması mümkün hale getirildi. Yalnızca bir tür testi çalıştırmak için "Macrobenchmark" veya "BaselineProfile" değerini iletin. Örneğin, emülatördeBaselineProfilesoluştururken. (I756b7, b/230371561)Örneğin, makro karşılaştırmanızın build.gradle dosyasında:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }Alternatif olarak Gradle komut satırından:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
Sürüm 1.1.0-rc01
20 Nisan 2022
androidx.benchmark:benchmark-*:1.1.0-rc01 yayınlandı. 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
BaselineProfileRulekullanı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 yayınlandı. 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ındaki "Hiçbir metrik okunamıyor" istisnasını düzeltmek için etkinlik başlatma tamamlama algılamasını elden geçirin. (Ia517c)
CompilationMode.None()kullanıldığında makro karşılaştırmalar için başlangıç metriklerini düzeltme Bu değişiklikten önceCompilationMode.Partial(),Compilation.None()uygulamasından daha yavaş görünüyordu. (611ac9).
Sürüm 1.1.0-beta05
23 Mart 2022
androidx.benchmark:benchmark-*:1.1.0-beta05 yayınlandı. 1.1.0-beta05 sürümü bu commit'leri içerir.
Hata düzeltmeleri
CompilationMode.Nonekullanılırken profil yükleme işlemi atlandıktan sonra paketi sonlandırın. (aosp/1991373)StartupMode.COLDkullanılırken Macrobenchmark'ın başlangıç metriklerini toplayamamasına neden olan sorun düzeltildi. (aosp/2012227 b/218668335)
Sürüm 1.1.0-beta04
23 Şubat 2022
androidx.benchmark:benchmark-*:1.1.0-beta04 yayınlandı. 1.1.0-beta04 sürümü bu kayıtları içerir.
Hata düzeltmeleri
Android 10'da eksik metriklerin düzeltilmesi ve izlerde işlem adlarının doğru şekilde yakalanmamasından kaynaklanan sorunlar.
NoSuchElementException(Ib4c17, b/218668335)Q (API 29) ve sonraki sürümlerde termal kısıtlama algılama için
PowerManagerkullanın. Bu sayede, termal kısıtlama algılamada yanlış pozitiflerin sıklığı önemli ölçüde azalır (90 saniyelik soğuma süresinden sonra karşılaştırma yeniden denenir) ve kullanıcı derlemelerinde karşılaştırmalar önemli ölçüde hızlanır. Ayrıca, saatler kilitli olduğunda bile (cihazın fiziksel ortamı için çok yüksek bir değere kilitlenmişlerse) kısıtlama algılama özelliği sağlar. (I9c027, b/217497678, b/131755853)İncelemeyi basitleştirmek için simpleperf örneklenmiş profil oluşturmayı yalnızca
measureRepeatediş parçacığıyla 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 Baseline Profile kurallarını filtreleyin. aosp/1980331 b/216508418
Compilation.None()kullanılırken profil yükleme işlemini atla. Ayrıca, uygulamaandroidx.profileinstallerve Android Gradle eklentisinin eski bir sürümünü kullanıyorsa uyarıları bildirin. aosp/1977029
1.1.0-beta03 sürümü
9 Şubat 2022
androidx.benchmark:benchmark-*:1.1.0-beta03 yayınlandı. 1.1.0-beta03 sürümü bu kayıtları içerir.
API değişiklikleri
- Ses yetersizliklerinin algılanmasına olanak tanımak için deneysel işaret altında makro karşılaştırma kitaplığına
AudioUnderrunMetriceklendi (Ib5972). BaselineProfileRule,profileBlockile aynı şekilde çalıştığı için artıksetupbloğunu 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 sonraki çalıştırmalarda mikro karşılaştırma profili oluşturucu izlerinin güncellenememesi sorunu düzeltildi (I5ae4d, b/214917025).
- API 23'te derleme kabuğu komutlarını engelleme (Ice380)
- Bunların zaman damgası değil süre olduğunu netleştirmek ve ön ekleri eşleştirmek için
FrameCpuTime->FrameDurationCpu,FrameUiTime->FrameDurationUiolarak yeniden adlandırıldı. (I0eba3, b/216337830)
Sürüm 1.1.0-beta02
26 Ocak 2022
androidx.benchmark:benchmark-*:1.1.0-beta02 yayınlandı. 1.1.0-beta02 sürümü bu kayıtları içerir.
Hata düzeltmeleri
- Mikro karşılaştırma yığını örnekleme / yöntem 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ı almak için logcat ve Studio çıkışında
adb pullkomutunu yazdırıyor. (f08811)
Sürüm 1.1.0-beta01
12 Ocak 2022
androidx.benchmark:benchmark-*:1.1.0-beta01 yayınlandı. 1.1.0-beta01 sürümü şu commit'leri içerir.
Hata düzeltmeleri
- Profil oluşturucu bağımsız değişkeninin etkinleştirilmesinin yoksayılmasıyla ilgili sorun düzeltildi. (I37373, b/210619998)
- Desteği sonlandırılan
CompliationModeskaldırıldı (I98186, b/213467659) CompilationMode.Partialişlevinin temel profil argümanı, 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 yayınlandı. 1.1.0-alpha13 sürümü şu commit'leri içerir.
API değişiklikleri
- Android Q'da (API 29+) mikro karşılaştırma çıkışına düşük ek yük içeren Sistem İzleme'yi ekleyin. Sonuçların etkilenmemesi için şu anda özel izlemenin (
android.os.Traceveyaandroidx.tracingJetpack API'leri aracılığıyla) yakalanmadığını unutmayın. Bu izleme, özellikle karşılaştırma ölçütü dışındaki kaynaklardan kaynaklanan kararsızlığı teşhis etmede yararlı olacaktır. (I298be, b/205636583, b/145598917) CompilationModesüç sınıfa ayrılır: Tam, Yok, Kısmi. Daha önce, derleme bağımsız değişkenleri (artık uygulama ayrıntıları olarak değerlendirilir) ve özelliklere göre tutarsız bir şekilde adlandırılıyordu. Bu sayede ödünler, olası kombinasyonlar ve platform sürümlerindeki davranışlar daha net bir şekilde anlaşılır. (I3d7bf, b/207132597)- Kurulum ve ölçüm artık her zaman çiftler halinde ve sırayla gösterilir. Artık paket adını ve iterasyonu sorgulayabilirsiniz (iterasyon, belirli ısınma senaryolarında
nullolabilir). (Id3b68, b/208357448, b/208369635)
Hata düzeltmeleri
CompilationMode.Speedöğesi yanlışlıklaNoneolarak ele alınıyordu (I01137)
Sürüm 1.1.0-alpha12
17 Kasım 2021
androidx.benchmark:benchmark-*:1.1.0-alpha12 yayınlandı. 1.1.0-alpha12 sürümü ş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 iterasyonda cihazı uyandırır. Kilit ekranının devre dışı bırakılması gerekir. (Ibfa28, b/180963442)
- Emülatörlerde ve root erişimi olmayan cihazlarda StackSampling profil oluşturma modundaki birden fazla kilitlenme düzeltildi (Icdbda, b/202719335)
- Her yinelemenin sonunda 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ı azaltma ve izlemeden kaynaklanan bellek ek yükünü azaltma (Id2544, b/199324831, b/204448861)
- Sıkıştırılmış sched depolama biçimine geçerek izleme boyutunu yaklaşık% 40 azaltın. (Id5fb6, b/199324831)
- Başlangıç metriklerinin, her zaman oluşturma iş parçacığının sonunda bitecek şekilde güncellenmiş uygulamaları. Bu sayede, platform sürümleri arasında daha tutarlı sonuçlar elde edilir ve uygulama ölçümleri daha doğru şekilde eşlenir. (Ic6b55)
Sürüm 1.1.0-alpha11
3 Kasım 2021
androidx.benchmark:benchmark-*:1.1.0-alpha11 yayınlandı. 1.1.0-alpha11 sürümü şu commit'leri içerir.
API Değişiklikleri
- Macrobenchmark'ın
minSdkVersiondeğeri artık23. (If2655) - Uygulamanın kritik kullanıcı yolculuğu için temel profiller oluşturabilen yeni bir deneysel
BaselineProfileRuleekler. Ayrıntılı belgeler paylaşılacaktır. (Ibbefa, b/203692160) - Yöntemin tamamlanması/çözümlenmesinde belirsizliğe neden olduğundan, Java arayanlar için eklenen measureRepeated arayüz varyantı kaldırıldı. Java arayanların, measureRepeated'dan Unit.Instance'ı tekrar döndürmesi gerekir. Bu durum rahatsız ediciyse lütfen hata kaydı oluşturun. Bu konuyu gelecekteki bir sürümde tekrar ele alabiliriz. (Ifb23e, b/204331495)
Sürüm 1.1.0-alpha10
27 Ekim 2021
androidx.benchmark:benchmark-*:1.1.0-alpha10 yayınlandı. 1.1.0-alpha10 sürümü bu commit'leri içerir.
API Değişiklikleri
- StartupTimingMetric'i API 23'e kadar çalışacak şekilde geriye dönük olarak taşıma 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
- İzlerin yeterince erken başlamaması ve metrik verilerinin eksik olması sorunu düzeltildi. Bu sayede, kitaplığın kendisinden kaynaklanan "Karşılaştırma sırasında metrikler okunamadı" istisnalarının düzeltilmesi bekleniyor. (I6dfcb, b/193827052, b/200302931)
- FrameNegativeSlack, anlamını netleştirmek için FrameOverrun olarak yeniden adlandırıldı. Bu, karenin zaman bütçesini ne kadar aştığını ifade eder. (I6c2aa, b/203008701)
Sürüm 1.1.0-alpha09
13 Ekim 2021
androidx.benchmark:benchmark-*:1.1.0-alpha09 yayınlandı. 1.1.0-alpha09 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- API 31/S+ üzerinde root olmadan çekirdek sayfa önbelleğini bırakma desteği, StartupMode.COLD başlatmalarının doğruluğunu artırır. (Iecfdb, b/200160030)
Sürüm 1.1.0-alpha08
29 Eylül 2021
androidx.benchmark:benchmark-*:1.1.0-alpha08 yayınlandı. 1.1.0-alpha08 sürümü şu commit'leri içerir.
API Değişiklikleri
- Kaydırma makro karşılaştırmalarının API 23'e kadar çalıştırılmasına olanak tanındı (If39c2, b/183129298).
- Kullanıcı arayüzüne ve JSON çıkışına, iterasyon başına birden fazla örneğin yüzdelik dilimlerine odaklanan yeni bir örneklenmiş metrik türü ekleyin. (I56247, b/199940612)
- Karşılaştırma kitaplıklarında kayan nokta metriklerine geçiş yapıldı (Studio kullanıcı arayüzünde kısaltıldı). (I69249, b/197008210)
Sürüm 1.1.0-alpha07
1 Eylül 2021
androidx.benchmark:benchmark-*:1.1.0-alpha07 yayınlandı. 1.1.0-alpha07 sürümü bu kayıtları 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 minimum API, RequiredApi() aracılığıyla iletilmeye devam ediyor ve şu anda 29 (I440d6, b/183129298)
Hata düzeltmeleri
- Temel profilleri kullanan uygulamaların
CompilationMode.BaselineProfilekullanarak MacroBenchmark'ları çalıştırmasını kolaylaştırmak içinProfileInstallerdüzeltmeleri. (I42657, b/196074999) NOT:androidx.profileinstaller:profileinstaller:1.1.0-alpha04veya daha yeni bir sürüme de güncellenmesi gerekir. StartupMode.COLDveCompilationMode.Nonekarşılaştırmalar artık daha kararlı. (I770cd, b/196074999)
Sürüm 1.1.0-alpha06
18 Ağustos 2021
androidx.benchmark:benchmark-*:1.1.0-alpha06 yayınlandı. 1.1.0-alpha06 sürümü bu kayıtları içerir.
API Değişiklikleri
- Yerel olarak test/profil oluşturma sırasında iterasyon sayısının manuel olarak geçersiz kılınmasına izin vermek için
androidx.benchmark.iterationsenstrümantasyon bağımsız değişkeni eklendi. (6188be, b/194137879)
Hata düzeltmeleri
- API 29 ve sonraki sürümlerde varsayılan örnekleme profili oluşturucu olarak Simpleperf'e geçildi. (Ic4b34, b/158303822)
Bilinen Sorunlar
CompilationMode.BaselineProfilehenüz geliştirme aşamasında olan bir hizmettir. Şimdilik bir profilin ne kadar iyi olduğunu belirlemek için bu özelliği kullanmaktan kaçının.
Sürüm 1.1.0-alpha05
4 Ağustos 2021
androidx.benchmark:benchmark-*:1.1.0-alpha05 yayınlandı. 1.1.0-alpha05 sürümü bu kayıtları içerir.
1.1.0-alpha04, aralıklı olarak yaşanan kilitlenme nedeniyle yayınlanmadan önce iptal edildi. b/193827052
API Değişiklikleri
- startActivityAndWait, başlatmayı
am startüzerinden çağıracak şekilde değiştirildi. Bu, her ölçüm iterasyonunun süresini yaklaşık 5 saniye azaltır ancak intent parcelable'lar artık desteklenmez. (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'da çalışması için düzeltmeler yapıldı (Ib60cc, b/193260119).
CompilationMode.BaselineProfiledaha iyi desteklemek için hedef uygulamayı zorla durdurulmuş durumdan çıkarmak üzereEmptyActivitykullanın. (Id7cac, b/192084204)- Platform standardına uygun olması için izleme dosyası uzantısı
.perfetto-traceolarak 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 döndürür. 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 durdurulurken yoklama sıklığı önemli ölçüde artırıldı.Bu sayede, başlangıç karşılaştırması çalışma süresi %30'dan fazla azaltılabilir (Idfbc1, b/193723768).
Sürüm 1.1.0-alpha03
16 Haziran 2021
androidx.benchmark:benchmark-*:1.1.0-alpha03 yayınlandı. 1.1.0-alpha03 sürümü şu commit'leri içerir.
Yeni Özellikler
- Jetpack ProfileInstaller kitaplığı kullanılarak yüklenen profilleri desteklemek için yeni bir
CompilationMode.BaselineProfileeklendi. (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 kullanacak şekilde güncellendi.
Örnek:
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
Sürüm 1.1.0-alpha02
18 Mayıs 2021
Benchmark 1.1.0-alpha02 sürümü, karşılaştırma için önemli bir bileşen olan Macrobenchmark'ı sunar. Benchmark, CPU döngülerini ölçmenize olanak tanır. Macrobenchmark ise 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 yayınlandı. 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 sorununu geçici olarak çözme (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 alma desteği (6be1c1, b/159804788)
- Basitleştirilmiş dosya çıkışı: Varsayılan olarak etkindir ve
requestLegacyExternalStorage=truegerektirmeyen bir dizindedir (8b5a4d, b/172376362). - Kitaplığın, JIT iş parçacığının bulunmadığı platform sürümlerinde JIT iş parçacığının bulunamadığına dair logcat uyarıları yazdırması düzeltildi. (I9cc63, b/161847393)
- Okuma cihazının maksimum frekansı için düzeltme. (I55c7a)
Sürüm 1.1.0-alpha01
10 Haziran 2020
androidx.benchmark:benchmark-common:1.1.0-alpha01, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01 ve androidx.benchmark:benchmark-junit4:1.1.0-alpha01 yayınlandı. 1.1.0-alpha01 sürümü bu commit'leri içerir.
1.1 sürümünün yeni özellikleri
- 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ı yakalar. Tahsisler, platformun eski sürümlerinde performans sorunlarına neden olabilir (O'da 140 ns, M'de 8 ns oldu. Nexus5X'te kilitli saatlerle ölçülmüştür). Bu metrik, Android Studio konsol çıkışında ve
- Profil oluşturma desteği: Artık kodunuzun neden yavaş çalıştığını incelemek için karşılaştırma çalış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 bir kurulum için varsayılan değerler sunuyor:
testBuildType, yerleşik kod kapsamına sahip bağımlılıkların kullanılmasını önlemek için varsayılan olarak yayınlanacak şekilde ayarlanmıştır. Yayın buildType'ı da varsayılan buildType olarak yapılandırılır. Bu sayede Android Studio, bir projeyi ilk kez açarken doğru derleme değişkenini otomatik olarak seçebilir. (b/138808399)signingConfig.debug, varsayılan imzalama yapılandırması olarak kullanılıyor (b/153583269)
** Hata Düzeltmeleri **
- Her karşılaştırma için ilk ölçümün yapay olarak diğerlerinden daha yüksek olduğu ısınma geçişi ek yükü önemli ölçüde azaltıldı. 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ılırken her karşılaştırma için yazdırılan
InstrumentationResultParserhatası 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 üzerinden çalıştırarak veya sonuçlar için JSON çıkış dosyasını ayrıştırarak çözebilirsiniz.
- Karşılaştırma raporları, applicationId'si "android" veya "download" (büyük/küçük harfe duyarlı değil) ile biten 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
Karşılaştırma Sürümü 1.0.0
20 Kasım 2019
androidx.benchmark:benchmark-common:1.0.0, androidx.benchmark:benchmark-gradle-plugin:1.0.0 ve androidx.benchmark:benchmark-junit4:1.0.0, 1.0.0-rc01 sürümünden itibaren herhangi bir değişiklik yapılmadan yayınlandı. 1.0.0 sürümü bu commit'leri içerir.
1.0.0 sürümünün temel özellikleri
Benchmark kitaplığı, uygulama kodunun performans karşılaştırmalarını yazmanıza ve hızlıca sonuç 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ırmaları doğrudan Android Studio'da veya sürekli entegrasyonda çalıştırın.
Başlıca özellikler:
- Saat stabilizasyonu
- Otomatik ileti dizisi önceliklendirme
- RecyclerView Örneği'nde olduğu gibi kullanıcı arayüzü performans testi desteği
- JIT kullanan ısınma ve döngü
- Sonradan işleme için JSON karşılaştırma çıkışı
Sürüm 1.0.0-rc01
23 Ekim 2019
androidx.benchmark:benchmark-common:1.0.0-rc01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01 ve androidx.benchmark:benchmark-junit4:1.0.0-rc01 yayınlandı. 1.0.0-rc01 sürümü şu commit'leri içerir.
Yeni özellikler
- Karşılaştırmalara systrace izleme eklendi.
Hata düzeltmeleri
- Önceliğin düşürülmesi nedeniyle JIT'nin ısınmadan önce tamamlanmadığı 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ırmadan diğerine bellek baskısı sızıntısını azaltmak için her ısınmadan önce atık toplama işlemini çalıştırın (b/140895105).
Hata düzeltmeleri
androidx.annotation:android-experimental-lintbağı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.- AGP'nin veri kopyalama işlemini ne zaman gerçekleştireceğini bilmek için Android Gradle Eklentisi 3.6'da çıkış için
additionalTestOutputDiraraç bağımsız değişkeninin kullanımını artık doğru şekilde algılar. -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ı için eski paketin yanlış kullanımına yönelik bir kontrol eklendi. Bu kontrol artık daha faydalı bir hata mesajı veriyor.
API değişiklikleri
- Deneysel ek açıklama
ExperimentalAnnotationReportartık doğru şekilde 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.reportDataAPI artık deneysel olarak işaretleniyor
Hata düzeltmeleri
cutveyaexprkabuk yardımcı programlarının eksik olduğu cihazlarda başarısız olan saat kilitleme komut dosyası düzeltildi../gradlew lockClocksgöreviyle ilgili bir sorun düzeltildi. Bu sorun,-cişaretini desteklemeyen su yardımcı programının eski bir sürümüyle rootlanmış cihazlarda takılmaya neden oluyordu.
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 dokümanlar eklendi. Bu dokümanlar, farklı derleme sistemleriyle (ör. Bazel veya Buck) kullanım ve CI'da çalıştırma ile ilgili bilgileri içeriyor. 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
AndroidBenchmarkRunnerdeğerini ayarlar (b/138374050). - Karşılaştırmalar çalıştırılırken ve AGP 3.6+ kullanılırken yeni AGP tabanlı veri kopyalama desteği eklendi.
- Artık test kapsamını otomatik olarak devre dışı bırakır ve varsayılan olarak
- JSON biçimi eklemeleri
- Toplam karşılaştırma testi çalışma süresini göster (b/133147694)
- Ad dizesi kullanan
@Parameterizedkarşı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)
- Her karşılaştırma döngüsünü yalnızca bir kez çalıştırarak ölçüm yapmadan hataları/kilitlenmeleri kontrol etmek için "deneme" modu eklendi. Bu, örneğin, ön gönderme sırasında karşılaştırma testlerini hızlıca çalıştırarak bozulmadıklarını kontrol etmek için yararlı 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:AndroidBenchmarkRunnerveBenchmarkRule. Bu sınıfların her ikisi deandroidx.benchmark.junit4paketine 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 testin kilitlenmesine neden oluyor (b/137653596)
- Bu, özellikle CI'da doğru ölçümleri daha fazla teşvik etmek için yapılır.
- Bu hatalar, bir araç bağımsız değişkeniyle tekrar uyarılara 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.
- Ekranlar, kapalıyken başarısız olmak yerine karşılaştırma çalıştırmaları sırasında otomatik olarak açılır.
Harici katkılar
- JSON çıkışında iyileştirmeler yapılmasına ve ekranın kapalı kalması sorunlarının düzeltilmesine 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, her karşılaştırma için termal kısıtlama nedeniyle uyku süresini gösterme
Hata düzeltmeleri
- Gradle eklentisinin artık Android eklentilerinden ve Android bloğundan sonra uygulanması gerekmez.
- Kapsamlı depolama alanı kullanan Android 10 cihazlarda karşılaştırma raporları için destek eklendi.
Sürüm 1.0.0-alpha02
6 Haziran 2019
androidx.benchmark:1.0.0-alpha02 ve androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02 yayınlandı. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
JSON şemasını API olarak ele aldığımızı unutmayın. Diğer API'lerle aynı kararlılık kısıtlamalarını uygulamayı planlıyoruz: Beta sürümünde bir kez kararlı (çok nadir istisnalar dışında) ve son sürümde sabit, yalnızca küçük sürümlerde eklemeler ve ana sürümlerde değişiklikler/kaldırmalar.
API değişiklikleri
JSON şeması yenilendi. JSON şemasında yapılacak diğer değişiklikler muhtemelen eklemelerle sınırlı olacaktır:
- 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.
- Zaman metriği adlarında artık "ns" ifadesi yer alıyor (b/132714527)
- Raporlanan metrik başına ek istatistikler (maksimum, ortanca, minimum) eklendi ve basitleştirilmiş "nanos" özet istatistiği kaldırıldı (b/132713851).
Kaldırılan XML çıkışı (b/132714414)
BenchmarkState.reportDataAPI'sinden termal kısma algılama kaldırıldı (b/132887006)
Hata düzeltmeleri
./gradlew lockClocks'nin bazı yeni OS cihazlarında sabit kalmaması sorunu düzeltildi (b/133424037)- Emülatör için kısıtlama algılama devre dışı bırakıldı (b/132880807)
Sürüm 1.0.0-alpha01
7 Mayıs 2019
androidx.benchmark:benchmark:1.0.0-alpha01 yayınlandı. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.