Karşılaştırma

Android Studio'da kodunuzun performansını doğru şekilde ölçün.
Son Güncelleme Kararlı Sürüm Yayın Adayı Beta Sürümü Alfa Sürümü
21 Ağustos 2024 1.3.0 - - -

Bağımlılıkları bildirme

Karşılaştırma'ya bağımlılık eklemek için Google Maven deposunu akılda kalıcı bir yolunu sunar. Okunanlar Daha fazlası için Google'ın Maven deposu ekleyebilirsiniz.

Makrobenchmark

Macrobenchmark'ı kullanmak için projenizde yer alan aşağıdaki bağımlılıkları build.gradle dosyanıza sizin macrobenchmark modülü:

Eski

dependencies {
  androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.3.0"
}

Kotlin

dependencies {
  androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.3.0")
}

Mikro Karşılaştırma

Mikrobenchmark'ı kullanmak için projenizde yer alan aşağıdaki bağımlılıkları build.gradle dosyanıza sizin microbenchmark modülü:

Eski

dependencies {
    androidTestImplementation "androidx.benchmark:benchmark-junit4:1.3.0"
}

android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner"
    }
}

Kotlin

dependencies {
    androidTestImplementation("androidx.benchmark:benchmark-junit4:1.3.0")
}

android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner"
    }
}

Microbenchmark kitaplığı, microbenchmark modülünizle birlikte kullanabileceğiniz bir Gradle eklentisi de sunar. Bu eklenti, modül için derleme yapılandırması varsayılanlarını ayarlar, karşılaştırma çıkış kopyasını ana makineye kopyalama, ve ./gradlew lockClocks görev.

Eklentiyi kullanmak için üst düzey sitenizin "eklentiler" bloğuna aşağıdaki satırı ekleyin build.gradle dosyası:

Eski

plugins {
  id 'androidx.benchmark' version '1.3.0' apply false
}

Kotlin

plugins {
  id("androidx.benchmark") version "1.3.0" apply false
}

Ardından, eklentiyi karşılaştırma modülünüzün build.gradle dosyasına uygulayın.

Eski

plugins {
  id 'androidx.benchmark'
}

Kotlin

plugins {
    id("androidx.benchmark")
}

Geri bildirim

Geri bildiriminiz Jetpack'i iyileştirmemize yardımcı olacaktır. Yeni sorunlarla karşılaşırsanız veya fikir edinebilirsiniz. Daha fazla bilgi için lütfen mevcut sorunlar tıklayın. Oyunuzu mevcut bir soruna eklemek için yıldız düğmesini tıklayın.

Yeni sayı oluştur

Sorun İzleyici dokümanlarına bakın konulu videomuzu izleyin.

Sürüm 1.3

Sürüm 1.3.0

21 Ağustos 2024

androidx.benchmark:benchmark-*:1.3.0 yayınlandı. Sürüm 1.3.0 bu taahhütleri içerir.

