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