1.2.0'dan bu yana mikrobenchmark değişiklikleri

  • Çoğu cihazda çalıştırıldığında, mikro karşılaştırmalarda yöntem izleme varsayılan olarak açıktır
    • Yöntem izleme, ölçümlerden sonra ayrı bir aşama olarak çalışır
    • Bazı platformlar ve ART sürümlerinde yöntem izleme, daha sonraki ölçüm aşamalarını etkiler. Bu sürümlerde, yöntem izleme varsayılan olarak kapalıdır ve Studio çıkışına bir uyarı yazdırılır.
  • Ana iş parçacığı karşılaştırmaları ve ANR'ler
    • Çok saniye boyunca çalıştırıldığında ANR'leri önlemek amacıyla kullanıcı arayüzü ileti dizisi karşılaştırmaları (ör. Oluşturma/Görüntüleme kullanıcı arayüzleriyle etkileşimde bulunanlar) için measureRepeatedOnMainThread eklendi.
    • ANR'den kaçınma son tarihini aşması bekleniyorsa yöntem izleri atlanır. Bu davranışı devre dışı bırakmak için androidx.benchmark.profiling.skipWhenDurationRisksAnr politikasını false (yanlış) olarak ayarlayın (CI çalıştırmaları için önerilmez).
  • Küçültme
    • Küçültme etkinken mikro karşılaştırmayı iyileştirmek için yerleştirilmiş uzman koruma kuralları
    • Kitaplık modülündeki küçültme/R8, AGP 8.3 gerektirir ve build.gradle üzerinde android.buildTypes.release.androidTest.enableMinification üzerinden etkinleştirilebilir
    • Geçersiz kodların kaldırılmasını önlemek için deneysel BlackHole.consume() API'si eklendi (If6812, b/286091643)
  • Metrikler
    • Deneysel CPU etkinliği sayacı özelliği (platformun çoğu sürümünde root erişimi gerektiren perf_event_open metrikleri), InstrumentationArgument androidx.benchmark.cpuEventCounter.enable (true olarak ayarlanabilir) ve androidx.benchmark.cpuEventCounter.events üzerinden erişim (ör. alıcı (Instructions,CpuCycles). Bu, bazı kullanıcı hata ayıklama emülatörlerinde desteklenmelidir ancak

1.2.0'dan bu yana MACRObenchmark değişiklikleri

  • Makro karşılaştırmalar için yöntem izleme revizyonu.
    • Artık yöntem izleri measureBlock süresini kapsamaktadır ve süreç birden fazla kez başlarsa birden fazla oturumu yakalayabilir.
    • Daha önce, yöntem izleme yalnızca StartupMode.COLD karşılaştırma için çalışıyordu ve measureBlocks için hedef süreci yeniden başlatmayan hiçbir şey kaydetmedi
    • Yavaş cihazlarda bile yöntem izlerinin tam olarak yakalanması ve geçerli olması için makro karşılaştırmada yöntem izlerinin boşaltılması düzeltildi. (I6349a, b/329904950)
  • CompilationMode.Partial(warmup=N) ölçümlerinin daha doğru olması için, işlem sonlandırıldığında her warmUp yinelemesi sırasında ART profilini doğru şekilde dökümü alın. (I17923)
  • Gölgelendirici yayın hatası mesajı
    • Gölgelendirici yayın hatası mesajına hata ayıklama önerileri eklendi
    • ProfileInstaller 1.3 olmadan uygulamalar karşılaştırılırken geçici çözüm kilitlenmelerine yönelik olarak gölgelendirici bırakma davranışını geçersiz kılmak için iki araç bağımsız değişkeni ekleyin:
      • androidx.benchmark.dropShaders.enable=true/false : Özellikle profil yükleyici 1.3 sürümünü kullanmayan uygulamalar karşılaştırılırken (StartupMode.Cold lansmanlarında yapılanlar da dahil olmak üzere) tüm gölgelendirici atlamalarını atlamak için kullanılabilir.
      • androidx.benchmark.dropShaders.throwOnFailure=true/false : Gölgelendiricileri bırakmaya çalışırken karşılaşılan hataları telafi etmek için kullanılabilir (örneğin, Profileloader 1.3 (I4f573) olmadan uygulamaları karşılaştırırken)
  • Tamamen özelleştirilmiş Perfetto iz kaydı için özel bir PerfettoConfig alan deneysel MacrobenchmarkRule#measureRepeated varyantı eklendi. Yanlış yapılandırılmış yapılandırmaların, yerleşik Metrik sınıflarının başarısız olmasına yol açabileceğini unutmayın. (Idfd3d, b/309841164, b/304038384)
  • Paraziti azaltmak için Macrobenchmark çalıştırmadan önce arka plan dexopt işlerini iptal edin. (I989ed)
  • Macrobenchmark artık hedef uygulamanın bir ART profilini temizlemesi için 1 saniye (daha önce 500 ms bekliyordu) bekliyor. (I85a50, b/316082056)
  • TraceSectionMetric revizyonu
    • Not: Aşağıdaki TraceSectionMetric değişiklikleri CI kullanımındaki çıkışları etkileyebilir, süreksizliklere neden olabilir veya ayrıştırmayı bozabilir
    • Bu metriğin çoğu tekrarlanan etkinlikler için olduğundan ve öncelikle bu gibi durumlarda verileri siler. Bu nedenle, toplam artık varsayılan değerdir
    • Daha fazla kullanılabilir mod ile daha özelleştirilebilir olacak şekilde değiştirildi
    • Mod adları artık metrik çıkış adına yerleştirilmiş (Studio ve JSON'de)
    • Artık Trace.{begin|end}AsyncSection kullanılarak oluşturulan dilimleri destekliyor.
  • Metrikler
    • Güç - PowerMetric.deviceSupportsHighPrecisionTracking, PowerMetric.deviceBatteryHasMinimumCharge() ve PowerMetric.deviceSupportsPowerEnergy() özellikleri eklendi
    • Metric.getResult, iade türüyle eşleşecek şekilde getMeasurements olarak yeniden adlandırıldı
    • Tüm başlatma algılama hatalarına log.w / istisna etiketleri eklendi. Bu, mevcut davranışı değiştirmez (dolayısıyla bazı hatalar ortaya çıkar, bazılarıysa başlatmayı sessiz bir şekilde algılayamaz). Yalnızca daha anlaşılır hale gelir. Genellikle Log.w() başlangıç metriklerini raporlayıp raporlamayanlar, çerçeve dışı etkinliklerin eksik olduğu etkinliklerdir. Başlatma algılandığında, kare zamanlama bilgileri (UI/RT dilimlerinden) hariç olmak üzere istisnalar dikkate alınır. (Id240f, b/329145809)
    • Üretilen kare sayısının değişmesi (yeni animasyonlar eklendi, geçersiz kılma sorunları düzeltildi) nedeniyle ölçümlerin değiştiği senaryoların keşfedilmesine yardımcı olmak için FrameTimingMetric ürününe frameCount ölçümü eklendi. (I1e5aa)
    • Dokümanlarda sunulduğunda izleme için tercih edilen metriğin frameOverrunMs olduğu ve bunun nedeni netleştirildi. (I18749, b/329478323)
    • İzin başındaki ve sonundaki sonlandırılmayan karelerin birlikte eşlenmesine neden olan sorun düzeltildi. Bu durum hatalı şekilde tek bir çok uzun kare olarak rapor ediliyor. (I39353, b/322232828)
    • Çerçeveler oluşturulmadığında FrameTimingMetric hatasını iyileştirin ve sorunun teşhis edilmesine yardımcı olmak için metrik ayrıştırma işlemi başarısız olduğunda her zaman iz bağlantısını çıkarın. (I956b9)
    • FrameTimingMetric ürününün, özellikle belirli OEM cihazlarda çerçeve kimliğinin ayrıştırılamamasıyla ilgili kilitlenme düzeltildi. (Ia24bc, b/303823815, b/306235276)
    • FrameMetrics hizmetindeki kontrollerin güvenlik düzeyi gevşetildi ve hata mesajlarına daha fazla ayrıntı eklendi. (Iadede)

1.2.0'dan bu yana temel profil yakalama / gradle eklentisi değişiklikleri

  • Önerilen maksimum AGP sürümü 9.0.0-alpha01'e yükseltildi.
  • mergeArtProfile ve mergeStartupProfile görevlerinin her zaman temel profil oluşturmak için beklediğinden emin olun. (I623d6, b/343086054)
  • Başarıyla bir temel profil oluşturmak, nelerin değiştiğine dair bir özet sunar (I824c8, b/269484510)
  • Uyarıları devre dışı bırakmak için DSL eklendi (Ic4deb, b/331237001)
  • automaticGenerationDuringBuild kapalıyken karşılaştırmaların oluşturulan referans profilleri kullanmasını sağlamak için sorunları giderin (Ic144f, b/333024280)
  • nonMinified veya karşılaştırma derleme türünü özelleştirirken referans profil oluşturma ve karşılaştırmayı etkinleştirmek için BaselineProfile gradle eklentisi özelliği geçersiz kılma sorunlarını düzeltin. (Ib8f05, b/324837887)
  • AGP 8.3.0-alfa15 sürümünden önce AAR'ye kitaplık referans profillerinin dahil edilmesiyle ilgili düzeltme uygulandı. (I1d2af, b/313992099)
  • Oluşturma görevinin sonundaki referans değer ve başlangıç profili çıkış URL'si düzeltildi. (I802e5, b/313976958)

1.2.0'dan bu yana diğer önemli değişiklikler

  • İz yakalama
    • Perfetto başlatılırken hatadan günlüğe kaydedilen uyarıya azaltılmış ExitCODE 2 hatası
    • Karşılaştırmalarda AIDL izlemeyi varsayılan olarak etkinleştir(API 28 gerekir) (Ia0af2, b/341852305)
    • Karşılaştırmalarda porter etiket izlemeyi varsayılan olarak etkinleştirin. Bu, örneğin uyanık kalma kilidi izleme noktalarını yakalar. (Icfe44, b/286551983)
    • Yavaş cihazlarda izlemeyi başlatırken kilitlenmeleri önlemek için iz yakalama başlangıç zaman aşımı artırıldı (I98841, b/329145808)
    • JSON, textproto ve proto ikili program (kodu çözmez) varyantlarına sahip, herkese açık API PerfettoTraceProcessor.Session.queryMetrics API'leri eklendi. Bunlar, TraceProcessor ürününde yerleşik olarak bulunan metrikleri sorgulamanıza olanak tanır (I54d7f, b/304038382)
    • İz başlangıcında eksik veri riskini azaltmak için Perfetto iz kaydında engellemeyi başlatmayı etkinleştirin. Yalnızca API 33 ve sonraki sürümlerde desteklenir. (Ie6e41, b/310760059)
  • JSON çıkışı
    • Karşılaştırma bağlamında JSON çıkışına ek bilgiler eklendi:
      • context.artMainlineVersion - Resim ana hat modülünün tam sayı sürümü (cihazda mevcutsa -1)
      • context.build.id - Eşittir android.os.Build.ID
      • context.build.version.codename - Eşittir: android.os.Build.VERSION.CODENAME
      • context.build.version.abbreviatedCodename - yayın öncesi kod adının ilk harfine (sürüm derlemeleri dahil) karşılık gelir (Ie5020)
    • Profil oluşturma izlemelerinde (ör. Perfetto, Yöntem izleri) daha kolay araç kurmak için JSON çıkışına profilerOutput listesi eklendi (I05ddd, b/332604449)
    • Karşılaştırma modüllerinde Android Test Orchestrator kullanıldığında bir uyarı eklendi. Bu durum, modül başına çıkış JSON dosyalarının tekrar tekrar üzerine yazılmasına neden olacaktır. (Ia1af6, b/286899049)
    • Dosyaları yazarken veya sonradan işleme koyarken net olmayan kilitlenmeleri önlemek için dosya adları 200 karakterden uzun olduğunda silin. (I4a5ab)

Sürüm 1.3.0-rc01

7 Ağustos 2024

androidx.benchmark:benchmark-*:1.3.0-rc01 yayınlandı. Sürüm 1.3.0-rc01 bu kayıtları içerir.

Hata Düzeltmeleri

  • Talimat dışı etkinlikler için bozuk değerler oluşturan androidx.benchmark.cpuEventCounter sorununu düzeltin (I7386a, b/286306579)
  • Metrik öncelik sırasına uymak ve düşük öncelikli metrik duraklatma/devam ettirme işleminin yüksek öncelikli metrik sonuçları üzerindeki etkisini önemli ölçüde azaltmak için resumeTiming/runWithTimingDisabled sorunlarını düzeltin. Örneğin, cpuEventCounter.enable araç bağımsız değişkeni aracılığıyla CPU perf sayaçları kullanılıyorsa duraklatma/devam ettirme gerçekleştiğinde süreN'ler artık önemli ölçüde azalmaz. (I39c2e, b/286306579, b/307445225)
  • Yığın örnekleme dönüşümü ana iş parçacığının dışına taşınarak measureRepeatedOnMainThread ürününün ana iş parçacığı sabit zaman aşımına uğramasına neden olma olasılığı azaldı. (I487a8, b/342237318)
  • Bu durum, AGP 7.3 veya sonraki bir sürümle R8 kullanılırken (ör. R8 sürüm 3.3) ve AGP 8.1 veya sonraki sürümler kullanılırken tüm derlemeler (ör. D8 sürümü 8.1) için API modellemesi aracılığıyla otomatik olarak gerçekleştirildiğinden, yeni platform API'lerine erişimin manuel olarak özetlenmesi kaldırıldı. AGP kullanmayan müşterilerin D8 sürümüne 8.1 veya daha yeni bir sürüme geçmeleri önerilir. Daha fazla bilgi için bu makaleyi inceleyin. (I9496c, b/345472586)
  • Paket adını instr arg olarak göndermek için agp sürüm kontrolü eklendi. AGP 8.4.0'dan önceki sürümlerde hedef uygulama paketi adı, araç bağımsız değişkenleri aracılığıyla araç uygulamasına gönderilemez. (0c72a3f)

Sürüm 1.3.0-beta02

10 Temmuz 2024

androidx.benchmark:benchmark-*:1.3.0-beta02 yayınlandı. Sürüm 1.3.0-beta02 bu taahhütleri içerir.

Hata Düzeltmeleri

  • Perfetto'yu başlatırken uyarı günlüğe kaydetmek için çıkışCODE 2 öğesini düzgün bir şekilde ele alın ancak devam edin.

Sürüm 1.3.0-beta01

12 Haziran 2024

androidx.benchmark:benchmark-*:1.3.0-beta01 yayınlandı. Sürüm 1.3.0-beta01 bu taahhütleri içerir.

API Değişiklikleri

  • Tutarlılık için MethodTracing.affectsMeasurementOnThisDevice, AFFECTS_MEASUREMENT_ON_THIS_DEVICE olarak yeniden adlandırıldı. (I1bdfa)
  • Mikro karşılaştırmalarda geçersiz kodların ortadan kaldırılmasını önlemek için deneysel BlackHole.consume() API'si eklendi. (If6812, b/286091643)
  • Mikrobenchmark, yöntem izlemenin ölçümleri etkilemesini önlemek için artık doğru şekilde hata verecek. Bu durum, yöntem izlemenin zorlandığı (araç bağımsız değişkenleri veya MicrobenchmarkConfig aracılığıyla) belirli cihazlarda ve yöntem izlemeden sonra ölçüm yapılmaya çalışıldığında ortaya çıkar. Etkilenen cihazlar bu parazitten etkilenen API 26-30 veya belirli ART ana hat modülü sürümlerini çalıştırıyordur ve çalışma zamanında ProfilerConfig.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şittir android.os.Build.ID
    • context.build.version.codename - Eşittir android.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 şekilde StackSampling hatasını düzeltir
  • Makro->yaygın bağımlılığı api() olarak değiştirin. Böylece kullanımı daha kolay olur. Ör. PerfettoTrace ve PerfettoConfig. (Icdae3, b/341851833)
  • mergeArtProfile ve mergeStartupProfile 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 deneysel MacrobenchmarkRule#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() ve PowerMetric.deviceSupportsPowerEnergy() eklendi. (I6a591, b/322121218)

Hata Düzeltmeleri

  • Önceki temel profille karşılaştırma eklendi (I824c8, b/269484510)
  • Uyarıları devre dışı bırakmak için DSL eklendi (Ic4deb, b/331237001)
  • Karşılaştırma varyantları devre dışı bırakıldığında bilgi günlüğündeki istisna değiştirildi (I8a517, b/332772491)
  • Kapsamı gerçek measureBlock() süresine odaklanan bir Macrobenchmark için yöntem izlerinin yakalanmasını kolaylaştırın. Daha önce, hedef süreç lansmanında başlıyor ve yalnızca baştan başlatma destekleniyordu (Iee85a, b/300651094)
  • Perfetto iz işlemcisi yavaş başlatılırken kilitlenmeden kaçının (I98841, b/329145808)

Sürüm 1.3.0-alpha03

17 Nisan 2024

androidx.benchmark:benchmark-*:1.3.0-alpha03 yayınlandı. Sürüm 1.3.0-alpha03 bu kaydetmeleri içerir.

Yeni Özellikler

  • JSON, textproto ve proto ikili program (kodu çözmez) varyantlarına sahip, herkese açık API PerfettoTraceProcessor.Session.queryMetrics API'lerini ekler. Bunlar, TraceProcessor'da yerleşik olan metrikleri (I54d7f, b/304038382) sorgulamanıza olanak tanır.
  • Profil oluşturma izlerinde (ör. perfetto, yöntem izleri) daha kolay araç yapılabilmesi için JSON çıkışına profilerOutput eklendi. (I05ddd, b/332604449)
  • Karşılaştırma için Perfetto Config'e güç etiketi eklendi. Bu, örneğin uyanık kalma kilidi izleme noktalarını yakalar. (Icfe44, b/286551983)
  • Beklenen süre ANR'ye neden olabilecekken yöntem izlerinin atlanmasını önlemek için androidx.benchmark.profiling.skipWhenDurationRisksAnr inst bağımsız değişkeni eklendi. CI çalıştırmalarında bundan kaçınılması önemle tavsiye edilir.
  • androidx.benchmark.profiling.perfCompare.enable adlı deneysel inst bağımsız değişkeni eklendi. Ölçüm ve profil oluşturma aşamaları arasında karşılaştırma zamanlaması çalıştırmak için bunu doğru olarak ayarlayın. Faydalıdır, ör. ve yöntem takibinin ek yükünün değerlendirilmesidir. (I61fb4, b/329146942)

API Değişiklikleri

  • İfadeler (I71f7b) olduğunda, olası tüm kapsamı bozmadan gelecekteki genişletmeyi etkinleştirmek için TraceSectionMetric.Mode, mühürlü sınıf olarak değiştirildi (I71f7b)
  • TraceSectionMetric.Mode.Average ve .Count eklendi ve bağımsız değişkenler yeniden sıralandı. Böylece, daha yaygın olan bağımsız değişken (mod) bağımsız değişken listesinde daha önce yer alıyordu. Böylece parametre adlarının belirtilmesi ihtiyacı azaltıldı. (Ibf0b0, b/315830077, b/322167531)
  • Metric.getResult, döndürme türüyle eşleşecek şekilde getMeasurements 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çin BaselineProfile gradle eklentisi özelliği geçersiz kılma sorunlarını düzeltin. (Ib8f05, b/324837887)
  • Yavaş cihazlarda bile yöntem izlerinin tam olarak yakalanması ve geçerli olması için makro karşılaştırmada yöntem izlerinin boşaltılması düzeltildi. (I6349a, b/329904950)
  • İz başlangıcında eksik veri riskini azaltmak için Perfetto iz kaydında engellemeyi başlatmayı etkinleştirin. Yalnızca API 33 ve sonraki sürümlerde desteklenir. (Ie6e41, b/310760059)
  • Karşılaştırma modüllerinde Android Test Orchestrator kullanıldığında bir uyarı eklendi. Bu durum, modül başına çıkış JSON dosyalarının tekrar tekrar üzerine yazılmasına neden olacaktır. (Ia1af6, b/286899049)
  • Zorla "," Cihaz yerel ayarı yok sayılarak, Studio çıkışında tutarlılık için binlik basamak ayırıcı (virgül) (I3e921, b/313496656)
  • TraceSectionMetric artık Trace.{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üne frameCount ölçümü eklendi. (I1e5aa)
  • Dokümanlarda sunulduğunda izleme için tercih edilen metriğin frameOverrunMs olduğu ve bunun nedeni netleştirildi. (I18749, b/329478323)

Sürüm 1.3.0-alpha02

20 Mart 2024

androidx.benchmark:benchmark-*:1.3.0-alpha02 yayınlandı. Sürüm 1.3.0-alpha02 bu kaydetmeleri içerir.

Yeni Özellikler

  • microbench'te yerleşik ProGuard kurallarıyla deneysel R8 desteği. Bu desteğin deneysel olduğunu ve kitaplık modülü testlerinin küçültülmesi için AGP 8.3 gerektirdiğini unutmayın. Karşılaştırma modülünüzde build.gradle R8 sadeleştirmesini/optimizasyonunu etkinleştirmek için aşağıdakileri kullanın. Bu işlem, iş yüküne bağlı olarak önemli bir performans artışı sağlar. (I738a3, b/184378053)

    android {
        buildTypes.release.androidTest.enableMinification = true
    }
    

Hata Düzeltmeleri

  • İzleme yöntemi izleme uyarısını, microbench çıkışından ayrı bir satırda olacak şekilde düzeltir. (I0455c, b/328308833)

Sürüm 1.3.0-alpha01

21 Şubat 2024

androidx.benchmark:benchmark-*:1.3.0-alpha01 yayınlandı. 1.3.0-alpha01 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • Gereksiz "gereken" kelimesini önlemek için MicrobenchmarkConfig boole parametreleri yeniden adlandırıldı (Ia8f00, b/303387299)
  • Ana iş parçacığı karşılaştırmalarının (ör. Görünümler veya Oluştur kullanıcı arayüzlerine dokunanlar), özellikle CI'daki büyük süitler sırasında ANR'leri tetiklemesini önlemek için BenchmarkRule.measureRepeatedOnMainThread eklendi. (I5c86d)
  • FrameTimingMetric için deneysel bir alternatif uygulama olan FrameTimingGfxInfoMetric eklendi. Bu alternatif uygulama, Perfetto izlerinden çıkarılan ölçümler yerine doğrudan platformdan gelen ölçümlerdir. (I457cb, b/322232828)
  • Bağımsız warmUp yinelemeleri sırasında ART profilini döküm özelliği ekleyin. (I17923)
  • TraceSectionMetric API'de yapılan çeşitli değişiklikler:
    • Mode.Min, Mode.Max ekle
    • Bölüm adını metrik etiketi olarak geçersiz kılmak için etiket bağımsız değişkeni ekleyin
    • Metriğin anlamını netleştirmek için çıkışa mod adı eklendi
    • Bu metriğin çoğu tekrarlanan etkinlikler için olduğundan varsayılan ayar toplam olarak değiştirildi Süreksizlikler oluşturabileceğinden CI kullanımındaki bu değişikliklere dikkat edin veya ayrıştırmayı geçiyor. (Ic1e82, b/301892382, b/301955938)

Hata Düzeltmeleri

  • Belirtilen yönetilen cihaz olmadığında referans profil gradle eklentisinde iyileştirilmiş hata mesajı (Idea2b, b/313803289)
  • AGP 8.3.0-alpha15 öncesi kitaplık referans profillerinin AAR'ye eklenmesiyle ilgili düzeltme (I1d2af, b/313992099)
  • Oluşturma görevinin sonundaki referans ve başlangıç profili çıkış URL'si düzeltildi (I802e5, b/313976958)
  • java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)] (I8dc7d, b/323601788) sorununu düzeltmeye çalışmak için veri kaynağı zaman aşımları düzenlendi
  • ProfileInstaller 1.3 olmadan uygulamalar karşılaştırılırken geçici çözüm kilitlenmelerine yönelik olarak gölgelendirici bırakma davranışını geçersiz kılmak için iki araç bağımsız değişkeni ekleyin:
    • androidx.benchmark.dropShaders.enable=true/false : Özellikle profil yükleyici 1.3 sürümünü kullanmayan uygulamalar karşılaştırılırken (StartupMode.Cold lansmanlarında yapılanlar da dahil olmak üzere) tüm gölgelendirici atlamalarını atlamak için kullanılabilir.
    • androidx.benchmark.dropShaders.throwOnFailure=true/false : Gölgelendiricileri bırakmaya çalışırken karşılaşılan hataları telafi etmek için kullanılabilir (örneğin, Profileloader 1.3 (I4f573) olmadan uygulamaları karşılaştırırken)
  • 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 önce 500 ms bekliyordu). (I85a50, b/316082056)
  • Çerçeveler oluşturulmadığında FrameTimingMetric hatasını iyileştirin ve sorunun teşhis edilmesine yardımcı olmak için metrik ayrıştırma işlemi başarısız olduğunda her zaman iz bağlantısını çıkarın. (I956b9)
  • FrameTimingMetric ürününün, özellikle belirli OEM cihazlarda çerçeve kimliğinin ayrıştırılamamasıyla ilgili kilitlenme düzeltildi. (Ia24bc, b/303823815, b/306235276)
  • FrameMetrics hizmetindeki kontrollerin güvenlik düzeyi gevşetildi ve hata mesajlarına daha fazla ayrıntı eklendi. (Iadede)

Sürüm 1.2

Sürüm 1.2.4

17 Nisan 2024

androidx.benchmark:benchmark-*:1.2.4 yayınlandı. Sürüm 1.2.4 bu taahhütleri içerir.

Hata Düzeltmeleri

  • Karşılaştırma varyantlarında ayarlanmayan referans profil srcset sorununu düzeltir. Ayrıca, döngüsel bağımlılığa neden olan kitaplıklardaki automaticGenerationDuringBuild sorununu da düzeltir. (I28ab7, b/333024280)
  • Sistem Arayüzü veya Başlatıcı gibi bir sistem uygulaması değilken uygulamaları kapatmak için am force-stop kullanın. Bu, "$package paketinin baştan başlatmadan önce çalışmaması gerektiğini" belirten StartupMode.COLD karşılaştırmayı düzeltir tam olarak başarılı olamamasına yol açabilir. (I5e028)

Sürüm 1.2.3

24 Ocak 2024

androidx.benchmark:benchmark-*:1.2.3 yayınlandı. 1.2.3 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • AGP sürümü 8.3.0 veya üzeri olduğunda Baseline Profile Gradle eklentisindeki istisna kaldırıldı.
  • AGP 8.3.0-alfa15 sürümünden önce AAR'ye kitaplık referans profillerinin dahil edilmesiyle ilgili düzeltme uygulandı.

Sürüm 1.2.2

1 Aralık 2023

androidx.benchmark:benchmark-*:1.2.2 yayınlandı. 1.2.2 sürümü bu kaydetmeleri içerir.

Temel Profiller

Sürüm 1.2.1

15 Kasım 2023

androidx.benchmark:benchmark-*:1.2.1 yayınlandı. Sürüm 1.2.1 bu kaydetmeleri içerir.

Yeni Özellikler

  • Kullanıcı, test varyantlarını devre dışı bıraktığında iyileştirilmiş hata mesajı (b/307478189)
  • AS test çalıştırma entegrasyonunu desteklemek için eklenen mülkler (b/309805233), (b/309116324)

Sürüm 1.2.0

18 Ekim 2023

androidx.benchmark:benchmark-*:1.2.0 yayınlandı. 1.2.0 sürümü bu kaydetmeleri içerir.

1.1.0'dan bu yana önemli değişiklikler

Temel Profiller

  • Yeni Temel Profil Gradle Eklentisi, referans profilleri yakalamayı ve test ve derleme iş akışınıza dahil etmeyi otomatikleştirir.
  • Önceki deneysel BaselineProfileRule.collectBaselineProfile API'nin basitleştirilmiş ve basitleştirilmiş bir sürümü olan BaselineProfileRule.collect artık kararlı çalışıyor
    • packageName 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

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 ve MethodTracing için destek.
    • Çalışma zamanı filtreleme temel profili ile makrobenchmark kural testlerinin karşılaştırmasına izin vermek için androidx.benchmark.enabledRules eklendi
    • İzleme-perfetto ile izlemeyi etkinleştirmek için androidx.benchmark.perfettoSdkTracing.enable bağımsız değişkeni eklendi (ör. Yeniden beste izleme oluşturun. StartupMode.COLD ile kullanıldığında, izleme kitaplığı yüklenip uygulama başlatılırken etkinleştirildiğinden zamanlamanın önemli ölçüde etkileneceğini unutmayın.
  • 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.
  • Yeni Deneysel Metrik API'leri

    • Uygulamanızdaki trace("") {} bloklarından basit zamanlamaları çıkarmaya olanak tanıyan deneysel TraceSectionMetric veya Perfetto TraceProcessor'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
  • Düzeltmeler

    • Birden fazla APK'dan (ör. uygulama paketinden) yüklenen bir uygulamadan profil yüklerken veya çıkarırken karşılaşılan kilitlenmeler düzeltildi.
    • FrameTimingMetric ürününün, tutarsız çerçeve kimliklerine sahip kareleri yok sayması sorunu düzeltildi (genellikle API 31 ve sonraki sürümlerde dalgalar sırasındaki kareler) (I747d2, b/279088460)
    • İzlerdeki ayrıştırma hataları düzeltildi > 64MB (Ief831, b/269949822)
    • Cihaz (özellikle emülatör) işletim sistemi görüntüsü, izleme veya derleme için doğru şekilde yapılandırılmadığında oluşan hatalar açıklandı
    • Pilsiz cihazlarda pil seviyesi kontrolünü atla (mikro ve makro)
    • Geçersiz çıkış dizinleri için daha net hatalar ve daha güvenli varsayılan ayarlarla iyileştirilmiş dosya çıkışı
    • Gölgelendirici önbelleği düzenli olarak bırakılarak StartupMode.COLD kararlılığı iyileştirildi (MacrobenchmarkScope.dropShaderCache aracılığıyla da gösterilir)
    • startActivityAndWait için leanback yedeği düzeltildi.

Mikro Karşılaştırma

  • Özellikler
    • Profil oluşturma, diğer metriklerden sonra ayrı bir aşamaya taşındı. Böylece bir test çalıştırmasında hem doğru zamanlama hem de profil oluşturma sonuçları gösterilebilir.
  • Deneysel API'ler
    • Özel metrikleri tanımlamak, izleme ve profil oluşturmayı yapılandırmak için deneysel MicrobenchmarkConfig API'si eklendi. Yöntem izlerini veya izleme noktalarını yakalamak için kullanılabilir (ancak ek yükü izlemeye dikkat edin).
    • BenchmarkState hizmetini BenchmarkRule öğ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.
  • 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 atlayarak dryRunMode performansı büyük ölçüde iyileştirildi (eski işletim sistemi sürümlerinde 10 kata kadar daha hızlı prova modu).

Sürüm 1.2.0-rc02

6 Ekim 2023

androidx.benchmark:benchmark-*:1.2.0-rc02 yayınlandı. Sürüm 1.2.0-rc02 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Karşılaştırma dosyası çıkışının artık kesintiye uğramaması için düzeltme BaselineProfile Eklenti dosyası kopyalama. Dosyalar oluşturulup cihazdan kopyalandı ancak gradle eklentisi tarafından görülmeyecek şekilde yeniden adlandırıldı. (I8dbcc, b/303034735, b/296453339)
  • Makrobenchmark modülünden hedef uygulamaya ekleme yapılırken tracing-perfetto yükleme hata mesajları netleştirildi.

Sürüm 1.2.0-rc01

20 Eylül 2023

androidx.benchmark:benchmark-*:1.2.0-rc01 yayınlandı. Sürüm 1.2.0-rc01 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Perfetto SDK izlemesi, Karşılaştırma'da ilk kullanıma hazırlanamadığında artık bir istisna (çözüm talimatlarıyla birlikte) atılır. (I6c878, b/286228781)
  • ART yöntemi izlemesi dönüştürülürken OOM kilitlenmesi düzeltildi -> perfetto biçimindedir. (I106bd, b/296905344)
  • (Macrobenchmark) Studio test çıkışında bağlantı kurulduğunda yöntem izleme etiketi açıklandı ve yöntem izleme dosya adlarının cihazda/ana makinede benzersiz olması için düzeltme yapıldı. Böylece, birden fazla karşılaştırma çalıştırıldığında bunların üzerine yazılmayacak. (I08e65, b/285912360)
  • Temel profili kaydederken cihazın uyanık olduğundan emin olur. (I503fc)

Sürüm 1.2.0-beta05

30 Ağustos 2023

androidx.benchmark:benchmark-*:1.2.0-beta05 yayınlandı. Sürüm 1.2.0-beta05 bu kaydetmeleri içerir.

Yeni Özellikler

  • Baseline Profile Gradle Plugin artık Android Gradle Plugin 8.3'ü destekliyor. (aosp/2715214)

Sürüm 1.2.0-beta04

23 Ağustos 2023

androidx.benchmark:benchmark-*:1.2.0-beta04 yayınlandı. Sürüm 1.2.0-beta04 bu kaydetmeleri içerir.

Yeni Özellikler

  • Baseline Profile Gradle eklentisi artık Android Gradle Plugin 8.3'ü destekliyor. (aosp/2715214)

Hata Düzeltmeleri

  • Çıkış dosyası adlarını daha fazla temizleyerek ve "=" işaretinden kaçınarak dosyaları yazma / taşıma ve çekme (özellikle parametreleştirilmiş testlerde bulunanlar) hatalarını düzeltin ve ":" çıkış dosyaları adları da kullanabilirsiniz. (I759d8)

Sürüm 1.2.0-beta03

9 Ağustos 2023

androidx.benchmark:benchmark-*:1.2.0-beta03 yayınlandı. Sürüm 1.2.0-beta03 bu kaydetmeleri içerir.

API Değişiklikleri

  • TraceSectionMetric filtresine varsayılan olarak yalnızca hedef pakete bağımsız değişken eklendi (Ia219b, b/292208786)

Hata Düzeltmeleri

  • Yapı adı ve diğer referanslarla tutarlılık sağlamak için fullTracing.enable araç bağımsız değişkeni perfettoSdkTracing.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ığı yerine androidx.test.uiautomator:uiautomator:2.2.0 öğesini api 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 metrik frameDurationCpuMs olarak adlandırılmıştır. (Ib097f, b/288830934).

Sürüm 1.2.0-alpha16

21 Haziran 2023

androidx.benchmark:benchmark-*:1.2.0-alpha16 yayınlandı. Sürüm 1.2.0-alpha16 bu kaydetmeleri içerir.

API Değişiklikleri

  • BaselineProfileRule.collectBaselineProfile() API, BaselineProfileRule.collect() olarak yeniden adlandırıldı. (I4b665)

Hata Düzeltmeleri

  • androidx.benchmark.profiling.mode = MethodTracing için Macrobenchmark desteği. (I7ad37, b/285912360)
  • Mikro karşılaştırma profili oluşturma işlemi ayrı bir aşamaya taşındı. Böylece bu profil, ölçümden sonra yerini almak yerine sırayla gerçekleştirilir. MethodTracing iz bölümleri de artık (varsa) yakalanan Perfetto izine dahil ediliyor. (I9f657, b/285014599)
  • Mode.Sum ile TraceSectionMetric 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 yerine collectBaselineProfile kullanılmalıdır. (I17262, b/281078707)
  • Dokümanlarda varsayılan filtre davranışının daha net olması için BaselineProfileRule öğesinin filterPredicate 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ünde IsolationActivity ve Perfetto izlemeyi devre dışı bırakın. (Ie4f7d)
  • Macrobenchmark'larda androidx.benchmark.profiling.mode=StackSampling ve androidx.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 önce UiAutomation 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 ve BaselineProfileRule 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 öğesini androidx.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 {} ve PerfettoTraceRule API'leri eklendi. (I3ba16)
  • BaselineProfileRule artık paket önekleri listesi yerine bir filtre koşulu kabul ediyor. Bu, teste filtreleme üzerinde tam kontrol sağlar. (I93240)
  • Temel profilin N yineleme için kararlı olmasını bekleyen deneysel bir API BaselineProfileRule.collectStableBaselineProfile ekleyin. (I923f3)
  • BaselineProfileRule kullanarak referans profilleri oluştururken çıkış dosyası adı öneki belirtme özelliğini ekleyin. (I7b59f, b/260318655)

Hata Düzeltmeleri

  • Özellikle API 21 / 22'de çıkış dosyalarının sessizce yazılmasını/eklemesini önleyen dosya çıktısı yazma güvenliğini iyileştirin. (If8c44, b/227510293)
  • Dosyayı oluşturmak ve doğru şekilde yerleştirmek için simpleperf iz çıkışını düzeltin. Bu işlem, bir dosyanın gradle tarafından başarısız bir şekilde çekilmesiyle ilgili sorunları da daha genel olarak düzeltir. (I12a1c, b/259424099)
  • Profil yükleyici çok eski olduğunda görüntülenen profil yükleyici hata mesajını iyileştirin. Artık API 31 ile 33 arasındaki temel profilleri ölçmek için profil yükleyici sürümünü (1.2.1) güncellemeniz istenir. Güncellemenin desteklenmediğini belirtmek isteriz. (Ia517f, b/253519888)
  • Hata mesajında bulunan kabuk komutu hatalarını düzeltme
  • Oluşturulan profil kurallarını, zaman içinde değiştikçe değişikliklerin sayısını en aza indirmek için otomatik olarak sıralayın (kaynak kontrolüne giriş profili kuralları kontrol ederken). (Ie2509)
  • Android 13'ün (API 33) altındaki rootlanmamış derlemelerde Expected no stderr from echo 3 > /proc/sys/vm/drop_caches mesajıyla (I6c245, b/259508183) kilitlenme düzeltildi

Bilinen Sorunlar - MacrobenchmarkScope.dropShaderCache(), henüz yayınlanmamış profil yükleyici manifestinde yayın kaydının eksik olması nedeniyle kilitlenebilir. (I5c728, b/258619948) profileinstaller:1.3.0-alpha02 ürünündeki sorunu çözmek için aşağıdaki kodu uygulamanızın (karşılaştırmanızın değil) AndroidManifest.xml dosyasına ekleyin:

  <!-- workaround bug in profileinstaller 1.3.0-alpha02, remove when updating to alpha03+ -->
  <receiver
    android:name="androidx.profileinstaller.ProfileInstallReceiver"
    android:permission="android.permission.DUMP"
    android:exported="true">
    <intent-filter>
        <action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
    </intent-filter>
  </receiver>

Sürüm 1.2.0-alpha07

9 Kasım 2022

androidx.benchmark:benchmark-*:1.2.0-alpha07 yayınlandı. 1.2.0-alpha07 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • Macrobenchmark'larda enerji ve güç ölçümü için PowerMetric API ekler. (Ife601, b/220183779)
  • Gölgelendirici önbelleğini bırakmak için MacrobenchmarkScope.dropShaderCache() düzeltildi. Gölgelendiriciler artık her iterasyonda tutarlı bir şekilde temizlendiğinden bu işlem, StartupMode.COLD karşılaştırmada yaklaşık 20 ms'lik gürültüyü kaldırır. Daha önce, ısınma yinelemeleri kullanılarak yapılan Partial derlemesi, gölgelendirici önbelleğe alma işleminin ısınma sırasında gerçekleşme olasılığı daha yüksek olduğundan, hatalı hızlı sayılar bildiriyordu. Bu düzeltme için rootlanmış bir cihaz veya hedef uygulamada profileinstaller:1.3.0-alpha02 kullanılması gerekir. ProfileInstaller kitaplığının API değişiklikleri için lütfen ProfileYükleer 1.30-alpha02 sayfasına bakın. (Ia5171, b/231455742)
  • Aynı etikete sahip birden fazla iz bölümünde harcanan toplam sürenin ölçülmesine olanak tanıyan TraceSectionMode("label", Mode.Sum) eklendi. Örneğin TraceSectionMetric("inflate", Mode.Sum), bir makro karşılaştırma değerinde enflasyona harcanan toplam süre için inflateMs metriğini raporlar. Ayrıca TraceSectionMetric, hedef uygulamada forceEnableAppTracing kullanımıyla birlikte androidx.tracing.Trace ile birlikte çalıştığından daha düşük API düzeylerine döndüğünden API 29 gereksinimi de kaldırıldı. (Id7b68, b/231455742)

Hata Düzeltmeleri

  • Tüm çıkışları/hataları doğrulayarak tüm dahili kabuk komutlarının güvenliği iyileştirildi. (I5984d, b/255402908, b/253094958)
  • Temel profil adb pull komutunda cihazı belirtin. Böylece, birden fazla cihaz bağlandığında (bir emülatöre kadar) pull komutu kolayca kopyalanabilir (I6ac6c, b/223359380)
  • Makrobenchmark test apk'si, kendi kendini ayarlayan bir şekilde ayarlanmadıysa hata ekleyin. Bu hata, makro karşılaştırmanın hedef uygulama işlemi içinden yapılmasını engeller. makrobench, işlem sırasında uygulamayı derleyemez/kaldıramaz/başlatamaz veya kendi izinlerini kontrol edemez (I4279b)
  • measureRepeated() öğesinde StartupMode.COLD öğesinin, setupBlock tarihinden sonra hedef işlemi sonlandırmamasına yol açan sorun düzeltildi. Artık setupBlock 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 veya CompilationMode.Partial(warmupIterations) kullanmak için hedef uygulamanızı androidx.profileinstaller.profileinstaller:1.3.0-alpha01 kullanacak şekilde güncellemeniz de gerekir. Bu işlem, profilin derlenebilmesi/çıkarılabilmesi için diske doğru şekilde temizlenmesini sağlar.

Hata Düzeltmeleri

  • API 33 ve sonraki sürümlerde SampledProfiling kilitlenmesi düzeltildi. (I40743, b/236109374)

Sürüm 1.2.0-alpha05

5 Ekim 2022

androidx.benchmark:benchmark-*:1.2.0-alpha05 yayınlandı. 1.2.0-alpha05 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Yakalanan karşılaştırmalı izler için Studio sistem izleme görüntüleyicideki kare dökümünü düzeltin (I3f3ae, b/239677443)
  • FrameOverrun öğesini 29 yerine API 31 gerektiriyor olarak listelemek için FrameTimingMetric 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ık MacrobenchmarkScope.startActivityAndWait() aracılığıyla başlatılmasını gerektirmeyecek şekilde düzeltildi. Bu, metriğin ör. bildirimler, Context.startActivity(), uygulama içi etkinliğe dayalı gezinme veya kabuk komutları. (Ia2de6, b/245414235)
  • Çerçeve algılamanın güvenlik düzeyini azaltarak startActivityAndWait ürününün emülatörlerde başlatmanın tamamlanmasını beklemeye çalışırken zaman aşımına uğradığı hata düzeltildi. (Ibe2c6, b/244594339, b/228946895)

Sürüm 1.2.0-alpha03

7 Eylül 2022

androidx.benchmark:benchmark-*:1.2.0-alpha03 yayınlandı. 1.2.0-alpha03 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • BenchmarkState özelliğini, BenchmarkRule / JUnit4 biçimlerinden ayrı olarak bağımsız olarak kullanmak için deneysel API'ler eklendi. (Id478f, b/228489614)

Hata Düzeltmeleri

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 olarak am force stop. Bu, isteğe bağlı bir boole bağımsız değişkeniyle geçersiz kılınabilir. (02cce9, b/241214097)

Hata Düzeltmeleri

  • Sistem uygulamaları için temel profil oluşturma desteği. (I900b8, b/241214097)
  • Rootlanmamış cihazlarda ODPM güç metriklerini kontrol etme desteği. (a38c78, b/229623230)

Sürüm 1.2.0-alpha01

27 Temmuz 2022

androidx.benchmark:benchmark-*:1.2.0-alpha01 yayınlandı. Sürüm 1.2.0-alpha01 bu kaydetmeleri içerir.

Yeni Özellikler

  • Araçların, Perfetto SDK izlemesini sunan bir uygulamada Perfetto SDK izlemeyi etkinleştirmesine olanak tanıyan yeni izleme-perfetto ortak bileşeni (I2cc7f)
  • Yalnızca karşılaştırmalara göre filtrelemeyi etkinleştirmek veya yalnızca temel profil oluşturmak için androidx.benchmark.enabledRules araç bağımsız değişkeni eklendi. "Macrobenchmark" veya "BaselineProfile"ı iletin. tek bir tür test çalıştırmanız gerekir, ör. BaselineProfiles oluşturmak için kullanabilirsiniz. Virgülle ayrılmış liste de Desteklenir. (I756b7, b/230371561)

    Ör. makrobenchmark'ınızın build.gradle dosyasında:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile'
        }
    }
    

    Alternatif olarak Gradle komut satırından:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
    

API Değişiklikleri

  • Karşılaştırmalarda enerji ve güç görevlerini ölçmek için yeni PowerMetric eklendi. (I9f39b, b/220183779)
  • Profil sıfırlama ve derlemeyi atlamak için yeni bir derleme modu CompilationMode.Ignore eklendi. (Ibbcf8, b/230453509)
  • Çıkış dosyasını paket adlarına göre filtrelemek için BaselineProfileRule#collectBaselineProfile öğesine yeni bir parametre eklendi (If7338, b/220146561)
  • Geliştiricinin güç tüketimini ölçmek için cihazı boşaltmasını sağlar. (I6a6cb)
  • MacrobenchmarkScope içine gölgelendirici önbelleğini temizleme özelliği eklendi. (I32122)
  • Geliştiricinin, metrik türü ve istenen alt sistem kategorilerinin görüntülenmesini yapılandırmasına olanak tanır. (I810c9)
  • Önceden, desteklenmeyen bir cihazda çalıştırıldığında UnsupportedOperationException, karşılaştırmaya dahil ediliyordu. Artık UOE, yalnızca metrik desteklenmeyen cihazda (ör. PowerMetric.configure) kullanıldığında gerçekleşiyor. (I5cf20, b/227229375)
  • Makro karşılaştırmalarda her sistem kategorisinde toplam güç ve enerjinin ölçülmesi için TotalPowerMetric ve TotalEnergyMetric eklendi. (I3b26b, b/224557371)

Hata Düzeltmeleri

  • Rootlanmamış derlemelerde her bir makro karşılaştırma noktası arasında derlenen yöntemlerin doğru şekilde sıfırlanmamasına neden olan sorun düzeltildi. Bu durum maalesef her yinelemede apk'nin yeniden yüklenmesini gerektirir. Bu işlem, her bir makrobenchmark için uygulama verilerini temizler. (I31c74, b/230665435)
  • API 21/22'de iz kaydı kilitlenmesini düzeltme (If7fd6, b/227509388, b/227510293, b/227512788)
  • "Herhangi bir metrik okunamıyor" sorununu düzeltmek için etkinlik başlatma tamamlama algılamasının revizyonunu yapma başlangıç makro karşılaştırmalarında bir istisna oluşturur. (Ia517c)

Sürüm 1.1.1

Sürüm 1.1.1

9 Kasım 2022

androidx.benchmark:benchmark-*:1.1.1 yayınlandı. Sürüm 1.1.1 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Bazı Android 11 (API 30) ve sonraki sürümlere sahip cihazlarda oluşabilecek android.system.ErrnoException: open failed: EACCES sorununu düzeltir. Bu, 1.2.0-alpha01 tarafından sunulan ideal bir çözümdür. (aosp/2072249)

Sürüm 1.1.0

Sürüm 1.1.0

15 Haziran 2022

androidx.benchmark:benchmark-*:1.1.0 yayınlandı. 1.1.0 sürümü bu kaydetmeleri içerir.

  • Bu sürüm, androidx.benchmark:benchmark-*:1.1.0-rc03 sürümüyle aynı.

1.0.0'dan bu yana önemli değişiklikler

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

Sürüm 1.1.0-rc02

11 Mayıs 2022

androidx.benchmark:benchmark-*:1.1.0-rc02 yayınlandı. Sürüm 1.1.0-rc02 bu kaydetmeleri içerir.

  • Ölçümlerin doğru olması için uygulamalar artık karşılaştırmalar arasına tamamen yeniden yüklendiğinden bu sürümde bir davranış değişikliği yapıldığını unutmayın.

Hata Düzeltmeleri/Davranış Değişiklikleri

  • Uygulama derleme işleminin makro karşılaştırmalar arasında doğru şekilde sıfırlanmamasına ve rootlanmamış derlemelerde hiç sıfırlanmamasına neden olan sorun düzeltildi. Bu sayede, birden fazla test çalıştırmanın CompilationMode ürününün ölçümler üzerinde çok az etkisi olur veya hiç etkisi olmaz. Bu sorunu çözmek için hedef uygulama artık her test yöntemini tamamen yeniden yüklüyor. Bu işlem, her makrobenchmark arasındaki uygulama verilerini temizleyecek. (I31c74, b/230665435)

  • Bu durum, uygulamaların testlerden önce durumu ayarlamasını engellediğinden, artık bu sorunu çözmek için derleme / yeniden yükleme işlemini atlamak mümkündür. Örneğin, cmd package compile -f -m speed <package> kabuk komutuyla hedefi tamamen derleyebilir ve ardından makrobenchmark'ın derleme adımını atlayabilirsiniz.

    Ör. makrobenchmark'ınızın build.gradle dosyasında:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false'
        }
    }
    

    Alternatif olarak Gradle komut satırından:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
    
  • androidx.benchmark.enabledRules enstrümantasyon bağımsız değişkeni eklenerek, makro karşılaştırmalar ile test oluşturan temel profil arasında modülün paylaşılması mümkün hale geldi. "Macrobenchmark" veya "BaselineProfile"ı iletin. tek bir tür test çalıştırmanız gerekir, ör. bir emülatörde BaselineProfiles oluştururken geçerlidir. (I756b7, b/230371561)

    Ör. makrobenchmark'ınızın build.gradle dosyasında:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile'
        }
    }
    

    Alternatif olarak Gradle komut satırından:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
    

Sürüm 1.1.0-rc01

20 Nisan 2022

androidx.benchmark:benchmark-*:1.1.0-rc01 yayınlandı. Sürüm 1.1.0-rc01 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Android Studio'daki temel profil çıkış bağlantılarında artık benzersiz bir dosya adı kullanılıyor. Bu şekilde, çıkış her zaman bir BaselineProfileRule kullanmanın en son sonuçlarını yansıtır. ( aosp/2057008, b/228203086 )

Sürüm 1.1.0-beta06

6 Nisan 2022

androidx.benchmark:benchmark-*:1.1.0-beta06 yayınlandı. Sürüm 1.1.0-beta06 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • API 21/22'de izleme kaydı kilitlenmesini düzeltme (If7fd6, b/227509388)
  • "Herhangi bir metrik okunamıyor" sorununu düzeltmek için etkinlik başlatma tamamlama algılamasının revizyonunu yapma başlangıç makro karşılaştırmalarında bir istisna oluşturur. (Ia517c)
  • CompilationMode.None() kullanıldığında Macrobenchmarks için başlangıç metriklerini düzeltin. Bu değişiklikten önce CompilationMode.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

Sürüm 1.1.0-beta04

23 Şubat 2022

androidx.benchmark:benchmark-*:1.1.0-beta04 yayınlandı. Sürüm 1.1.0-beta04 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Android 10'da eksik metrikleri düzeltin ve İşlem adlarının yakalanamaması nedeniyle NoSuchElementException doğru şekilde izlenmesini sağlar. (Ib4c17, b/218668335)

  • Q (API) sürümünde termal kısıtlama algılaması için PowerManager kullanın 29) ve üzeri. Bu sayede, yanlış yönlendirme sıklığını önemli ölçüde azaltmış olursunuz termal kısıtlama algılamada pozitif değerler (90'dan sonra karşılaştırmayı yeniden deneme) bekleme süresindedir) ve kullanıcı performansında karşılaştırmaları önemli ölçüde inşa eder. Aynı zamanda saatler şu anda çalıştığında bile kısıtlama algılama özelliği de vardır. kilitli (cihazın fiziksel koşulları için ortam) da kullanabilirsiniz. (I9c027, b/217497678, b/131755853)

  • İncelemeyi basitleştirmek için basit performans ile örneklenmiş profil oluşturmayı yalnızca measureRepeated iş parçacığıyla filtreleyin (Ic3e12, b/217501939)

  • Çok işlemli uygulamalardaki adlandırılmış kullanıcı arayüzü alt işlemlerinden gelen destek metrikleri (Ice6c0, b/215988434)

  • Temel profil kurallarını Android 9'u (SDK 28) hedefleyecek şekilde filtreleyin. aosp/1980331 b/216508418

  • Compilation.None() kullanırken profil yükleme işlemini atlayın. Ayrıca, uygulama androidx.profileinstaller ve Android Gradle eklentisinin eski bir sürümünü kullanıyorsa uyarı bildirin. aosp/1977029

Sürüm 1.1.0-beta03

9 Şubat 2022

androidx.benchmark:benchmark-*:1.1.0-beta03 yayınlandı. Sürüm 1.1.0-beta03 bu kaydetmeleri içerir.

API Değişiklikleri

  • AudioUnderrunMetric, makrobenchmark kitaplığına deneysel işaretin altına alınan seslerin algılanmasına izin vermek için eklendi (Ib5972)
  • profileBlock ile aynı şekilde çalıştığı için BaselineProfileRule artık setup blokunu kabul etmiyor. (Ic7dfe, b/215536447)

    Örneğin,

    @Test
    fun collectBaselineProfile() {
        baselineRule.collectBaselineProfile(
            packageName = PACKAGE_NAME,
            setupBlock = {
                startActivityAndWait()
            },
            profileBlock = {
                // ...
            }
        )
    }
    
    @Test
    fun collectBaselineProfile() {
        baselineRule.collectBaselineProfile(
            packageName = PACKAGE_NAME,
            profileBlock = {
                startActivityAndWait()
                // ...
            }
        )
    }
    

Hata Düzeltmeleri

  • Studio çıkışında (I5ae4d, b/214917025) bağlantı verildiğinde, mikrobench profil aracı izlerinin sonraki çalıştırmalarda güncellenememesi sorunu düzeltildi
  • API 23'te (Ice380) derleme kabuğu komutlarını önleme
  • FrameCpuTime yeniden adlandırıldı -> FrameDurationCpu, FrameUiTime -> FrameDurationUi, bunları netleştirmek için kullanılır. Zaman damgaları değil, süreler ve ön eklerle eşleştirme kullanılır. (I0eba3, b/216337830)

Sürüm 1.1.0-beta02

26 Ocak 2022

androidx.benchmark:benchmark-*:1.1.0-beta02 yayınlandı. Sürüm 1.1.0-beta02 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Microbenchmark Yığın Örneklemesi / Yöntem İzleme Profili sonuçlar artık Studio çıkışında diğer profil oluşturma çıkışlarına benzer şekilde bağlanır ve tahsis metriği (Idcb65, b/214440748, b/214253245)
  • BaselineProfileRule, oluşturulan BaselineProfile metin dosyasını almak için artık logcat ve Studio çıkışında adb pull komutunu yazdırıyor. (f08811)

Sürüm 1.1.0-beta01

12 Ocak 2022

androidx.benchmark:benchmark-*:1.1.0-beta01 yayınlandı. Sürüm 1.1.0-beta01 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Profil oluşturucu bağımsız değişkeninin yoksayılması sorununu düzeltir. (I37373, b/210619998)
  • Desteği sonlandırılan CompliationModes kaldırıldı (I98186, b/213467659)
  • CompilationMode.Partial olan referans profil bağımsız değişkeni olarak değiştirildi enum'u kullanabilirsiniz. (Id67ea)

Sürüm 1.1.0-alpha13

15 Aralık 2021

androidx.benchmark:benchmark-*:1.1.0-alpha13 yayınlandı. Sürüm 1.1.0-alpha13 bu kaydetmeleri içerir.

API Değişiklikleri

  • Android Q'da (API 29 ve sonraki sürümler) microbench çıkışına düşük ek yük getiren Sistem İzleme ekleyin. Bu özelliğin, sonuçları etkilememesi için şu anda özel izlemeyi (android.os.Trace veya androidx.tracing Jetpack API'leri aracılığıyla) yakalamadığını unutmayın. Bu izleme, teşhisin istikrarsızlığa neden olabilir. (I298be, b/205636583, b/145598917)
  • CompilationModes konusunu üç sınıfa dönüştürün: Tam, Hiçbiri, Kısmi. Eskiden, derleme bağımsız değişkenleri (artık uygulama ayrıntıları olarak değerlendiriyoruz) ve özelliklerden sonra bu adlar tutarsız bir şekilde adlandırılıyordu. Bu sayede, platform sürümlerindeki dengeler, olası kombinasyonlar ve davranışlar daha net hâle gelir. (I3d7bf, b/207132597)
  • Kurulum ve ölçüm artık her zaman çift halinde ve sıralı olarak sunuluyor. Artık paket adını ve yinelemeyi sorgulayabilirsiniz (yine de belirli ısınma senaryolarında iterasyon null olabilir). (Id3b68, b/208357448, b/208369635)

Hata Düzeltmeleri

  • Hatalı bir şekilde None (I01137) olarak ele alınan CompilationMode.Speed düzeltildi

Sürüm 1.1.0-alpha12

17 Kasım 2021

androidx.benchmark:benchmark-*:1.1.0-alpha12 yayınlandı. 1.1.0-alpha12 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Özel iz tabanlı veriler için deneysel TraceSectionMetric en iyi uygulamaları paylaşacağız. (I99db1, b/204572664)

Hata Düzeltmeleri

  • Kullanıcı arayüzünün test edilebilmesi için her yinelemede cihazı uyandırın. kilit ekranının devre dışı bırakılmasını gerektirir. (Ibfa28, b/180963442)
  • Şu ürünlerde StackSampling profil oluşturma modundaki birden fazla kilitlenmeyi düzeltir: emülatörler ve rootlanmamış cihazlar (Icdbda, b/202719335)
  • Her yinelemenin sonunda 0,5 saniyelik uyku süresi kaldırıldı. Bu değişiklikle birlikte eksik metrikler olduğunu fark ediyorsunuz. Lütfen hata bildiriminde bulunun. (Iff6aa)
  • Verilerin düşmesi olasılığını ve izleme nedeniyle oluşan bellek ek yükünü azaltın (Id2544, b/199324831, b/204448861)
  • Kompakt planlı depolama biçimine geçerek iz boyutunu yaklaşık% 40 azaltın. (Id5fb6, b/199324831)
  • Başlangıç metriklerinin uygulamaları her zaman şu tarihte bitecek şekilde güncellendi: oluşturma iş parçacığının sonu. Bu, platform genelinde daha tutarlı olacak. ve uygulama içi ölçümlerle daha yakından eşleşmesini sağlar. (Ic6b55)

Sürüm 1.1.0-alpha11

3 Kasım 2021

androidx.benchmark:benchmark-*:1.1.0-alpha11 yayınlandı. Sürüm 1.1.0-alpha11 bu kaydetmeleri içerir.

API Değişiklikleri

  • Macrobenchmark'ta artık minSdkVersion olarak 23 var. (If2655)
  • Uygulamanın kritik kullanıcı yolculuğu için temel profiller oluşturabilen yeni bir deneysel BaselineProfileRule ekler. İlerleyen zamanlarda ayrıntılı belgeler mevcuttur. (Ibbefa, b/203692160)
  • Eklenen ölçüsü tekrarlanan arayüz varyantını kaldırır karmaşıklığa neden olduğundan, çevrimiçi arama yapan kullanıcılar için yöntemidir. Java çağrılarının tekrar Unit.Instance şuradan döndürülmesi gerekir: ölçüp tekrarlama. Bu bir rahatsız ediciyse lütfen hata bildiriminde bulunun. sonraki bir sürümde tekrar ziyaret edebilir. (Ifb23e, b/204331495)

Sürüm 1.1.0-alpha10

27 Ekim 2021

androidx.benchmark:benchmark-*:1.1.0-alpha10 yayınlandı. 1.1.0-alpha10 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • API 23'e geri dönmek için Backport StartupTimingMetric. Bu yeni uygulama, beklemek için reportFullyDrawn() işlevini daha iyi işler kadar bir süre devam eder. (If3ac9, b/183129298)
  • Java çağrıları için birden fazla MacrobenchmarkScope yöntemine JvmOverloads eklendi. (I644fe, b/184546459)
  • Java dilindeki deyimsel kullanım için Consumer<MacrobenchmarkScope> kullanan alternatif bir MacrobenchmarkRule.measureDuplicateed işlevi sağlayın. (If74ab, b/184546459)

Hata Düzeltmeleri

  • Yeterince erken başlamayan ve eksik metrik verileri olan izler için düzeltme yapın. Bu sorunun, "Hiçbir metrik okunamıyor" sorununu düzeltmesi beklenir. karşılaştırma sırasında" kitaplığın kendisinden kaynaklanan istisnalar olabilir. (I6dfcb, b/193827052, b/200302931)
  • FrameNegatifSlack, anlamını (karenin zaman bütçesini ne kadar aştığını) netleştirmek için FrameOverrun olarak yeniden adlandırıldı. (I6c2aa, b/203008701)

Sürüm 1.1.0-alpha09

13 Ekim 2021

androidx.benchmark:benchmark-*:1.1.0-alpha09 yayınlandı. Sürüm 1.1.0-alpha09 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • API 31/S+'ta kök içermeyen Kernel sayfa önbelleğinin kaldırılması için destek, StartupMode.COLD başlatmalarının doğruluğunu artırır. (Iecfdb, b/200160030)

Sürüm 1.1.0-alpha08

29 Eylül 2021

androidx.benchmark:benchmark-*:1.1.0-alpha08 yayınlandı. 1.1.0-alpha08 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • API 23'e geri dönmek için kaydırma makro karşılaştırmalarını etkinleştirin (If39c2, b/183129298)
  • Kullanıcı arayüzü ve JSON çıkışına yeni örneklenmiş metrik türü ekleyerek şuna odaklanın: iterasyon başına birden fazla örneğin yüzdelikleridir. (I56247, b/199940612)
  • Karşılaştırma boyunca kayan nokta metriklerine geçme (Studio kullanıcı arayüzünde kısaltılır). (I69249, b/197008210)

Sürüm 1.1.0-alpha07

1 Eylül 2021

androidx.benchmark:benchmark-*:1.1.0-alpha07 yayınlandı. 1.1.0-alpha07 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • Gelecekte desteklenmesi amaçlanan en düşük API düzeyini yansıtmak için minimum API düzeyi 21'e yükseltildi. Desteklenen mevcut minimum API API'si gerekliApi() aracılığıyla iletilmeye devam etmektedir ve şu anda 29'dur (I440d6, b/183129298)

Hata Düzeltmeleri

  • Referans profilleri kullanan uygulamaların CompilationMode.BaselineProfile ile MacroBenchmarks çalıştırmasını kolaylaştırmak için ProfileInstaller düzeltildi. (I42657, b/196074999) NOT: Ayrıca androidx.profileinstaller:profileinstaller:1.1.0-alpha04 veya daha yeni bir sürüme güncelleme yapmanız gerekir.
  • StartupMode.COLD ve CompilationMode.None karşılaştırmaları artık daha istikrarlı. (I770cd, b/196074999)

Sürüm 1.1.0-alpha06

18 Ağustos 2021

androidx.benchmark:benchmark-*:1.1.0-alpha06 yayınlandı. 1.1.0-alpha06 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • Yerel olarak test/profil çıkarma işlemi sırasında yineleme sayısının manuel olarak geçersiz kılınmasına olanak tanımak için androidx.benchmark.iterations araç bağımsız değişkeni eklendi. (6188be, b/194137879)

Hata Düzeltmeleri

  • API 29 ve sonraki sürümlerde varsayılan örnekleme profili oluşturucu olarak Simpleperf'e geçildi. (Ic4b34, b/158303822)

Bilinen Sorunlar

  • CompilationMode.BaselineProfile henüz geliştirme aşamasında olan bir hizmettir. Bir profilin ne kadar iyi olduğunu belirlemek için şimdilik bu verileri kullanmaktan kaçının.

Sürüm 1.1.0-alpha05

4 Ağustos 2021

androidx.benchmark:benchmark-*:1.1.0-alpha05 yayınlandı. 1.1.0-alpha05 sürümü bu kaydetmeleri içerir.

1.1.0-alpha04, belirli bir kilitlenme nedeniyle yayından önce iptal edildi. b/193827052

API Değişiklikleri

  • am start aracılığıyla başlatmayı çağırmak için startActivityAndPending anahtar kelimesi değiştirildi. Bu durum, her ölçüm iterasyonunun süresini yaklaşık 5 saniye kadar kısaltır (artık desteklememek kaydıyla) amaç ayrıştırılabilir. (I5a6f5, b/192009149

Hata Düzeltmeleri

  • Termal gaz algılamanın agresifliğini azaltın ve kısıtlamalar sık sık algılanırsa referans değerini yeniden hesaplar. (I7327b)
  • FrameTimingMetric'i, Android S beta sürümünde (Ib60cc, b/193260119) çalışacak şekilde düzeltir
  • CompilationMode.BaselineProfile özelliğini daha iyi desteklemek amacıyla hedef uygulamayı zorla durdurulmuş durumdan çıkarmak için EmptyActivity kullanın. (Id7cac, b/192084204)
  • İzleme dosyası uzantısı, platform standardıyla eşleşecek şekilde .perfetto-trace olarak değiştirildi. (I4c236, b/174663039)
  • StartupTimingMetric artık "fullDrawnMs" çıktısı veriyor. metrik kullanabilirsiniz. Alıcı: uygulamanız için bu metriği tanımlayın, ilk içeriğiniz hazır olur (ör. ilk liste öğeleriniz, veritabanından veya ağdan yüklenir. (reportFullyDrawn yöntemi kullanılabilir) ComponentActivity'de derleme sürümü kontrolleri olmadan). Testinizin metriği yakalayacak kadar uzun süre çalışması gerektiğini unutmayın (startActivityAnd Wait, reportFullyDrawn'ı beklemez). (If1141, b/179176560)
  • İzlere Ui meta verileri ekleme maliyetini 50+ ms kadar azaltın (Ic8390, b/193923003)
  • Durma sırasında yoklama sıklığı önemli ölçüde arttı etkisinin azaltılmasına neden olabilir, ör. startup karşılaştırma çalışma zamanı: %30+ (Idfbc1, b/193723768)

Sürüm 1.1.0-alpha03

16 Haziran 2021

androidx.benchmark:benchmark-*:1.1.0-alpha03 yayınlandı. 1.1.0-alpha03 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

Hata Düzeltmeleri

  • Karşılaştırma hatalarını gizlemek için örnek Gradle kodu, .gradle.kts kullanıcılarını da destekleyen bir söz dizimine sahip, desteği sonlandırılmamış bir API kullanacak şekilde güncellendi.

    Örnek:

    testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
    

Sürüm 1.1.0-alpha02

18 Mayıs 2021

1.1.0-alpha02 karşılaştırma sürümü, karşılaştırma için büyük bir bileşen, Macrobenchmark sunuyor. macrobenchmark, CPU döngülerini ölçmenize olanak tanıyan karşılaştırma özelliğinin yanı sıra başlatma ve kaydırma gibi uygulama etkileşimlerinin tamamını ölçmenize ve izleri yakalamanıza olanak tanır. Daha fazla bilgi için kitaplık dokümanlarına bakın.

androidx.benchmark:benchmark-*:1.1.0-alpha02 yayınlandı. 1.1.0-alpha02 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

Macrobenchmark yapıları eklendi (androidx.benchmark:benchmark-macro-junit4 ve androidx.benchmark:benchmark-macro)

  • Uygulamanızdan, yerel olarak veya CI'da başlangıç, kaydırma/animasyon performans metriklerini yakalayın
  • Android Studio içinden izleri yakalayın ve inceleyin

Hata Düzeltmeleri

  • Android 12'de çıkış diziniyle ilgili geçici kabuk izinleri sorunu (Not: Etkilenen cihazlarda çıkış dosyalarını yakalamaya devam etmek için Android Studio'yu Arctic Fox'a (2020.3.1), Android Gradle Eklentisi'ni 7.0.0 canary'ye ve Android Studio'yu da Arctic Fox'a (2020.3.1) güncellemenizi gerektirebilir). (Icb039)
  • Karşılaştırma Eklentisi'nde yapılandırma önbelleğe alma desteği (6be1c1, b/159804788)
  • Basitleştirilmiş dosya çıkışı: requestLegacyExternalStorage=true gerektirmeyen bir dizinde varsayılan olarak etkindir (8b5a4d, b/172376362)
  • Kitaplık yazdırma logcat uyarılarını düzeltir Mevcut olmadığı platform sürümlerinde JIT iş parçacığı. (I9cc63, b/161847393)
  • Okuma cihazı maksimum frekansı için düzeltme yapıldı. (I55c7a)

Sürüm 1.1.0-alpha01

10 Haziran 2020

androidx.benchmark:benchmark-common:1.1.0-alpha01, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01 ve androidx.benchmark:benchmark-junit4:1.1.0-alpha01 serbest bırakıldı. Sürüm 1.1.0-alpha01 bu kaydetmeleri içerir.

1.1'deki Yeni Özellikler

  • Ayırma Metriği - Karşılaştırmalar, artık hazırlık ve zamanlamadan sonra ayırma sayılarını yakalayan ek bir aşama uygulamaktadır. Ayırma işlemleri, platformun daha eski sürümlerinde performans sorunlarına neden olabilir (O'da 140 ns, M'de 8 ns'e dönüşmüştür; Nexus5X'te ölçülmüştür kilitli saatler vardır). Bu metrik, Android Studio konsol çıkışının yanı sıra
  • Profil oluşturma desteği: Artık kodunuzun neden yavaş çalıştığını incelemek amacıyla karşılaştırma çalıştırması için profil oluşturma verilerini yakalayabilirsiniz. Karşılaştırma, ART'tan yöntem izlemenin veya yöntem örneklemenin yakalanmasını destekler. Bu dosyalar, Android Studio'daki Profil Aracı ile Dosya > Aç.
  • Comparison Gradle eklentisi artık daha basit kurulum için varsayılan ayarlar sunuyor:
    • testBuildType, kod kapsamı yerleşik olarak bulunan bağımlılıkları kullanmaktan kaçınmak için varsayılan olarak kullanıma sunulacak şekilde ayarlanmıştır. BuildType ayrıca varsayılan derleme Türü olarak yapılandırılır. Bu sayede, Android Studio bir projeyi ilk kez açarken doğru derleme varyantını otomatik olarak seçebilir. (b/138808399)
    • signingConfig.debug, varsayılan imzalama yapılandırması olarak kullanılır (b/153583269)

** Hata Düzeltmeleri **

  • Her karşılaştırmanın ilk ölçümünün diğerlerine göre yapay olarak daha yüksek olduğu ısınma geçişi genel giderleri önemli ölçüde azaldı. Bu sorun, çok küçük karşılaştırmalarda (1 mikrosaniye veya daha kısa) daha belirgindir. (b/142058671)
  • Komut satırından çalıştırıldığında her karşılaştırma için yazdırılan InstrumentationResultParser hatası düzeltildi. (I64988, b/154248456)

Bilinen Sorunlar

  • Karşılaştırma'nın komut satırı, gradle çağrıları sonuçları doğrudan yazdırmaz. Studio üzerinden çalıştırarak veya sonuçlar için JSON çıkış dosyasını ayrıştırarak bu sorunu çözebilirsiniz.
  • Karşılaştırma raporu, "android" veya "indir" (büyük/küçük harfe duyarlı değil) ile biten bir applicationId'ye sahip bir uygulamanın yüklü olduğu cihazlardan rapor alınamıyor. Bu sorunla karşılaşan kullanıcıların Android Gradle Eklentisi'ni 4.2-alpha01 veya sonraki bir sürüme yükseltmesi gerekir.

Sürüm 1.0.0

Karşılaştırma Sürümü 1.0.0

20 Kasım 2019

androidx.benchmark:benchmark-common:1.0.0, androidx.benchmark:benchmark-gradle-plugin:1.0.0 ve androidx.benchmark:benchmark-junit4:1.0.0, 1.0.0-rc01 arasında herhangi bir değişiklik yapılmadan yayınlandı. 1.0.0 sürümü bu kaydetmeleri içerir.

1.0.0'ın temel özellikleri

Karşılaştırma kitaplığı, uygulama kodu için performans karşılaştırmaları yazmanıza ve hızlı bir şekilde sonuç almanıza olanak tanır.

Derleme ve çalışma zamanı yapılandırma sorunlarını önler, ayrıca cihaz performansını dengeleyerek ölçümlerin doğru ve tutarlı olmasını sağlar. Kodların zaman içindeki performansını gözlemlemek ve regresyonları önlemek için karşılaştırmaları doğrudan Android Studio'da veya Sürekli Entegrasyon'da çalıştırın.

Önemli özellikler şunlardır:

  • Saat sabitleme
  • Otomatik iş parçacığı önceliklendirme
  • RecyclerView Örneği gibi kullanıcı arayüzü performans testi desteği
  • JIT uyumlu ısınma ve döngü
  • İşleme sonrası için JSON karşılaştırma çıkışı

Sürüm 1.0.0-rc01

23 Ekim 2019

androidx.benchmark:benchmark-common:1.0.0-rc01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01 ve androidx.benchmark:benchmark-junit4:1.0.0-rc01 serbest bırakıldı. Sürüm 1.0.0-rc01 bu kaydetmeleri içerir.

Yeni özellikler

  • Karşılaştırmalara sistem izleme izleme eklendi

Hata düzeltmeleri

  • Öncelik düzeyinin azaltılması nedeniyle JIT'in ısınmadan önce tamamlanmamasıyla ilgili metrik kararsızlığı sorunu düzeltildi (b/140773023)
  • Android Gradle Plugin 3.5 ve 3.6 için birleştirilmiş JSON çıkış dizini

Sürüm 1.0.0-beta01

9 Ekim 2019

androidx.benchmark:benchmark-common:1.0.0-beta01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01 ve androidx.benchmark:benchmark-junit4:1.0.0-beta01 serbest bırakıldı. Sürüm 1.0.0-beta01 bu kaydetmeleri içerir.

Yeni özellikler

  • Bir karşılaştırmadan diğerine sızıntıya kadar olan bellek basıncını azaltmak için her ısınma işleminden önce atık toplama işlemi çalıştırın (b/140895105)

Hata düzeltmeleri

  • Deneysel API kullanılmadığında Java kodunun doğru şekilde lint hataları üretmesi için androidx.annotation:android-experimental-lint bağımlılığı eklendi. Bu hata, Kotlin çağrıları için Kotlin deneysel ek açıklaması tarafından sağlanana benzer.
  • Artık AGP'nin veri kopyalamayı ne zaman işleyeceğini bilmek için Android Gradle Plugin 3.6'da çıkış için additionalTestOutputDir araç bağımsız değişkeninin kullanımını doğru şekilde algılıyor.
  • -1 (b/141945670) dosyasını doğru şekilde yazdırmak için algılanmayan saat frekansını JSON biçiminde düzeltin.

Sürüm 1.0.0-alpha06

18 Eylül 2019

androidx.benchmark:benchmark-common:1.0.0-alpha06, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06 ve androidx.benchmark:benchmark-junit4:1.0.0-alpha06 serbest bırakıldı. 1.0.0-alpha06 sürümü bu kaydetmeleri içerir.

Yeni özellikler

  • Test çalıştırıcı için eski paketin yanlış kullanılmasına ilişkin bir kontrol eklendi. Bu kontrol artık daha faydalı bir hata mesajı verir.

API değişiklikleri

  • ExperimentalAnnotationReport adlı deneysel ek açıklama artık doğru bir şekilde herkese açık hale getirildi. Deneysel BenchmarkState#report API kullanımı için artık bu ek açıklama gerekli

Sürüm 1.0.0-alpha05

5 Eylül 2019

androidx.benchmark:benchmark-common:1.0.0-alpha05, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05 ve androidx.benchmark:benchmark-junit4:1.0.0-alpha05 serbest bırakıldı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

API değişiklikleri

  • BenchmarkState.reportData API deneysel olarak işaretlendi

Hata düzeltmeleri

  • cut veya expr kabuk yardımcı programları eksik olan cihazlarda başarısız olabilecek saat kilitleme komut dosyası sorunu düzeltildi.
  • Su yardımcı programının -c işaretini desteklemeyen eski bir sürümüyle rootlanmış cihazlarda takılmasına neden olan ./gradlew lockClocks göreviyle ilgili sorun düzeltildi.

Sürüm 1.0.0-alpha04

7 Ağustos 2019

androidx.benchmark:benchmark-common:1.0.0-alpha04, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04 ve androidx.benchmark:benchmark-junit4:1.0.0-alpha04 serbest bırakıldı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Hem farklı derleme sistemleriyle (Bazel veya Buck gibi) hem de CI'da çalışırken Karşılaştırma kitaplığının Gradle olmadan nasıl kullanılacağı hakkında yeni belgeler de eklendi. Daha fazla bilgi için Gradle olmadan karşılaştırma oluşturma ve Sürekli Entegrasyon'da karşılaştırmalar çalıştırma başlıklı makaleleri inceleyin.

Yeni özellikler

  • Gradle eklentisi
    • Artık test kapsamını otomatik olarak devre dışı bırakır ve AndroidBenchmarkRunner değerini varsayılan olarak ayarlar (b/138374050)
    • Karşılaştırmaları çalıştırırken ve AGP 3.6 ve sonraki sürümleri kullanırken AGP tabanlı yeni veri kopyalama desteği eklendi
  • JSON biçimi eklemeleri
    • Çıkış toplam karşılaştırma testi çalıştırma süresi (b/133147694)
    • Ad dizesi (örneğin, @Parameters(name = "size={0},depth={1}")) kullanan @Parameterized karşılaştırmaları artık JSON çıktısında (b/132578772) her karşılaştırma için parametre adlarını ve değerlerini gösterir
  • Prova modu (b/138785848)
    • "Prova" eklendi özelliğini kullanmanızı öneririz. Bu faydalı olabilir, ör. örneğin, bozuk olup olmadıklarını kontrol etmek için gönderim öncesi karşılaştırmaları hızlı bir şekilde çalıştırabilirsiniz.

API değişiklikleri

  • Modül yapısı değişti ve kitaplık bölündü (b/138451391)
    • benchmark:benchmark-junit4, JUnit bağımlılığı olan AndroidBenchmarkRunner ve BenchmarkRule sınıfları içeriyor. Bunların her ikisi de androidx.benchmark.junit4 paketine taşınmış
    • benchmark:benchmark-common, ComparisonState API'si de dahil olmak üzere mantığın geri kalanını içeriyor
    • Bu ayrım, kitaplığın gelecekte JUnit4 API'leri olmadan karşılaştırmayı desteklemesini sağlayacak
  • Yapılandırma uyarıları artık hata olarak kabul ediliyor ve testin kilitlenmesine neden olacak (b/137653596)
    • Bu, özellikle CI'da doğru ölçümleri daha da teşvik etmek için yapılır
    • Bu hatalar, araç bağımsız değişkeniyle tekrar uyarılara indirgenebilir. Örneğin: -e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"

Hata düzeltmeleri

  • Q cihazlarda harici depolama alanına yazarken karşılaşılan hatalar, sorunun nasıl çözüleceğine dair önerilerle birlikte daha açıklayıcı mesajlar sağlar
  • Ekranlar kapalıyken başarısız olmak yerine karşılaştırma çalışırken ekranlar otomatik olarak açılır

Harici katkılar

  • JSON çıkış iyileştirmelerine katkıda bulunduğu ve ekran kapatma sorunlarının düzeltilmesine katkıda bulunduğu için Sergey Zakharov'a teşekkür ederiz.

Sürüm 1.0.0-alpha03

2 Temmuz 2019

androidx.benchmark:benchmark:1.0.0-alpha03 ve androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03 serbest bırakıldı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Yeni özellikler

  • Tam JSON raporunda karşılaştırma başına termal kısıtlama nedeniyle uyku süresini gösterin

Hata düzeltmeleri

  • Android eklentilerinden ve Android blokundan sonra Gradle eklentisinin uygulanması gerekmemelidir
  • Kapsamlı depolama alanı kullanan Android 10 cihazlarda karşılaştırma raporları desteği eklendi

Sürüm 1.0.0-alpha02

6 Haziran 2019

androidx.benchmark:1.0.0-alpha02 ve androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02 yayınlandı. İlgili içeriği oluşturmak için kullanılan Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

JSON şemasını bir API olarak ele aldığımızı unutmayın. Aynı planı takip etmeyi, diğer API'ler gibi kararlılık kısıtlamaları: bir kez kararlı (çok nadir istisnalar vardır) beta sürüm olup son sürümde düzeltilmiştir, ana sürümlerdeki değişiklikler/kaldırma işlemleri.

API değişiklikleri

  • JSON şeması yenilendi. JSON şemasında yapılacak diğer değişiklikler muhtemelen eklemelerle sınırlıdır:

    • Sonuç nesne yapısı, ek metrik gruplarını destekleyecek şekilde yeniden düzenlendi gelecekte (b/132713021)
    • Cihaz ve derleme bilgileri gibi test çalıştırması bağlamı bilgileri eklendi saatlerin kilitli olup olmadığına, üst düzey nesneye (b/132711920)
    • Zaman metriği adlarının adında "ns" karakteri bulunuyor (b/132714527)
    • Bildirilen metrik başına eklenen ek istatistikler (maksimum, ortanca, minimum) ve basitleştirilmiş "nanos" kaldırıldı özet istatistik (b/132713851)
  • XML çıkışı kaldırıldı (b/132714414)

  • Termal kısıtlama algılaması BenchmarkState.reportData API'den kaldırıldı (b/132887006)

Hata düzeltmeleri

  • ./gradlew lockClocks adlı uygulamanın son işletim sistemi kullanılan bazı cihazlarda takılmaması düzeltildi (b/133424037)
  • Emülatör için kısıtlama algılama devre dışı bırakıldı (b/132880807)

Sürüm 1.0.0-alpha01

7 Mayıs 2019

androidx.benchmark:benchmark:1.0.0-alpha01 yayınlandı. Yapılan kaydetmeler bu sürümde kullanılabiliyor burada bulabilirsiniz.