Karşılaştırma

Android Studio'da kodunuzun performansını doğru şekilde ölçün.
Son Güncelleme Kararlı Sürüm Sürüm Adayı Beta Sürümü Alfa Sürümü
11 Aralık 2024 1.3.3 - - 1.4.0-alpha06

Bağımlılıkları beyan etme

Benchmark'a bağımlılık eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.

Makro karşılaştırma

Projenizde Macrobenchmark'i kullanmak için macrobenchmark modülünüzün build.gradle dosyasına aşağıdaki bağımlılıkları ekleyin:

Eski

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

Kotlin

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

Mikro karşılaştırma

Projenizde Microbenchmark'ı kullanmak için microbenchmark modülünüzün build.gradle dosyasına aşağıdaki bağımlılıkları ekleyin:

Eski

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

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

Kotlin

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

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

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

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

Eski

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

Kotlin

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

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

Eski

plugins {
  id 'androidx.benchmark'
}

Kotlin

plugins {
    id("androidx.benchmark")
}

Geri bildirim

Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni bir kitaplık oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oy verebilirsiniz.

Yeni sorun oluşturma

Daha fazla bilgi için Sorun İzleyici belgelerine bakın.

Sürüm 1.4

Sürüm 1.4.0-alpha06

11 Aralık 2024

androidx.benchmark:benchmark-*:1.4.0-alpha06 yayınlanır. 1.4.0-alpha06 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Studio'da vurgulama/ayrıştırma özelliği çalışmadığı için PerfettoTraceProcessor.Session.query() içinde @Language("sql") kullanımı kaldırıldı. (Idc2fa, b/377733398)

Hata Düzeltmeleri

  • Bu kitaplıkta artık tür kullanımı olan JSpecify nullness ek açıklamaları kullanılmaktadır. Kotlin geliştiricileri, doğru kullanımı zorunlu kılmak için aşağıdaki derleyici bağımsız değişkenlerini kullanmalıdır: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (I46810, b/326456246)
  • ArtMetric, sınıf yüklemesini (init değil) bildirecek şekilde düzeltildi ve çalışma zamanı davranışını netleştirmek için dokümanlar iyileştirildi. (I9915c)
  • Android Çok Kullanıcılı'da, komutları yalnızca rootlanmış cihazlarda root olarak yürütün. (I88b44)

Sürüm 1.4.0-alpha05

13 Kasım 2024

androidx.benchmark:benchmark-*:1.4.0-alpha05 yayınlanır. 1.4.0-alpha05 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • API 34 ve sonraki sürümlerde CompilationMode.None() etkinliğinin, ilk ve en kötü performansı temsil etmeyen tutarsız bir performansa sahip olduğu sorun düzeltildi. Bu, ART'ın derleme durumunun verify, ilk çalıştırmadan kısa bir süre sonra uygulamaları kısmen derlemesine (yalnızca sınıf yüklemeyi etkiler) olanak tanıyan bir platform değişikliğini atlamayı sağlar. (Ie48d0)
  • Perfetto izlemesinde süreç adının kısaltılması nedeniyle yerleşik makro karşılaştırma metriklerinden ölçüm raporlanmayan (özellikle kısa) izlemelerin yakalanmasına neden olan sorun düzeltildi. Artık macrobenchmark, beklenen paket adına ek olarak tüm yerleşik sorgularda kısaltılmış paket adını arayarak bu sorunu gideriyor. Özel TraceMetric uygulamalarının veya PerfettoSession.query'u doğrudan çağıran diğer öğelerin, Perfetto sorgusundaki process.name LIKE "$packageName" değerini (process.name LIKE "$packageName" OR process.name LIKE "$(packageName.takeLast(15))") olarak değiştirerek aynı davranışı uygulayabileceğini unutmayın. (I5bf01, b/377565760)

Sürüm 1.4.0-alpha04

30 Ekim 2024

androidx.benchmark:benchmark-*:1.4.0-alpha04 yayınlanır. 1.4.0-alpha04 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • (Deneysel) İkincil bir kullanıcıya yüklenen uygulamalarda (ör. başsız Android Auto cihazlardaki uygulamalar) referans profil oluşturma ve karşılaştırma işlemlerini etkinleştirin. Bu destek bazı senaryolarda test edilmiştir ancak sizin için işe yaramazsa lütfen bir hata kaydı göndererek bize bildirin. (I9fcbe, b/356684617, b/373641155)

Hata Düzeltmeleri

  • isProfileable artık karşılaştırma derlemelerinde her zaman geçersiz kılınır ve isDebuggable da hem karşılaştırma hem de nonMinified (temel profil yakalama) derlemelerinde her zaman geçersiz kılınır. (I487fa, b/369213505)
  • API 28'den önceki bazı fiziksel cihazlarda derleme algılamasını düzeltir. json context.compilationMode'ü ve androidx.benchmark.requireAot=true'un davranışını etkiler (artık yanlış şekilde atılmaz) (Ic3e08, b/374362482)
  • CpuEventCounter metriklerinde geçersiz ölçümler gözlemlenirse (ör. instructions/cpucycles==0) hata atma (I8c503)

Sürüm 1.4.0-alpha03

16 Ekim 2024

androidx.benchmark:benchmark-*:1.4.0-alpha03 yayınlanır. 1.4.0-alpha03 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Makro karşılaştırma: Profil kapsamını veya genel Android RunTime performansını incelemek için kullanılabilen ArtMetric değerini ekler. JIT, sınıf başlatma (mevcut olduğunda) ve sınıf doğrulamasının sayısını ve toplam süresini yakalar. Ayrıca, CaptureInfo değerini varsayılan olarak isteğe bağlı ART ana hat sürümünü içerecek şekilde değiştirir. (I930f7)
  • Belirli bir karşılaştırma çalışmasındaki kararlılığı göstermek için Karşılaştırma JSON çıkışına coefficientOfVariation ekleyin. (Ib14ea)

Hata Düzeltmeleri

  • AVD cihazında boşluk olduğunda CollectBaselineProfileTask düzeltildi. (Ia0225, b/371642809)
  • StartupMode.COLD istisnalarından kaynaklanan hatalar için varsayımsal düzeltme: Package <packagename> must not be running prior to cold start!. Artık MacrobenchmarkScope.killProcess() (StartupMode.COLD davranışını uygulamak için her iterasyondan önce çalıştırılan dahil), uygulamanın tüm işlemlerinin çalışmayı durdurduğunu doğrulamak için bekler. (I60aa6, b/351582215)
  • Bazı köklü emülatörlerde UNLOCKED_ hatasının gösterilmesine neden olan sorun düzeltildi. (Ic5117)
  • Bu kitaplıkta artık tür kullanımı olan JSpecify nullness ek açıklamaları kullanılmaktadır. Kotlin geliştiricileri, doğru kullanımı zorunlu kılmak için aşağıdaki derleyici bağımsız değişkenlerini kullanmalıdır: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (I7104f, b/326456246)

Sürüm 1.4.0-alpha02

2 Ekim 2024

androidx.benchmark:benchmark-*:1.4.0-alpha02 yayınlanır. 1.4.0-alpha02 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Gradle görevleri lockClocks ve unlockClocks, üst düzeyde kullanılabilir olmak yerine karşılaştırma projelerinde kullanılabilir hale getirildi. Proje izolasyonunu bozmadan bunları üst düzey işlemler olarak kaydettirmenin maalesef bir yolu olmadığı için bu değişiklik gerekliydi. (I02b8f, b/363325823)

Hata Düzeltmeleri

  • BaselineProfileRule artık, blokun sonunda çalışan her işleme sinyal göndererek profilleri dökmek için çok işlemli uygulamaların profillerini topluyor. Profil tabanlı bir derleme, yayınlanacak bir işlem hiçbir zaman başarılı bir şekilde bulamazsa derleme başarısız olur. Bunun nedeni, profil verilerinin derlemede bulunmasının beklenmemesidir. Ayrıca, döküm bekleme süresini kontrol etmek için bir enstrümantasyon bağımsız değişkeni eklendi: androidx.benchmark.saveProfileWaitMillis (I0f519, b/366231469)
  • Karşılaştırmadan 1.3.2: Firebase Test Lab'in (FTL) Temel Profil Gradle Eklentisi'nden Temel Profil veya Makro Karşılaştırma sonuç dosyalarını çekememesi düzeltildi. (I2f678, b/285187547)

FTL'yi kullanmak için eklentiyi, aşağıdakilerle birlikte eklenti bloğundaki temel profil modülüne uygulayın:

  plugins {
      ...
      id("com.google.firebase.testlab")
  }

Ardından Firebase Test Lab'i aşağıdakilerle yapılandırın:

  firebaseTestLab {

      // Credentials for FTL service
      serviceAccountCredentials.set(file("credentials.json"))

      // Creates one or more managed devices to run the tests on.
      managedDevices {
          "ftlDeviceShiba34" {
              device = "shiba"
              apiLevel = 34
          }
      }

      // Ensures the baseline profile is pulled from the device.
      // Note that this will be automated as well later with aosp/3272935.
      testOptions {
          results {
              directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
          }
      }
  }

Ayrıca, oluşturulan FTL cihazının temel profil uzantısına eklenmesi gerekir:

  baselineProfile {
      managedDevices += "ftlDeviceShiba34"
      useConnectedDevices = false
  }

Sürüm 1.4.0-alpha01

18 Eylül 2024

androidx.benchmark:benchmark-*:1.4.0-alpha01 yayınlanır. 1.4.0-alpha01 sürümü bu taahhütleri içerir.

Yeni Özellik: Uygulama Başlatma Analizleri

  • Uygulama başlatma analizlerinin ilk sürümü Macrobenchmark'te etkinleştirilebilir. (09fae38)

Başlangıç karşılaştırmasında etkinleştirmek için:

  @Test
  fun startup {
      macrobenchmarkRule.measureRepeated(
          
          packageName = "com.example.my.application.id"
          metrics = listOf(StartupTimingMetric()),
          iterations = 5,
          startupMode = StartupMode.COLD,
          compilationMode = CompilationMode.None(),
          experimentalConfig = ExperimentalConfig(startupInsightsConfig = StartupInsightsConfig(isEnabled = true))
          ) {
          scope.startActivityAndWait(...)
      }
  }

Ardından, başlatma karşılaştırmanızı çalıştırdığınızda, yaygın sorunları aramak için izleme analiz edilir ve karşılaştırma sekmesindeki Studio test çıkışına metrikler eklendikten sonra sorunlar yazdırılır. Örneğin:

StartupBenchmark_startup[startup=COLD,compilationMode=None]
├── Metrics
│   ├──   timeToFullDisplayMs                min  1,147.2,   median  1,208.8,   max  1,307.4
│   └──   timeToInitialDisplayMs             min  1,147.2,   median  1,208.8,   max  1,307.4
├── App Startup Insights
│   ├── App in debuggable mode (expected: false)
│   │   └── seen in iterations: 0(true) 1(true) 2(true) 3(true) 4(true) 5(true) 6(true) 7(true) 8(true) 9(true)
│   ├── Potential CPU contention with another process (expected: < 100000000ns)
│   │   └── seen in iterations: 4(105022546ns)
│   └── Main Thread - Binder transactions blocked (expected: false)
│       └── seen in iterations: 7(true)
└── Traces
    └── Iteration 0 1 2 3 4 5 6 7 8 9

Bu özellik üzerinde çalışmalarımız devam ediyor. Belgelerde ve genişletilebilirlikte yapılacak iyileştirmeler için geri bildirimlerinizi bekliyoruz.

Yeni Özellikler

  • Tüm temel profil uyarılarını bastırmak için androidx.baselineprofile.suppressWarnings gradle mülkü eklendi. (314153a)
  • Mikro test metrikleri artık Perfetto izlemelerinde sayaç olarak gösteriliyor. (3214854)
  • JIT'yi devre dışı bırakma (root / çalışma zamanı yeniden başlatma gerektirir) ve cihaz performansı/test durumunu sıfırlama için deneysel komut dosyaları ekleyin. Bunlar şu anda gradle görevleri olarak yayınlanmıyor. (7c3732b)
  • Emülatörde çalıştırırken testleri atlamak için karşılaştırma bağımsız değişkeni eklendi. automaticGenerationDuring derlemesi etkinleştirildiğinde karşılaştırmalar, temel profil oluşturmayı da tetikler. Emülatör kullanılıyorsa bu işlem başarısız olur. Yeni skipBenchmarksOnEmulator bağımsız değişkeni sayesinde testi atlayabiliriz. (0c2ddcd)
  • Performans etkinleştirme mantığının API 23 ve sonraki sürümlerde çalışacak şekilde değiştirilmesi (2550048)

API Değişiklikleri

  • MacrobenchmarkRule.measureRepeated() için mevcut deneysel PerfettoConfig bağımsız değişkeni yeni ExperimentalConfig nesnesine taşındı.

Hata Düzeltmeleri

  • lockClocks.sh yeniden deneme sayısını artırma (99e9dac)
  • Mevcutsa nonMinified ve karşılaştırma derleme türleri oluşturmayın. Bir hata nedeniyle, nonMinified ve karşılaştırma derleme türleri mevcut olsa bile yeniden oluşturulacaktı. (e75f0a5)
  • TraceSectionMetric sonuçlarından sonlandırılmayan dilimleri yoksayabilirsiniz. (a927d20)
  • sdk_ ön ekini dikkate alacak şekilde emülatör kontrolü iyileştirildi. (1587de8)
  • Çalışmayan paketleri FrameTimingGfxInfoMetric'te temizlenmiş olarak değerlendirin. (35cc79c)
  • androidx.benchmark.cpuEventCounter'ün, talimat dışı etkinlikler için bozuk değerler üretmesi sorunu düzeltildi. (06edd59)
  • resumeTiming/runWithTimingDisabled'ü, metrik öncelik sırasına uyacak şekilde düzeltin ve düşük öncelikli metriğin duraklatılması/devam ettirilmesinin yüksek öncelikli metrik sonuçları üzerindeki etkisini önemli ölçüde azaltın. Örneğin, cpuEventCounter.enable enstrümantasyon bağımsız değişkeni aracılığıyla CPU performans sayaçları kullanılıyorsa duraklatma/devam ettirme işlemi gerçekleştiğinde timeNs artık önemli ölçüde azaltılmaz. (5de0968)

Sürüm 1.3

Sürüm 1.3.3

16 Ekim 2024

androidx.benchmark:benchmark-*:1.3.3 yayınlanır. 1.3.3 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • AVD cihazında boşluk olduğunda CollectBaselineProfileTask düzeltildi (Ia0225, b/371642809)

1.3.2 sürümü

2 Ekim 2024

androidx.benchmark:benchmark-*:1.3.2 yayınlanır. 1.3.2 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Firebase Test Lab'ın (FTL) Temel Profil Gradle Eklentisi'nden Temel Profil veya Makro Karşılaştırma sonucu dosyalarını çekememesi sorunu düzeltildi. (I2f678, b/285187547)

FTL'yi kullanmak için eklentiyi, aşağıdakilerle birlikte eklenti bloğundaki temel profil modülüne uygulayın:

  plugins {
      ...
      id("com.google.firebase.testlab")
  }

Ardından Firebase Test Lab'i aşağıdakilerle yapılandırın:

  firebaseTestLab {

      // Credentials for FTL service
      serviceAccountCredentials.set(file("credentials.json"))

      // Creates one or more managed devices to run the tests on.
      managedDevices {
          "ftlDeviceShiba34" {
              device = "shiba"
              apiLevel = 34
          }
      }

      // Ensures the baseline profile is pulled from the device.
      // Note that this will be automated as well later with aosp/3272935.
      testOptions {
          results {
              directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
          }
      }
  }

Ayrıca, oluşturulan FTL cihazının temel profil uzantısına eklenmesi gerekir:

  baselineProfile {
      managedDevices += "ftlDeviceShiba34"
      useConnectedDevices = false
  }

1.3.1 sürümü

18 Eylül 2024

androidx.benchmark:benchmark-*:1.3.1 yayınlanır. 1.3.1 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Tüm temel profil uyarılarını engellemek için androidx.baselineprofile.suppressWarnings Gradle özelliği eklendi (I7c36e, b/349646646)
  • Temel Profil Gradle Eklentisi, sarmalayıcı oluşturmak yerine uygulama tarafından oluşturulmuşsa önceden var olan nonMinified… ve benchmark… öğelerini kullanacak şekilde düzeltildi. (Ia8934, b/361370179)
  • Emülatörlerde automaticGenerationDuringBuild etkinleştirildiğinde java.lang.AssertionError: ERRORS (not suppressed): EMULATOR düzeltildi. Testi atlamak için yeni bağımsız değişken kullanılır. (If3f51, b/355515798)
  • Mikro karşılaştırma küçültme - org.junit.runner.notification.RunListener alt sınıflarını karşılaştırma kitaplığı proguard'da tutma (Ic8ed5, b/354264743)
  • TraceSectionMetric değerini, sonlandırılmayan dilimleri yoksayacak şekilde düzeltin. Daha önce bu öğelerin, toplama veya minimum süreyi bulma sırasında -1 süreye sahip olduğu kabul ediliyordu. (If74b7)
  • FrameTimingGfxInfoMetric'te, işlem zaten çalışmıyorsa metriğin başlatılmasının kilitlenmesine neden olan sorun düzeltildi. (I6e412)

1.3.0 sürümü

21 Ağustos 2024

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

1.2.0 sürümünden bu yana mikro karşılaştırma değişiklikleri

  • Yöntem izleme, çoğu cihazda çalıştırılan mikro karşılaştırmalarda varsayılan olarak açıktır.
    • Yöntem izleme, ölçümlerden sonra ayrı bir aşama olarak çalışır. Bu, tek bir karşılaştırma çalıştırmasında hem doğru ölçümlerin hem de yöntem izlemelerin çıktısını alınmasını sağlar.
    • Bazı Android OS ve ART sürümlerindeki yöntem izleme, sonraki ölçüm aşamalarını etkiler. Bu sürümlerde yöntem izleme varsayılan olarak devre dışıdır ve Studio çıkışına bir uyarı yazdırılır.
  • Ana iş parçacığı karşılaştırmaları ve ANR'ler
    • Uzun süreler boyunca çalışırken ANR'leri önlemek için kullanıcı arayüzü iş parçacığı karşılaştırmaları (ör. Oluştur/Görüntüle kullanıcı arayüzleriyle etkileşimde bulunanlar) için measureRepeatedOnMainThread eklendi.
    • ANR'den kaçınma son tarihinin aşılması bekleniyorsa yöntem izlemeleri atlanır. Bu davranışı devre dışı bırakmak için androidx.benchmark.profiling.skipWhenDurationRisksAnr değerini false olarak ayarlayın (ANR'ler uzun CI çalıştırmalarında soruna neden olabileceğinden CI çalıştırmaları için önerilmez).
  • Sadeleştirme
    • Küçükleştirme etkinken mikro karşılaştırmayı iyileştirmek için yerleştirilmiş ProGuard kuralları
    • Kitaplık modülünde küçültme/R8 özelliği için AGP 8.3 gerekir ve build.gradle'ınızdaki android.buildTypes.release.androidTest.enableMinification aracılığıyla etkinleştirilebilir.
    • Ölü kodun kaldırılmasını önlemek için deneysel BlackHole.consume() API eklendi (If6812, b/286091643)
  • Metrikler
    • Deneysel CPU etkinlik sayıcı özelliği (perf_event_open'ten alınan metrikler, platformun çoğu sürümünde root erişimi gerektirir), InstrumentationArgument androidx.benchmark.cpuEventCounter.enable üzerinden erişim (true olarak ayarlanabilir) ve androidx.benchmark.cpuEventCounter.events örneğin (Instructions,CpuCycles) olarak ayarlanabilir. Bu özellik bazı userdebug emülatörlerinde desteklenmelidir ancak destek, mevcut tüm emülatörlerde test edilmemiştir

1.2.0 sürümünden bu yana MACRObenchmark değişiklikleri

  • Makro karşılaştırmalar için yöntem izlemede kapsamlı iyileştirme.
    • Artık yöntem izlemeleri, measureBlock süresine göre kapsamlandırılıyor ve süreç birden çok kez başlatılırsa birden çok oturum yakalanabiliyor.
    • Daha önce yöntem izleme yalnızca StartupMode.COLD karşılaştırmaları için çalışır ve hedef işlemi yeniden başlatmayan measureBlocks için hiçbir şey yakalamazdı
    • Sabit yöntem izlerinin makro karşılaştırmada temizlenmesi sayesinde yöntem izleri daha yavaş cihazlarda bile tamamen yakalanır ve geçerli olur. (I6349a, b/329904950)
  • İşlem sonlandırılırken warmUp ölçümlerinin daha doğru olması için her bir warmUp iterasyonunda ART profilini doğru şekilde boşaltma.CompilationMode.Partial(warmup=N) (I17923)
  • Drop Shader yayın hatası mesajı
    • Gölgelendirici yayın hatası mesajını düşürmek için hata ayıklama önerileri eklendi
    • ProfileInstaller 1.3 olmadan uygulamaları karşılaştırırken kilitlenmelerin önüne geçmek için gölge düşürme davranışını geçersiz kılmak üzere iki enstrümantasyon bağımsız değişkeni ekleyin:
      • androidx.benchmark.dropShaders.enable=true/false : Özellikle henüz profileinstaller 1.3'ü kullanmayan uygulamaların karşılaştırmasını yaparken tüm gölgelendirici bırakma işlemlerini (StartupMode.Cold başlatmalarında yapılanlar dahil) atlamak için kullanılabilir.
      • androidx.benchmark.dropShaders.throwOnFailure=true/false : Örneğin, profileinstaller 1.3 (I4f573) olmadan uygulamaları karşılaştırırken gölgelendirici bırakmaya çalışırken hataları tolere etmek için kullanılabilir.
  • Tamamen özelleştirilmiş Perfetto izleme kaydı için özel bir PerfettoConfig alan 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 neden olabileceğini unutmayın. (Idfd3d, b/309841164, b/304038384)
  • Girişimi azaltmak için makro karşılaştırma çalıştırmadan önce arka planda dexopt işlerini iptal edin. (I989ed)
  • Makro karşılaştırma artık hedef uygulamanın bir ART profilini temizlemesi için 1 saniye bekler (daha önce 500 ms beklerdi). (I85a50, b/316082056)
  • TraceSectionMetric'te kapsamlı değişiklik
    • Not: Aşağıdaki TraceSectionMetric değişiklikleri, CI kullanımındaki çıkışları etkileyebilir, kesinti oluşturabilir veya ayrıştırmayı bozabilir.
    • Bu metriğin çoğu kullanımı tekrarlanan etkinlikler için olduğundan ve bu durumlarda ilk olarak veriler atılacağından toplam artık varsayılan değerdir.
    • Daha fazla modla daha özelleştirilebilir hale getirildi
    • Mod adları artık metrik çıkış adına yerleştirildi (Studio ve JSON'da)
    • Artık Trace.{begin|end}AsyncSection kullanılarak oluşturulan dilimleri desteklemektedir.
  • Metrikler
    • Güç: PowerMetric.deviceSupportsHighPrecisionTracking, PowerMetric.deviceBatteryHasMinimumCharge() ve PowerMetric.deviceSupportsPowerEnergy() eklendi
    • Döndürülen türle eşleşecek şekilde Metric.getResult, getMeasurements olarak yeniden adlandırıldı
    • Tüm başlangıç algılama hatalarına log.w / exception etiketleri eklendi. Bu, mevcut davranışı değiştirmez (bu nedenle bazı hatalar atılır ve diğerleri sessizce başlangıcı algılamaz), yalnızca daha anlaşılır hale getirir. Genellikle Log.w() olan ve başlangıç metriklerini raporlayamayanlar, çerçeve dışı etkinliklerin eksik olduğu ve başlangıç algılandığında çerçeve zamanlama bilgileri (UI/RT dilimlerinden) hariç istisnaların atandığı etkinliklerdir. (Id240f, b/329145809)
    • Oluşturulan kare sayısı değiştiği için ölçümlerin değiştiği senaryoların keşfedilmesine yardımcı olmak amacıyla FrameTimingMetric ölçümü FrameTimingMetric'a eklendi (yeni animasyonlar eklendi, geçersiz kılma sorunları düzeltildi).frameCount (I1e5aa)
    • Dokümanlar'da mevcut olduğunda izleme için tercih edilen metriğin frameOverrunMs olduğunu ve nedenini açıkladık. (I18749, b/329478323)
    • İzlemenin başında ve sonunda bitmemiş karelerin birlikte eşlenebildiği ve bunun da son derece uzun tek bir kare olarak yanlış raporlandığı sorun düzeltildi. (I39353, b/322232828)
    • Çerçeve üretilmediğinde FrameTimingMetric hatasını iyileştirin ve sorunun teşhis edilmesine yardımcı olmak için metrik ayrıştırma başarısız olduğunda her zaman izleme bağlantısını çıkışa gönderin. (I956b9)
    • Özellikle belirli OEM cihazlarda çerçeve kimliğinin ayrıştırılamaması nedeniyle FrameTimingMetric'te yaşanan kilitlenme düzeltildi. (Ia24bc, b/303823815, b/306235276)
    • FrameMetrics'teki kontrollerin katılığı azaltıldı ve hata mesajlarına daha fazla ayrıntı eklendi. (İadede)

1.2.0'den beri temel profil yakalama / Gradle eklentisi değişiklikleri

  • AGP'nin önerilen maksimum sürümü 9.0.0-alpha01 olarak artırıldı.
  • mergeArtProfile ve mergeStartupProfile görevlerinin her zaman temel profil oluşturma işlemini beklediğinden emin olun. (I623d6, b/343086054)
  • Başlangıç profili başarıyla oluşturulduğunda, değişikliklerin özeti gösterilir (I824c8, b/269484510)
  • Uyarıları devre dışı bırakmak için DSL eklendi (Ic4deb, b/331237001)
  • automaticGenerationDuringBuild devre dışıyken karşılaştırmalarda oluşturulan referans profillerin kullanılmasını sağlamak için düzeltme (Ic144f, b/333024280)
  • nonMinified veya karşılaştırma derleme türünü özelleştirirken temel profil oluşturma ve karşılaştırma özelliğini etkinleştirmek için BaselineProfile gradle eklentisi mülk geçersiz kılma işlemlerini düzeltin. (Ib8f05, b/324837887)
  • AGP 8.3.0-alpha15'ten önceki sürümlerde kitaplık temel profillerinin AAR'a dahil edilmesiyle ilgili düzeltme. (I1d2af, b/313992099)
  • Oluşturma görevinin sonunda ana hat ve başlangıç profili çıkış URL'si düzeltildi. (I802e5, b/313976958)

1.2.0 sürümünden bu yana yapılan diğer önemli değişiklikler

  • Trace yakalama
    • Perfetto başlatılırken EXITCODE 2 hatası, hata yerine günlük kaydı yapılan uyarıya dönüştürüldü
    • Karşılaştırmalarda varsayılan olarak AIDL izlemeyi etkinleştirme(API 28 gerekir) (Ia0af2, b/341852305)
    • Karşılaştırmalarda varsayılan olarak taşıyıcı etiketi izlemeyi etkinleştirin. Örneğin, wakelock izleme noktaları bu şekilde yakalanır. (Icfe44, b/286551983)
    • Daha yavaş cihazlarda izlemeye başlarken kilitlenmelerin önüne geçmek için izleme yakalama başlangıç zaman aşımı artırıldı (I98841, b/329145808)
    • JSON, textproto ve proto binary (kodlanmamış) varyantları içeren herkese açık API PerfettoTraceProcessor.Session.queryMetrics API'leri eklendi. Bu yöntemler, TraceProcessor (I54d7f, b/304038382) içinde yerleşik olan metrikleri sorgulamanıza olanak tanır.
    • İzlemenin başlangıcında veri eksikliği riskini azaltmak için Perfetto izleme kaydında başlangıç engellemesini etkinleştirin. Yalnızca API 33 ve sonraki sürümlerde desteklenir. (Ie6e41, b/310760059)
  • JSON çıkışı
    • JSON çıkışında karşılaştırma bağlamında ek bilgiler eklendi:
      • context.artMainlineVersion: Art ana hat modülünün tam sayı sürümü (cihazda varsa, aksi takdirde -1)
      • context.build.id: android.os.Build.ID ile eşittir.
      • context.build.version.codename: android.os.Build.VERSION.CODENAME ile eşittir.
      • context.build.version.abbreviatedCodename: Sürüm öncesi kod adının ilk harfine karşılık gelir (sürüm yapıları dahil) (Ie5020)
    • Profil oluşturma izleriyle ilgili daha kolay araç kullanımı için JSON çıkışına profilerOutput listesi eklendi (ör. Perfetto, yöntem izleri) (I05ddd, b/332604449)
    • Android Test Orchestrator, karşılaştırma modüllerinde kullanıldığında modül başına çıkış JSON dosyalarının tekrar tekrar üzerine yazılmasına neden olacağından, bu duruma karşı bir uyarı eklendi. (Ia1af6, b/286899049)
    • Dosya yazarken veya son işleme uygularken belirsiz kilitlenmelerin önüne geçmek için dosya adları 200 karakterden uzun olduğunda hata atma. (I4a5ab)

Sürüm 1.3.0-rc01

7 Ağustos 2024

androidx.benchmark:benchmark-*:1.3.0-rc01 yayınlanır. 1.3.0-rc01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Talimat dışı etkinlikler için bozuk değerler üreten androidx.benchmark.cpuEventCounter sorununu düzeltme (I7386a, b/286306579)
  • resumeTiming/runWithTimingDisabled'ü, metrik öncelik sırasına uyacak şekilde düzeltin ve düşük öncelikli metriğin duraklatılması/devam ettirilmesinin yüksek öncelikli metrik sonuçları üzerindeki etkisini önemli ölçüde azaltın. Örneğin, cpuEventCounter.enable enstrümantasyon bağımsız değişkeni aracılığıyla CPU performans sayaçları kullanılıyorsa duraklatma/devam ettirme işlemi gerçekleştiğinde timeNs artık önemli ölçüde azaltılmaz. (I39c2e, b/286306579, b/307445225)
  • Grup örnekleme dönüşümünü ana iş parçacığının dışına taşıyarak measureRepeatedOnMainThread'ün ana iş parçacığındaki katı zaman aşımına ulaşmasına neden olan grup örnekleme olasılığı azaltıldı. (I487a8, b/342237318)
  • Yeni platform API'lerine erişim manuel olarak belirtilmemiştir. Bunun nedeni, AGP 7.3 veya sonraki sürümlerde R8 kullanıldığında (ör. R8 3.3 sürümü) ve AGP 8.1 veya sonraki sürümlerde tüm derlemelerde (ör. D8 8.1 sürümü) API modelleme aracılığıyla otomatik olarak gerçekleşmesidir. AGP kullanmayan müşterilerin D8 8.1 veya sonraki bir sürüme güncellemeleri önerilir. Daha fazla bilgi için bu makaleye göz atın. (I9496c, b/345472586)
  • Paket adını instr bağımsız değişkeni olarak göndermek için agp sürümü kontrolü eklendi. AGP 8.4.0'dan önceki sürümlerde hedef uygulama paketi adı, enstrümantasyon bağımsız değişkenleri aracılığıyla enstrümantasyon uygulamasına gönderilemez. (0c72a3f)

Sürüm 1.3.0-beta02

10 Temmuz 2024

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

Hata Düzeltmeleri

  • Perfetto'yu başlatırken EXITCODE 2 değerini düzgün bir şekilde ele alarak uyarıyı günlüğe kaydedin ancak devam edin.

Sürüm 1.3.0-beta01

12 Haziran 2024

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

API Değişiklikleri

  • Tutarlılık için MethodTracing.affectsMeasurementOnThisDevice, AFFECTS_MEASUREMENT_ON_THIS_DEVICE olarak yeniden adlandırıldı. (I1bdfa)
  • Mikro karşılaştırmalarda ölü kodun kaldırılmasını önlemek için deneysel BlackHole.consume() api eklendi. (If6812, b/286091643)
  • Mikro karşılaştırma, yöntem izlemenin ölçümlere müdahale etmesini önlemek için artık doğru şekilde atılır. Bu durum, yöntem izleme zorla etkinleştirildiğinde (instrumentation args veya MicrobenchmarkConfig aracılığıyla) ve bir yöntem izleme işleminden sonra ölçüm denemesi yapıldığında belirli cihazlarda ortaya çıkar. Etkilenen cihazlar API 26-30'u veya bu girişimden etkilenen belirli ART ana hat modülü sürümlerini çalıştırıyor ve ProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice aracılığıyla çalışma zamanında algılanabilir. (Iafb92, b/303660864)

Hata Düzeltmeleri

  • Önerilen maksimum agp sürümü 9.0.0-alpha01 olarak değiştirildi. (I5bbb0)
  • Karşılaştırma bağlamına derleme modu eklendi (If5612, b/325512900)
  • AIDL izlemeyi varsayılan olarak etkinleştirme (API 28 gerektirir) (Ia0af2, b/341852305)
  • JSON çıkışında karşılaştırma bağlamında ek bilgiler eklendi:
    • context.artMainlineVersion: Art ana hat modülünün tam sayı sürümü (cihazda varsa, aksi takdirde -1)
    • context.build.id: android.os.Build.ID değerine eşit
    • context.build.version.codename: android.os.Build.VERSION.CODENAME değerine eşit
    • context.build.version.abbreviatedCodename: Sürüm öncesi kod adının ilk harfine karşılık gelir (sürüm yapılarında bile) (Ie5020)
  • StackSamplingandroidx.benchmark.profiling.sampleDurationSeconds'e uygun olacak şekilde düzeltme (Ib1d53)
  • Makro->ortak bağımlılık değerini api() olarak değiştirin. Böylece PerfettoTrace ve PerfettoConfig gibi öğeleri daha kolay kullanabilirsiniz. (Icdae3, b/341851833)
  • mergeArtProfile ve mergeStartupProfile görevlerinin her zaman temel profil oluşturma işlemini beklediğinden emin olun. (I623d6, b/343086054)
  • Varyantın etkinleştirilip etkinleştirilmeyeceğine karar verirken varyantın etkinleştirme durumunu göz önünde bulundurun. (I5d19e, b/343249144)
  • Perfetto izleme işleyicisi için varsayılan başlangıç zaman aşımı artırıldı. (I87e8c, b/329145808)

Sürüm 1.3.0-alpha05

14 Mayıs 2024

androidx.benchmark:benchmark-*:1.3.0-alpha05 yayınlanır. 1.3.0-alpha05 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Makro karşılaştırma metriği tüm iterasyonlar için sıfır değer döndürdüğünde daha net bir istisna atma (Iab58f, b/314931695)
  • Dinleyici kuralları ve gözlemlenen diğer uyarılar / hatalar için destek de dahil olmak üzere microbench proguard kurallarına ek geçici çözüm kuralları eklendi. (I14d8f, b/329126308, b/339085669)
  • Yöntem izleme, makro karşılaştırma sırasında ayrı bir aşama olarak çalışır ve artık ölçümleri etkilemez. (If9a50, b/285912360, b/336588271)
  • Gölgelendirici yayın hatası mesajını bırakmak için ek hata ayıklama önerileri eklendi. (I5efa6, b/325502725)

Sürüm 1.3.0-alpha04

1 Mayıs 2024

androidx.benchmark:benchmark-*:1.3.0-alpha04 yayınlanır. 1.3.0-alpha04 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Tamamen özelleştirilmiş Perfetto izleme kaydı için özel bir PerfettoConfig alan 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 neden olabileceğini unutmayın. (Idfd3d, b/309841164, b/304038384)
  • Netlik için PowerMetric.deviceSupportsPowerEnergyPowerMetric.deviceSupportsHighPrecisionTracking olarak yeniden adlandırın (I5b82f)
  • Cihazın güç ölçüm kapasitesine göre karşılaştırmaları değiştirmeyi veya atlamayı etkinleştirmek için PowerMetric.deviceBatteryHasMinimumCharge() ve PowerMetric.deviceSupportsPowerEnergy() eklendi. (I6a591, b/322121218)

Hata Düzeltmeleri

  • Önceki referans profille (I824c8, b/269484510) karşılaştırma eklendi
  • Uyarıları devre dışı bırakmak için DSL eklendi (Ic4deb, b/331237001)
  • Karşılaştırma varyantları devre dışı bırakıldığında istisna, bilgi günlüğüne değiştirildi (I8a517, b/332772491)
  • Makro karşılaştırma için yöntem izlemelerini yakalamayı basitleştirin. Bu yöntem, gerçek measureBlock() süresine göre kapsamlandırılır. Daha önce, hedef işlem başlatılırken başlıyordu ve yalnızca baştan başlatmayı destekliyordu (Iee85a, b/300651094)
  • perfetto izleme işlemcisi yavaş başladığında kilitlenmeyi önleyin (I98841, b/329145808)

Sürüm 1.3.0-alpha03

17 Nisan 2024

androidx.benchmark:benchmark-*:1.3.0-alpha03 yayınlanır. 1.3.0-alpha03 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • JSON, textproto ve proto ikili (kodlanmamış) varyantları içeren herkese açık API PerfettoTraceProcessor.Session.queryMetrics API'leri ekler. Bu yöntemler, TraceProcessor'a (I54d7f, b/304038382) yerleşik metrikleri sorgulamanıza olanak tanır.
  • Profil oluşturma izleriyle ilgili daha kolay araç kullanımı için JSON çıkışına profilerOutput eklendi (ör. perfetto, yöntem izleri). (I05ddd, b/332604449)
  • Perfetto yapılandırmasını karşılaştırmak için güç etiketi eklendi. Örneğin, wakelock izleme noktaları bu şekilde yakalanır. (Icfe44, b/286551983)
  • inst bağımsız değişkeni androidx.benchmark.profiling.skipWhenDurationRisksAnr eklendi. Beklenen süre ANR'ye neden olabileceğinde yöntem izlemelerinin atlanmasına engel olmak için false olarak ayarlanabilir. CI çalıştırmalarında bu ayarın kullanılmaması önemle tavsiye edilir.
  • Deneme amaçlı inst bağımsız değişkeni androidx.benchmark.profiling.perfCompare.enable eklendi. Ölçüm ve profil oluşturma aşamaları arasındaki karşılaştırma zamanlamasını çalıştırmak için bunu doğru olarak ayarlayın. Örneğin, yöntem izlemenin ek maliyetini değerlendirmede yararlıdır. (I61fb4, b/329146942)

API Değişiklikleri

  • TraceSectionMetric.Mode, kapsamlı when ifadelerine zarar vermeden gelecekte genişletmeyi etkinleştirmek için mühürlü sınıf olarak değiştirildi (I71f7b)
  • TraceSectionMetric.Mode.Average ve .Count eklendi ve daha yaygın olan bağımsız değişken (mod) bağımsız değişken listesinin başlarında olacak şekilde bağımsız değişkenler yeniden sıralandı. Böylece, parametre adlarını belirtme ihtiyacı azaltıldı. (Ibf0b0, b/315830077, b/322167531)
  • İade türüne uyacak şekilde Metric.getResult, getMeasurements olarak yeniden adlandırıldı (I42595)

Hata Düzeltmeleri

  • automaticGenerationDuringBuild devre dışıyken karşılaştırmalarda oluşturulan referans profillerin kullanılmasını sağlamak için düzeltme (Ic144f, b/333024280)
  • nonMinified veya karşılaştırma derleme türünü özelleştirirken temel profil oluşturma ve karşılaştırma özelliğini etkinleştirmek için BaselineProfile gradle eklentisi mülk geçersiz kılma işlemlerini düzeltin. (Ib8f05, b/324837887)
  • Sabit yöntem izlerinin makro karşılaştırmada temizlenmesi sayesinde yöntem izleri daha yavaş cihazlarda bile tamamen yakalanır ve geçerli olur. (I6349a, b/329904950)
  • İzlemenin başlangıcında veri eksikliği riskini azaltmak için Perfetto izleme kaydında başlangıç engellemesini etkinleştirin. Yalnızca API 33 ve sonraki sürümlerde desteklenir. (Ie6e41, b/310760059)
  • Android Test Orchestrator, karşılaştırma modüllerinde kullanıldığında modül başına çıkış JSON dosyalarının tekrar tekrar üzerine yazılmasına neden olacağından, bu duruma karşı bir uyarı eklendi. (Ia1af6, b/286899049)
  • Cihaz yerel ayarını yok sayarak Studio çıkışında tutarlılık için "," (virgülü) bin ayırıcı olarak zorunlu kıl (I3e921, b/313496656)
  • TraceSectionMetric artık Trace.{begin|end}AsyncSection kullanılarak oluşturulan dilimleri destekliyor. (I91b32, b/300434906)
  • Tüm başlangıç algılama hatalarına log.w / exception etiketleri eklendi. Bu, mevcut davranışı değiştirmez (bu nedenle bazı hatalar atılır ve diğerleri sessizce başlangıcı algılamaz), yalnızca daha anlaşılır hale getirir. Genellikle Log.w() olan ve başlangıç metriklerini raporlayamayanlar, çerçeve dışı etkinliklerin eksik olduğu ve başlangıç algılandığında çerçeve zamanlama bilgileri (UI/RT dilimlerinden) hariç istisnaların atandığı etkinliklerdir. (Id240f, b/329145809)
  • Girişimi azaltmak için makro karşılaştırma çalıştırmadan önce arka planda dexopt işlerini iptal edin. (I989ed)
  • Oluşturulan kare sayısı değiştiği için ölçümlerin değiştiği senaryoların keşfedilmesine yardımcı olmak amacıyla frameCount ölçümü FrameTimingMetric'a eklendi (yeni animasyonlar eklendi, geçersiz kılma sorunları düzeltildi). (I1e5aa)
  • Dokümanlar'da mevcut olduğunda izleme için tercih edilen metriğin frameOverrunMs olduğunu ve nedenini açıkladık. (I18749, b/329478323)

Sürüm 1.3.0-alpha02

20 Mart 2024

androidx.benchmark:benchmark-*:1.3.0-alpha02 yayınlanır. 1.3.0-alpha02 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Yerleşik proguard kuralları aracılığıyla mikro testte deneysel R8 desteği. Bu desteğin deneysel olduğunu ve kitaplık modülü testlerinin küçültülmesi için AGP 8.3'ün gerekli olduğunu unutmayın. Karşılaştırma modülünüzün build.gradle bölümünde R8 küçültme/optimizasyonu etkinleştirmek için aşağıdakileri kullanın. Bu işlem, iş yüküne bağlı olarak önemli bir performans artışı sağlar. (I738a3, b/184378053)

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

Hata Düzeltmeleri

  • Yöntem izleme uyarısının, mikro test çıkışından ayrı bir satırda gösterilmesi düzeltildi. (I0455c, b/328308833)

Sürüm 1.3.0-alpha01

21 Şubat 2024

androidx.benchmark:benchmark-*:1.3.0-alpha01 yayınlanır. 1.3.0-alpha01 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • "Olması gerekir" kelimesinin gereksiz kullanımını önlemek için MicrobenchmarkConfig Boole parametreleri yeniden adlandırıldı (Ia8f00, b/303387299)
  • Ana iş parçacığı karşılaştırmalarının (ör. Görünümler veya Oluşturma kullanıcı arayüzlerine dokunan karşılaştırmalar) özellikle CI'deki büyük paketler sırasında ANR'leri tetiklemesini önlemek için BenchmarkRule.measureRepeatedOnMainThread eklendi. (I5c86d)
  • Perfetto izlemesinden ayıklanan ölçümler yerine doğrudan platformdan gelen ölçümlerin kullanıldığı FrameTimingMetric'un deneysel alternatif bir uygulaması olan FrameTimingGfxInfoMetric eklendi. (I457cb, b/322232828)
  • Ayrı warmUp iterasyonları sırasında bir ART profilini dökme özelliği eklendi. (I17923)
  • TraceSectionMetric API'de yapılan birkaç değişiklik:
    • Mode.Min, Mode.Max ekleyin
    • Bölüm adını metrik etiketi olarak geçersiz kılmak için etiket bağımsız değişkeni ekleme
    • Metrik anlamını netleştirmek için çıkışa mod adı eklendi
    • Bu metriğin çoğu kullanımı tekrarlanan etkinlikler için olduğundan varsayılan değer toplam olarak değiştirildi. CI kullanımında bu değişikliklerin kesinti oluşturabileceğinden veya ayrıştırmayı bozabileceğinden dikkatli olun. (Ic1e82, b/301892382, b/301955938)

Hata Düzeltmeleri

  • Belirtilen yönetilen cihaz mevcut olmadığında temel profil gradle eklentisinde geliştirilmiş hata mesajı (Idea2b, b/313803289)
  • AGP 8.3.0-alpha15'ten önceki sürümlerde kitaplık temel profilinin AAR'a eklenmesi için düzeltme (I1d2af, b/313992099)
  • Oluşturma görevinin sonunda temel ve başlangıç profili çıkış URL'si düzeltildi (I802e5, b/313976958)
  • java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)] (I8dc7d, b/323601788) sorununu düzeltmek için veri kaynağı zaman aşımlarını ayarladık
  • ProfileInstaller 1.3 olmadan uygulamaları karşılaştırırken kilitlenmelerin önüne geçmek için gölgelendirici bırakma davranışını geçersiz kılmak üzere iki enstrümantasyon bağımsız değişkeni ekleyin:
    • androidx.benchmark.dropShaders.enable=true/false : Özellikle henüz profileinstaller 1.3'ü kullanmayan uygulamaların karşılaştırmasını yaparken tüm gölgelendirici bırakma işlemlerini (StartupMode.Cold başlatmalarında yapılanlar dahil) atlamak için kullanılabilir.
    • androidx.benchmark.dropShaders.throwOnFailure=true/false : Örneğin, profileinstaller 1.3 (I4f573) olmadan uygulamaları karşılaştırırken gölgelendirici bırakmaya çalışırken hataları tolere etmek için kullanılabilir.
  • Birkaç saniyeden uzun sürmesi beklenen durumlarda kullanıcı arayüzü iş parçacığında yöntem izlemeyi atla ve hata oluştuğunda yöntem izlemeleri temizle. (I6e768)
  • Dosya yazarken veya son işleme uygularken belirsiz kilitlenmelerin önüne geçmek için dosya adları 200 karakterden uzun olduğunda hata atma. (I4a5ab)
  • İzlemenin başında ve sonunda bitmemiş karelerin birlikte eşlenebildiği ve bunun da son derece uzun tek bir kare olarak yanlış raporlandığı sorun düzeltildi. (I39353, b/322232828)
  • API 30-33'te bir paketi yeniden yüklerken kullanıcı derlemelerindeki ART profillerini temizlemek için API 30 ve sonraki sürümlerde --skip verification kullanın. Bu sayede, bazı cihaz sınıflarında hataya neden olan Play Protect uyarılarını atlayabilirsiniz. (Ic9e36)
  • Sistem kullanıcı arayüzü veya başlatıcı gibi bir sistem uygulaması olmayan uygulamaları kapatmak için am force-stop simgesini kullanın. (I5e028)
  • Makro karşılaştırma artık hedef uygulamanın bir ART profilini temizlemesi için 1 second değerini bekler (önceden 500 ms değerini beklerdi). (I85a50, b/316082056)
  • Çerçeve üretilmediğinde FrameTimingMetric hatasını iyileştirin ve sorunun teşhis edilmesine yardımcı olmak için metrik ayrıştırma başarısız olduğunda her zaman izleme bağlantısını çıkışa gönderin. (I956b9)
  • Özellikle belirli OEM cihazlarda çerçeve kimliğinin ayrıştırılamaması nedeniyle FrameTimingMetric'te yaşanan kilitlenme düzeltildi. (Ia24bc, b/303823815, b/306235276)
  • FrameMetrics'teki kontrollerin katılığı azaltıldı ve hata mesajlarına daha fazla ayrıntı eklendi. (İadede)

Sürüm 1.2

1.2.4 sürümü

17 Nisan 2024

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

Hata Düzeltmeleri

  • Karşılaştırma varyantlarında temel profil srcset'inin ayarlanmaması sorunu düzeltildi. Ayrıca, döngüsel bağımlılıklara neden olan kitaplıklardaki automaticGenerationDuringBuild sorunlarını da düzeltir. (I28ab7, b/333024280)
  • Sistem kullanıcı arayüzü veya başlatıcı gibi bir sistem uygulaması olmayan uygulamaları kapatmak için am force-stop simgesini kullanın. Bu, işlem sonlandırma işleminin tam olarak başarılı olmaması nedeniyle StartupMode.COLD karşılaştırmalarının "Package $package must not be running prior to cold start!" (Sıfırdan başlatmadan önce $package paketi çalışmamalıdır.) hatasıyla kilitlenmesi sorununu düzeltir. (I5e028)

Sürüm 1.2.3

24 Ocak 2024

androidx.benchmark:benchmark-*:1.2.3 yayınlanır. 1.2.3 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • AGP sürümü 8.3.0 veya daha yeni olduğunda Temel Profil Gradle Eklentisi'nden istisna kaldırıldı.
  • AGP 8.3.0-alpha15'ten önceki sürümlerde kitaplık temel profillerinin AAR'a dahil edilmesiyle ilgili düzeltme.

1.2.2 sürümü

1 Aralık 2023

androidx.benchmark:benchmark-*:1.2.2 yayınlanır. 1.2.2 sürümü bu taahhütleri içerir.

Temel Profiller

Sürüm 1.2.1

15 Kasım 2023

androidx.benchmark:benchmark-*:1.2.1 yayınlanır. 1.2.1 sürümü bu taahhütleri içerir.

Yeni Özellikler

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

Sürüm 1.2.0

18 Ekim 2023

androidx.benchmark:benchmark-*:1.2.0 yayınlanır. 1.2.0 sürümü bu taahhütleri içerir.

1.1.0 sürümünden bu yana yapılan önemli değişiklikler

Temel Profiller

  • Yeni Referans Profil Gradle Eklentisi, referans profillerin yakalanmasını ve test ve derleme iş akışınıza dahil edilmesini otomatikleştirir.
  • BaselineProfileRule.collect artık kararlı. Önceki deneysel BaselineProfileRule.collectBaselineProfile API'sinin basitleştirilmiş bir sürümüdür.
    • packageName değerini belirtip uygulamanızı çalıştırmanız yeterlidir.
  • Temel profiller oluşturan kitaplıklarda artık kodda (BaselineProfileRule.collect bağımsız değişkeni) veya daha da basit bir şekilde gradle eklentisinde oluşturulan kuralları filtreleyebilirsiniz.
  • Düzeltmeler

Makro karşılaştırma

  • Derleme
    • Makro karşılaştırma artık her derleme için derleme durumunu doğru şekilde tamamen sıfırlıyor. Bunun için APK'nın Android 14'ten önce yeniden yüklenmesi gerekir. Bu nedenle, ölçülen durumdaki durumu (kullanıcı girişi gibi) korumak istiyorsanız Android 14 ve sonraki sürümlerde karşılaştırma yapmanızı önemle tavsiye ederiz.
    • Ayrıca, uygulama derlemesini ayrı olarak kontrol ederek ve CompilationMode.Ignore() veya enstrümantasyon bağımsız değişkeni ile derlemeyi atlayarak bu sorunun üstesinden gelebilirsiniz.
  • Araçlar bağımsız değişkenleri

    • Daha hızlı doğrulama çalıştırmaları (ör. karşılaştırma testi oluştururken veya göndermeden önce) için androidx.benchmark.dryRunMode.enable enstrümantasyon bağımsız değişkeni desteği (mikro karşılaştırma testinde zaten mevcuttur)
    • androidx.benchmark.profiling.mode=StackSampling ve MethodTracing için destek
    • Çalışma zamanı filtreleme ana profil ile makro karşılaştırma kuralı testlerine izin vermek için androidx.benchmark.enabledRules eklendi
    • tracing-perfetto ile izlemeyi etkinleştirmek için androidx.benchmark.perfettoSdkTracing.enable bağımsız değişkeni eklendi (ör. Oluşturma yeniden oluşturma izleme). StartupMode.COLD ile kullanıldığında, izleme kitaplığı uygulama başlatılırken yüklendiği ve etkinleştirildiği için zamanlamanın önemli ölçüde etkileneceğini unutmayın.
  • Şartlar

    • Profil yakalama / sıfırlama ve gölgelendirici önbelleğini temizleme özelliklerini etkinleştirmek için makro karşılaştırma artık hedef uygulamada ProfileInstaller 1.3.0 veya sonraki bir sürümün kullanılmasını gerektiriyor.
  • Yeni Deneysel Metrik API'leri

    • Uygulamanızdaki trace("") {} bloklarından basit zamanlama bilgilerini ayıklamaya olanak tanıyan deneysel TraceSectionMetric veya Perfetto'nun tam sorgu özelliğinden yararlanmak için TraceMetric eklendi TraceProcessor.
    • Güç kullanımı bilgilerini yakalamak için deneysel PowerMetric eklendi
    • Sayfa hatalarını saymak için deneysel MemoryCountersMetric eklendi
    • Sistem izlemelerinden (diğer adıyla Perfetto izlemeleri) metrik ayıklamak için şirket içinde kullanılan deneysel PerfettoTraceProcessor API eklendi
  • Düzeltmeler

    • Birden fazla APK'dan (ör. uygulama paketinden) yüklenen bir uygulamadan profil yüklerken veya çıkarırken kilitlenmeler düzeltildi.
    • FrameTimingMetric'nin tutarsız çerçeve kimliklerine sahip kareleri (genellikle API 31 ve sonraki sürümlerde dalgalanma sırasındaki kareler) yoksayması düzeltildi (I747d2, b/279088460)
    • 64 MB'tan büyük izlemelerde ayrıştırma hataları düzeltildi (Ief831, b/269949822)
    • Cihaz (özellikle emülatör) işletim sistemi resmi, izleme veya derleme için doğru şekilde yapılandırılmamışsa hataların netleştirilmesi
    • Pilsiz cihazlar (mikro ve makro) için pil seviyesi kontrolünü atlama
    • Geçersiz çıkış dizinleri için daha net hatalar ve daha güvenli varsayılan değerler içeren iyileştirilmiş dosya çıkışı
    • Gölgelendirici önbelleğini sürekli olarak bırakarak StartupMode.COLD'ün kararlılığı iyileştirildi (MacrobenchmarkScope.dropShaderCache aracılığıyla da gösterilir)
    • startActivityAndWait için yedek dinlenme modu düzeltildi.

Mikro karşılaştırma

  • Özellikler
    • Profil oluşturma, diğer metriklerden sonra ayrı bir aşamaya taşındı. Böylece tek bir test çalıştırması hem doğru zamanlamayı hem de profil oluşturma sonuçlarını gösterebilir.
  • Deneysel API'ler
    • Özel metrikleri tanımlamak, izlemeyi ve profillemeyi yapılandırmak için deneysel MicrobenchmarkConfig API eklendi. Yöntem izlemeleri veya izleme noktaları yakalamak için kullanılabilir (ancak izleme yükü dikkate alınmalıdır).
    • BenchmarkState'i BenchmarkRule'den ayrı olarak JUnit olmadan kontrol etmek için deneysel API'ler eklendi
    • Referans API'lerinden ayrı olarak özel yapılandırmayla Perfetto izlerinin yakalanmasını sağlamak için deneysel PerfettoTrace kaydı eklendi.
  • Düzeltmeler
    • Android Studio karşılaştırma çıktısında başlangıçtaki boşlukların eksik olmasıyla ilgili geçici çözüm.
    • Android Studio karşılaştırma çıktısında uyarıların yazdırılamaması sorunu düzeltildi.
    • Android 13 (API 33) ve sonraki sürümlerde SampledProfiling kilitlenmesi düzeltildi.
    • IsolationActivity ve Perfetto izlemesi atlanarak dryRunMode performansı büyük ölçüde iyileştirildi (Eski işletim sistemi sürümlerinde kuru çalıştırma modu 10 kata kadar daha hızlı).

Sürüm 1.2.0-rc02

6 Ekim 2023

androidx.benchmark:benchmark-*:1.2.0-rc02 yayınlanır. 1.2.0-rc02 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Karşılaştırma dosyası çıkışını, BaselineProfile eklenti dosyasının kopyalanmasını artık bozmayacak şekilde düzeltin. Dosyalar oluşturuldu ve cihazdan kopyalandı ancak gradle eklentisinin göremeyeceği şekilde yeniden adlandırıldı. (I8dbcc, b/303034735, b/296453339)
  • Makro karşılaştırma modülünden hedef uygulamaya enjekte edilirken tracing-perfetto yükleme hata mesajları açıklandı.

Sürüm 1.2.0-rc01

20 Eylül 2023

androidx.benchmark:benchmark-*:1.2.0-rc01 yayınlanır. 1.2.0-rc01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Perfetto SDK izlemesi bir karşılaştırmada başlatılamadığında artık bir istisna (çözüm talimatlarıyla birlikte) atılıyor. (I6c878, b/286228781)
  • ART yöntemi izlemesini -> perfetto biçimine dönüştürürken OOM kilitlenme sorununu düzeltin. (I106bd, b/296905344)
  • (Makro karşılaştırma) Studio test çıkışında bağlandığında yöntem izleme etiketi netleştirildi ve yöntem izleme dosya adları, birden fazla karşılaştırma çalıştırıldığında üzerine yazılmaması için cihazda/ana makinede benzersiz olacak şekilde düzeltildi. (I08e65, b/285912360)
  • Referans profili çekilirken cihazın açık kalmasını sağlar. (I503fc)

Sürüm 1.2.0-beta05

30 Ağustos 2023

androidx.benchmark:benchmark-*:1.2.0-beta05 yayınlanır. 1.2.0-beta05 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Temel Profil Gradle Eklentisi artık Android Gradle Eklentisi 8.3'ü desteklemektedir. (aosp/2715214)

Sürüm 1.2.0-beta04

23 Ağustos 2023

androidx.benchmark:benchmark-*:1.2.0-beta04 yayınlanır. 1.2.0-beta04 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Temel Profiller Gradle eklentisi artık Android Gradle Eklentisi 8.3'ü desteklemektedir. (aosp/2715214)

Hata Düzeltmeleri

  • Dosya yazma / taşıma ve getirme (özellikle parametreli testlerden gelenler) ile ilgili hataları düzeltmek için çıkış dosya adlarını daha da temizleyin ve çıkış dosya adlarında "=" ve ":" karakterlerini kullanmayın. (I759d8)

Sürüm 1.2.0-beta03

9 Ağustos 2023

androidx.benchmark:benchmark-*:1.2.0-beta03 yayınlanır. 1.2.0-beta03 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • TraceSectionMetric değerini yalnızca hedef paketle filtrelemek için varsayılan olarak etkin olan bir bağımsız değişken eklendi (Ia219b, b/292208786)

Hata Düzeltmeleri

  • fullTracing.enable enstrümantasyon bağımsız değişkeni, yapı adı ve diğer referanslarla tutarlı olması için perfettoSdkTracing.enable olarak yeniden adlandırıldı. fullTracing.enable yedek olarak çalışmaya devam eder. (I7cc00)
  • Karşılaştırma kitaplığı dahili izleme noktaları (mikro karşılaştırma döngüsü/aşama izleme dahil) artık Studio sistem izleme görüntüleyicisinde gösterilecek ve Perfetto'da doğru işlemin altına yerleştirilecek. (I6b2e7, b/293510459)
  • API 31 ve sonraki sürümlerde makro karşılaştırma PROFİLLENEBİLİR DEĞİL hatası kaldırıldı ve köklü eng/userdebug cihazlarda profillenebilirlik kontrolü atlandı. (I2abac, b/291722507)
  • Dex düzen optimizasyonları kullanılırken artık başlangıç profili kuralları da temel profil kuralları olarak kabul edilir. (aosp/2684246, b/293889189)

Sürüm 1.2.0-beta02

26 Temmuz 2023

androidx.benchmark:benchmark-*:1.2.0-beta02 yayınlanır. 1.2.0-beta02 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Mikro test özel metrikleri ve yapılandırması için deneysel API'ler eklendi (ör. profilleyici ve izleme). (I86101, b/291820856)

Hata Düzeltmeleri

  • API 26/28 ARM64 emülatörlerinde kısa süre önce düzeltilen, işletim sistemi izleme için yanlış yapılandırıldığında macrobench'te hata bildirme. (I0a328, b/282191686)
  • Bazı emülatörlerde bu sorun kısa süre önce düzeltildiği için derleme sıfırlama hatası ayrıntısına, emülatörü güncellemeyi önermek için bilgi eklendi. (I8c815, b/282191686)
  • androidx.test.uiautomator:uiautomator:2.2.0implementation bağımlılık yerine api bağımlılık yapın. (I1981e)

Sürüm 1.2.0-beta01

18 Temmuz 2023

androidx.benchmark:benchmark-*:1.2.0-beta01 yayınlanır. 1.2.0-beta01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Studio'daki karşılaştırma çıktısında bazen uyarıların atlanması ve karşılaştırma çıktısındaki boşlukların Studio'da gösterilmemesi sorunlarını düzeltme (Ia61d0, b/227205461, b/286306579, b/285912360)
  • FrameTimingMetric için yorum düzeltildi. Alt metriğin adı frameDurationCpuMs. (Ib097f, b/288830934).

Sürüm 1.2.0-alpha16

21 Haziran 2023

androidx.benchmark:benchmark-*:1.2.0-alpha16 yayınlanır. 1.2.0-alpha16 sürümü bu taahhütleri içerir.

API Değişiklikleri

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

Hata Düzeltmeleri

  • androidx.benchmark.profiling.mode = MethodTracing için makro karşılaştırma desteği. (I7ad37, b/285912360)
  • Mikro karşılaştırma profillemesi ayrı bir aşamaya taşındı. Bu nedenle, ölçümü değiştirmek yerine ölçümden sonra sırayla gerçekleşir. MethodTracing izleme bölümleri de artık yakalanan Perfetto izlemeye (varsa) dahil ediliyor. (I9f657, b/285014599)
  • Mode.Sum ile TraceSectionMetric'e sayım ölçümü ekleyin. (Ic121a, b/264398606)

Sürüm 1.2.0-alpha15

7 Haziran 2023

androidx.benchmark:benchmark-*:1.2.0-alpha15 yayınlanır. 1.2.0-alpha15 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Hedef uygulamanın bellek kullanımını izlemek için deneysel MemoryUsageMetric eklendi. (I56453, b/133147125, b/281749311)
  • PerfettoTrace.record ile tamamen özel Perfetto yapılandırmaları için destek ekleme (If9d75, b/280460183)
  • Temel profil oluşturma işlemini atlamak için özellik eklendi. Kullanım: ./gradlew assemble -Pandroidx.baselineprofile.skipgeneration. (I37fda, b/283447020)

API Değişiklikleri

  • collectBaselineProfile API her zaman kararlı temel profiller oluşturur. collectStableBaselineProfile API'si kaldırıldı. Bunun yerine collectBaselineProfile kullanılmalıdır. (I17262, b/281078707)
  • BaselineProfileRule'nin filterPredicate bağımsız değişkeni, varsayılan filtre davranışının belgelerde daha net olması için eşdeğer bir varsayılan değerle null olmayan olarak değiştirildi. (I3816e)

Hata Düzeltmeleri

  • Çalışma süresinin büyük bir kısmını kapladıkları için performansı önemli ölçüde artırmak amacıyla dryRunMode'te IsolationActivity ve Perfetto izlemeyi devre dışı bırakın. (Ie4f7d)
  • androidx.benchmark.profiling.mode=StackSampling ve androidx.benchmark.profiling.sampleFrequency enstrümantasyon testi bağımsız değişkenlerini kullanarak makro karşılaştırmalarda çağrı yığını örnekleme desteği. (I1d13b, b/282188489)
  • Android U (API 34) ve emülatörlerde gölgelendirici bırakıldığında oluşan kilitlenmeyi düzeltir. (I031ca, b/274314544)

Sürüm 1.2.0-alpha14

3 Mayıs 2023

androidx.benchmark:benchmark-*:1.2.0-alpha14 yayınlanır. 1.2.0-alpha14 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • FrameTimingMetric'nin tutarsız çerçeve kimliklerine sahip kareleri yoksayması sorunu düzeltildi. Bu durum, son platform sürümlerindeki (API 31 ve sonraki sürümler) bazı animasyonların, RenderThread animasyon sırasında (ör. dalgalanma sırasında) birçok kareyi yoksaymasına neden olur. (I747d2, b/279088460)
  • 64 Mb'tan büyük izlemeler için izleme işlemcisi ayrıştırma işlemi düzeltildi. (Ief831, b/269949822)
  • Android U'da pm dump-profiles komutunun farklı çıkışı nedeniyle temel profil oluşturma işleminin başarısız olması düzeltildi. (Id1392, b/277645214)
  • GPU saat kilitleme komut dosyasını, dizeleri doğru şekilde karşılaştıracak şekilde düzeltin (I53e54, b/213935715)

Sürüm 1.2.0-alpha13

5 Nisan 2023

androidx.benchmark:benchmark-*:1.2.0-alpha13 yayınlanır. 1.2.0-alpha13 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Yakında kullanıma sunulacak başlangıç profili özelliğini desteklemek için temel profiller oluştururken profil türü parametresi eklendi (Ie20d7, b/275093123)
  • Perfetto izleme içeriğine göre tamamen özel metrikler tanımlamak için yeni deneysel TraceMetric API eklendi. (I4ce31, b/219851406)
  • Karşılaştırma sırasında sayfa hatası sayısını belirlemek için deneysel bir metrik ekleyin. (I48db0)

Sürüm 1.2.0-alpha12

22 Mart 2023

androidx.benchmark:benchmark-*:1.2.0-alpha12 yayınlanır. 1.2.0-alpha12 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Yeni temel profil gradle eklentisi alfa sürümünde yayınlandı. Bu eklenti, temel profil oluşturmayı kolaylaştırıyor ve geliştirici iş akışını basitleştiriyor.

API Değişiklikleri

  • Hem mikro karşılaştırmaları hem de deneysel PerfettoTrace API'lerini içeren API 21 ve 22'de Perfetto izleme desteği kaldırıldı. Bu sürümden önce, UiAutomation bağlantıları bazı cihazlarda güvenilir değildi. (I78e8c)
  • İzleme içeriğini ayrıştırmayı etkinleştirmek için PerfettoTraceProcessor için herkese açık deneysel API eklendi. Bu, Perfetto izleme verilerine dayalı tamamen özel metrikler oluşturma yolunda bir adımdır. (I2659e, b/219851406)

Sürüm 1.2.0-alpha11

8 Mart 2023

androidx.benchmark:benchmark-*:1.2.0-alpha11 yayınlanır. 1.2.0-alpha11 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Birden fazla APK içeren bir uygulama paketinden profilleri yeniden yüklerken veya çıkarırken MacrobenchmarkRule ve BaselineProfileRule'te yaşanan kilitlenmeler düzeltildi. (I0d8c8, b/270587281)

Sürüm 1.2.0-alpha10

22 Şubat 2023

androidx.benchmark:benchmark-*:1.2.0-alpha10 yayınlanır. 1.2.0-alpha10 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Android 14 ve sonraki sürümlerde Macrobenchmark, yeni bir platform özelliği sayesinde derleme durumunu sıfırlamak için artık hedef uygulamaları yeniden yüklemiyor. Daha önce, köklenmiş bir cihaza sahip olmak veya her karşılaştırma çalışmasının yürütülmesinden önce tüm uygulama durumlarının (ör. kullanıcı girişi) kaldırılmasıyla uğraşmak gerekiyordu. (I9b08c, b/249143766)

Hata Düzeltmeleri

  • Derleme atlama nedeniyle boş profilde kilitlenmemesi için DryRunMode'ü düzeltin. Bunun yerine, tek bir iterasyon çalıştırır ve bir şey yakalandığından emin olmak için profili çıkarır. (I2f05d, b/266403227)
  • Eski API düzeylerinde güç istatistiklerinin bulunup bulunmadığını kontrol ederken PowerMetric kilitlenme sorunu düzeltildi. (5faaf9, b/268253898)

Sürüm 1.2.0-alpha09

11 Ocak 2023

androidx.benchmark:benchmark-*:1.2.0-alpha09 yayınlanır. 1.2.0-alpha09 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Tüm karşılaştırma / temel profil oluşturma işlemlerini devre dışı bırakmak için None'ün androidx.benchmark.enabledRules enstrümantasyon bağımsız değişkenine iletilmesini etkinleştirdi. (I3d7fd, b/258671856)
  • Uygulama modüllerinde (ör. kendi kendini enstrümante etmeyen test APK'ları) PerfettoTrace yakalama sorununu düzeltme (I12cfc)
  • Studio çıkışında temel profil adb çekme bağımsız değişkeni sırası düzeltildi (I958d1, b/261781624)
  • Arm emülatör api 33, artık makro karşılaştırma çalıştırmaya çalışırken doğru şekilde tanınıyor ve uyarıyı doğru şekilde yazdırıyor. (69133b,b/262209591)
  • Makro karşılaştırmada pilsiz cihazlarda pil seviyesi kontrolünü atlama (fe4114, b/232448937)

Sürüm 1.2.0-alpha08

7 Aralık 2022

androidx.benchmark:benchmark-*:1.2.0-alpha08 yayınlanır. 1.2.0-alpha08 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Test davranışını ve performansını incelemek için bir testin parçası olarak Perfetto izlerini (Sistem İzleri olarak da bilinir) yakalamak üzere deneysel yeni API'ler PerfettoTrace.record {} ve PerfettoTraceRule eklendi. (I3ba16)
  • BaselineProfileRule artık paket ön eklerinin listesi yerine filtre ön eklerinin listesini kabul ediyor. Bu sayede test, filtreleme üzerinde tam kontrol sahibi olur. (I93240)
  • Bir referans profilin N iterasyon boyunca kararlı hale gelmesini bekleyen deneysel bir API BaselineProfileRule.collectStableBaselineProfile ekleyin. (I923f3)
  • BaselineProfileRule kullanarak temel profiller oluştururken çıkış dosyası adı ön ekini belirtme özelliği eklendi. (I7b59f, b/260318655)

Hata Düzeltmeleri

  • Dosya çıkışı yazma işleminin güvenliğini artırın. Bu, özellikle API 21 / 22'de çıkış dosyalarının sessizce yazılmamasını/eklenmemesini önler. (If8c44, b/227510293)
  • Dosyayı doğru şekilde oluşturmak ve yerleştirmek için simpleperf izleme çıkışını düzeltin. Bu işlem, bir dosyanın gradle tarafından başarıyla çekilemediği sorunların genel olarak düzeltilmesini de sağlar. (I12a1c, b/259424099)
  • profileinstaller çok eski olduğunda yazdırılan profileinstaller hata mesajını iyileştirin. Artık bu mesajda, API 31 ile 33 arasındaki temel profilleri ölçmek için profileinstaller sürümünü (1.2.1) güncellemeniz gerektiği belirtiliyor. (Ia517f, b/253519888)
  • Hata mesajında birkaç kabuk komutu hatası düzeltildi. Başarısız perfetto yakalama ikili kurulumu ve izleme yakalama hataları da dahil olmak üzere gerekli API'yi <=23 yazdırın (Ib6b87, b/258863685)
  • Oluşturulan profil kurallarını zaman içinde değiştikçe (profil kurallarını kaynak denetimine eklerken) değişiklik sayısını en aza indirmek için otomatik olarak sıralayın. (Ie2509)
  • Android 13 (API 33) ve önceki sürümlerin köklendirilmemiş derlemelerinde Expected no stderr from echo 3 > /proc/sys/vm/drop_caches mesajıyla yaşanan kilitlenme düzeltildi (I6c245, b/259508183)

Bilinen sorunlar - MacrobenchmarkScope.dropShaderCache(), profileinstaller manifest dosyasında henüz yayınlanmamış bir yayın sicil dairesi eksikliği nedeniyle kilitlenebilir. (I5c728, b/258619948) profileinstaller:1.3.0-alpha02'teki sorunu gidermek için aşağıdakileri uygulamanızın (karşılaştırmanızın değil) AndroidManifest.xml dosyasına ekleyin:

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

Sürüm 1.2.0-alpha07

9 Kasım 2022

androidx.benchmark:benchmark-*:1.2.0-alpha07 yayınlanır. 1.2.0-alpha07 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Makro karşılaştırmalarda enerji ve gücü ölçmek için PowerMetric API'si eklendi. (Ife601, b/220183779)
  • MacrobenchmarkScope.dropShaderCache(), gölgelendirici önbelleğini gerçekten bırakacak şekilde düzeltildi. Bu sayede, gölgelendiriciler artık her iterasyonda tutarlı bir şekilde temizlendiğinden StartupMode.COLD karşılaştırmalarından yaklaşık 20 ms gürültü kaldırıldı. Daha önce, Partial derleme işleminde ısınma iterasyonları kullanıldığında, gölgelendirici önbelleğe alma işleminin ısınma sırasında gerçekleşme olasılığı daha yüksek olduğundan yanlış hızlı sayılar raporlanıyordu. Bu düzeltme için köklü bir cihaz veya hedef uygulamada profileinstaller:1.3.0-alpha02 kullanılması gerekir. ProfileInstaller kitaplığının API değişiklikleri için lütfen ProfileInstaller 1.30-alpha02 sayfasına bakın. (Ia5171, b/231455742)
  • Aynı etikete sahip birden fazla izleme bölümünde harcanan toplam sürenin ölçülmesine olanak tanıyan TraceSectionMode("label", Mode.Sum) eklendi. Örneğin, TraceSectionMetric("inflate", Mode.Sum), bir makro karşılaştırmada enflasyon için harcanan toplam süreyle ilgili bir inflateMs metriği raporlar. Ayrıca, TraceSectionMetric, hedef uygulamada forceEnableAppTracing kullanılarak daha düşük API düzeylerinde androidx.tracing.Trace ile birlikte çalıştığından API 29 şartı da kaldırıldı. (Id7b68, b/231455742)

Hata Düzeltmeleri

  • Tüm çıkışlar/hatalar doğrulanarak tüm dahili kabuk komutlarının güvenliği artırıldı. (I5984d, b/255402908, b/253094958)
  • Birden fazla cihaz bağlıysa (en fazla bir emülatör) temel profil adb pull komutunda cihazı belirtin. Böylece, alma komutu kolayca kopyalanabilir (I6ac6c, b/223359380)
  • Makro karşılaştırma testi apk'sı kendi kendini enstrümante edecek şekilde ayarlanmamışsa hata ekleyin. Bu hata, hedef uygulamanın sürecinde makro karşılaştırmalı test yapılmasını engeller. Bu süreçte macrobench, uygulamayı derleyemez/öldüremez/soğuk başlatamaz veya kendi izinlerini kontrol edemez (I4279b)
  • measureRepeated()'te StartupMode.COLD'ın setupBlock'den sonra hedef işlemi sonlandırmaması sorunu düzeltildi. Artık setupBlock'ün uygulamayla etkileşime geçmesi, uygulama işleminin çalışmasını ve geçersiz bir soğuk başlatma ölçümü yapılmasını engellemeyecek. (I8ebb7)

Sürüm 1.2.0-alpha06

24 Ekim 2022

androidx.benchmark:benchmark-*:1.2.0-alpha06 yayınlanır. 1.2.0-alpha06 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • BaselineProfileRule artık Android 13'te (API 33) root erişimi gerektirmiyor ve deneysel değil. (Ie0a7d, b/250083467, b/253094958)
    • Bu değişiklik, bir uygulamadaki profillerin köklendirilmemiş cihazlarda diske nasıl temizlendiğini de düzeltir ancak hedef uygulamanın profileinstaller bağımlılığının güncellenmesini gerektirir.
    • Köklendirilmemiş bir cihazda BaselineProfileRule veya CompilationMode.Partial(warmupIterations)'ü kullanmak için hedef uygulamanızı androidx.profileinstaller.profileinstaller:1.3.0-alpha01'yi kullanacak şekilde de güncellemeniz gerekir. Bu, profilin derlenebilmesi/ayıklanabilmesi için diske doğru şekilde boşaltılmasını sağlar.

Hata Düzeltmeleri

  • API 33 ve sonraki sürümlerde SampledProfiling kilitlenme sorununu düzeltir. (I40743, b/236109374)

Sürüm 1.2.0-alpha05

5 Ekim 2022

androidx.benchmark:benchmark-*:1.2.0-alpha05 yayınlanır. 1.2.0-alpha05 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Kayıtlı karşılaştırma izlemeleri için Studio sistem izleme görüntüleyicisinde kare dökümünü düzeltme (I3f3ae, b/239677443)
  • FrameTimingMetric'te FrameOverrun'u 29 yerine API 31 gerektirecek şekilde düzeltin (I716dd, b/220702554)
  • BaselineProfileRule içinde iterasyonu ayarlayın ve hedef paket yüklü değilse açıkça bildirin (MacrobenchmarkRule için zaten yapılmıştır). (Ic09a3, b/227991471)

Sürüm 1.2.0-alpha04

21 Eylül 2022

androidx.benchmark:benchmark-*:1.2.0-alpha04 yayınlanır. 1.2.0-alpha04 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Daha hızlı yerel geliştirme ve uygulama otomasyonunu doğrulama (ör. göndermeden önce) için makro karşılaştırma aracına dryRunMode.enable enstrümantasyon bağımsız değişkeni desteği eklendi (mikro karşılaştırma aracında zaten mevcuttur). Bu işlem, iterasyonları 1 olarak geçersiz kılar, derlemeyi atlar, tüm yapılandırma hatalarını bastırır ve ölçüm .json dosyası çıkışını devre dışı bırakır. (Ib51b4, b/175149857)

    Gradle komut satırında:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=true
    

    build.gradle dosyasında:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true'
        }
    }
    

Hata Düzeltmeleri

  • Ölçülmüş etkinliklerin artık MacrobenchmarkScope.startActivityAndWait() üzerinden başlatılmasını gerektirmeyecek şekilde StartupTimingMetric düzeltildi. Bu, metriğin örneğin bildirimler, Context.startActivity(), uygulama içi etkinlik tabanlı gezinme veya kabuk komutlarından gelen başlatmaları algılayabileceği anlamına gelir. (Ia2de6, b/245414235)
  • Çerçeve algılamanın katılığını azaltarak startActivityAndWait'ün, emülatörlerde lansmanın tamamlanmasını beklerken zaman aşımına uğramasına neden olan hata düzeltildi. (Ibe2c6, b/244594339, b/228946895)

Sürüm 1.2.0-alpha03

7 Eylül 2022

androidx.benchmark:benchmark-*:1.2.0-alpha03 yayınlanır. 1.2.0-alpha03 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • BenchmarkStateBenchmarkRule / JUnit4'den 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ınlanır. 1.2.0-alpha02 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Temel profil oluşturma işlemi hariç, köklüyken bile MacrobenchmarkScope.killProcess() için varsayılan olarak am force stop. Bu değer, isteğe bağlı bir boole bağımsız değişkeniyle geçersiz kılınabilir. (02cce9, b/241214097)

Hata Düzeltmeleri

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

Sürüm 1.2.0-alpha01

27 Temmuz 2022

androidx.benchmark:benchmark-*:1.2.0-alpha01 yayınlanır. 1.2.0-alpha01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Araçların, kullanıma sunduğu bir uygulamada Perfetto SDK izlemeyi etkinleştirmesine olanak tanıyan yeni tracing-perfetto-common bileşeni (I2cc7f)
  • Makro karşılaştırma çalıştırmalarının yalnızca karşılaştırmalara veya yalnızca temel profil oluşturmaya filtrelenmesini sağlamak için androidx.benchmark.enabledRules enstrümantasyon bağımsız değişkeni eklendi. Yalnızca bir tür test çalıştırmak için (ör. bir emülatörde yalnızca BaselineProfiles oluştururken) "Macrobenchmark" veya "BaselineProfile" parametresini iletin. Virgülle ayrılmış liste de desteklenir. (I756b7, b/230371561)

    Örneğin, makro karşılaştırmanızın build.gradle dosyasında:

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

    Alternatif olarak Gradle komut satırından:

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • Köklendirilmemiş derlemelerde her makro karşılaştırma arasında derlenmiş yöntemlerin doğru şekilde sıfırlanmaması sorunu düzeltildi. Bu nedenle, her iterasyonda apk'nın yeniden yüklenmesi gerekir. Bu da her makro karşılaştırma için uygulama verilerinin temizlenmesine neden olur. (I31c74, b/230665435)
  • API 21/22'de izleme kaydının kilitlenmesi sorunu düzeltildi (If7fd6, b/227509388, b/227510293, b/227512788)
  • Başlangıç makro karşılaştırmalarında "Hiçbir metrik okunamadı" istisnasını düzeltmek için etkinlik başlatma tamamlama algılamasını büyük çaplı olarak değiştirin. (Ia517c)

1.1.1 sürümü

1.1.1 sürümü

9 Kasım 2022

androidx.benchmark:benchmark-*:1.1.1 yayınlanır. 1.1.1 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Bazı Android 11 (API 30 ve sonraki sürümler) yüklü cihazlarda ortaya çıkan android.system.ErrnoException: open failed: EACCES sorununu giderir. Bu, 1.2.0-alpha01'teki bir düzeltmenin seçkin bir örneğidir. (aosp/2072249)

Sürüm 1.1.0

Sürüm 1.1.0

15 Haziran 2022

androidx.benchmark:benchmark-*:1.1.0 yayınlanır. 1.1.0 sürümü bu taahhütleri içerir.

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

1.0.0 sürümünden bu yana yapılan önemli değişiklikler

Sürüm 1.1.0-rc03

1 Haziran 2022

androidx.benchmark:benchmark-*:1.1.0-rc03 yayınlanır. 1.1.0-rc03 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

Sürüm 1.1.0-rc02

11 Mayıs 2022

androidx.benchmark:benchmark-*:1.1.0-rc02 yayınlanır. 1.1.0-rc02 sürümü bu taahhütleri içerir.

  • Bu sürümde, doğru ölçümler yapılması için uygulamalar artık her karşılaştırma arasında tamamen yeniden yükleneceğinden davranış değişikliği yapıldığını unutmayın.

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

  • Uygulama derlemesinin makro karşılaştırmalar arasında doğru şekilde sıfırlanmaması ve köklendirilmemiş derlemelerde hiç sıfırlanmaması sorunu düzeltildi. Bu, birden fazla test çalıştırmanın CompilationMode'ün ölçümler üzerinde çok az veya hiç etkisi olmamasına neden olduğu birçok durumu düzeltir. Bu sorunun geçici çözümü olarak hedef uygulama artık her test yöntemini tamamen yeniden yüklüyor. Bu sayede her makro karşılaştırma arasında uygulama verileri temizleniyor. (I31c74, b/230665435)

  • Bu durum, uygulamaların testlerden önce durum ayarlarını yapmasını engellediğinden, bu sorunun üstesinden gelmek için derlemeyi / yeniden yüklemeyi atlamak artık mümkün. Örneğin, hedefi bir kabuk komutu cmd package compile -f -m speed <package> ile tamamen derleyebilir ve ardından makro karşılaştırmanın derleme adımını atlayabilirsiniz.

    Örneğin, makro karşılaştırmanızın build.gradle dosyasında:

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

    Alternatif olarak Gradle komut satırından:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
    
  • androidx.benchmark.enabledRules enstrümantasyon bağımsız değişkenini ekleyerek makro karşılaştırmalar ile referans profil oluşturma testleri arasında bir modülün paylaşılmasını sağladı. Örneğin, bir emülatörde BaselineProfiles oluştururken yalnızca bir tür test çalıştırmak için "Macrobenchmark" veya "BaselineProfile" parametresini iletin. (I756b7, b/230371561)

    Örneğin, makro karşılaştırmanızın build.gradle dosyasında:

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

    Alternatif olarak Gradle komut satırından:

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

Sürüm 1.1.0-rc01

20 Nisan 2022

androidx.benchmark:benchmark-*:1.1.0-rc01 yayınlanır. 1.1.0-rc01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

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

Sürüm 1.1.0-beta06

6 Nisan 2022

androidx.benchmark:benchmark-*:1.1.0-beta06 yayınlanır. 1.1.0-beta06 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • API 21/22'de izleme kaydının kilitlenmesi sorunu düzeltildi (If7fd6, b/227509388)
  • Başlangıç makro karşılaştırmalarında "Hiçbir metrik okunamadı" istisnasını düzeltmek için etkinlik başlatma tamamlama algılamasını büyük çaplı olarak değiştirin. (Ia517c)
  • CompilationMode.None() kullanıldığında makro karşılaştırmalar için başlangıç metriklerini düzeltin. Bu değişiklikten önce CompilationMode.Partial(), Compilation.None()'ten daha yavaş görünüyordu. (611ac9).

Sürüm 1.1.0-beta05

23 Mart 2022

androidx.benchmark:benchmark-*:1.1.0-beta05 yayınlanır. 1.1.0-beta05 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

Sürüm 1.1.0-beta04

23 Şubat 2022

androidx.benchmark:benchmark-*:1.1.0-beta04 yayınlanır. 1.1.0-beta04 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Android 10'da eksik metrikler ve izlenen işlem adlarının doğru şekilde yakalanmamasından kaynaklanan NoSuchElementException düzeltildi. (Ib4c17, b/218668335)

  • Q (API 29) ve sonraki sürümlerde termal kısıtlama algılama için PowerManager kullanın. Bu, termal sınırlama algılamada yanlış pozitiflerin sıklığını önemli ölçüde azaltır (90 saniyelik bekleme süresinden sonra karşılaştırma yeniden denemesi) ve kullanıcı derlemelerinde karşılaştırmaları önemli ölçüde hızlandırır. Ayrıca, saatler kilitliyken (cihazın fiziksel ortamı için çok yüksek bir hıza kilitlenmişse) de kısıtlama algılama sağlar. (I9c027, b/217497678, b/131755853)

  • İncelemeyi basitleştirmek için simpleperf örneklenmiş profillemeyi yalnızca measureRepeated iş parçacığına filtreleyin (Ic3e12, b/217501939)

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

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

  • Compilation.None() kullanırken profil yüklemeyi atlama. Ayrıca, uygulama androidx.profileinstaller ve Android Gradle eklentisinin eski bir sürümünü kullanıyorsa uyarıları da bildirin. aosp/1977029

Sürüm 1.1.0-beta03

9 Şubat 2022

androidx.benchmark:benchmark-*:1.1.0-beta03 yayınlanır. 1.1.0-beta03 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Ses eksiklerinin algılanmasına izin vermek için AudioUnderrunMetric, deneysel işareti altında makro karşılaştırma kitaplığına eklendi (Ib5972)
  • BaselineProfileRule, profileBlock ile aynı işlevi gördüğü için artık setup bloğu kabul etmiyor. (Ic7dfe, b/215536447)

    Örneğin:

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

Hata Düzeltmeleri

  • Studio çıkışında bağlandığında mikro test profilleyicisi izlemelerinin sonraki çalıştırmalarda güncellenememesine neden olan sorun düzeltildi (I5ae4d, b/214917025)
  • API 23'te derleme kabuk komutlarını engelleme (Ice380)
  • Bu değerlerin zaman damgası değil, süre olduğunu belirtmek ve ön eklerle eşleştirmek için FrameCpuTime -> FrameDurationCpu, FrameUiTime -> FrameDurationUi olarak yeniden adlandırıldı. (I0eba3, b/216337830)

Sürüm 1.1.0-beta02

26 Ocak 2022

androidx.benchmark:benchmark-*:1.1.0-beta02 yayınlanır. 1.1.0-beta02 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Mikro karşılaştırma yığını örnekleme / yöntem izleme profili sonuçları artık diğer profilleme çıkışlarına benzer şekilde Studio çıkışında bağlanır ve ayırma metriğini bastırmaz. (Idcb65, b/214440748, b/214253245)
  • BaselineProfileRule, oluşturulan BaselineProfile metin dosyasını almak için artık logcat ve Studio çıkışında adb pull komutunu yazdırıyor. (f08811)

Sürüm 1.1.0-beta01

12 Ocak 2022

androidx.benchmark:benchmark-*:1.1.0-beta01 yayınlanır. 1.1.0-beta01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Profilleyici bağımsız değişkeninin etkinleştirilmesinin yoksayılmasını düzeltir. (I37373, b/210619998)
  • Desteği sonlandırılan CompliationModes (I98186, b/213467659) kaldırıldı
  • CompilationMode.Partial için taban profil bağımsız değişkenini daha anlaşılır olması amacıyla enum olarak değiştirdik. (Id67ea)

Sürüm 1.1.0-alpha13

15 Aralık 2021

androidx.benchmark:benchmark-*:1.1.0-alpha13 yayınlanır. 1.1.0-alpha13 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Android Q (API 29 ve sonraki sürümler) sürümündeki mikro test çıkışına düşük yükü olan sistem izleme ekleyin. Sonuçları etkilememek için bu özelliğin şu anda özel izlemeyi (android.os.Trace veya androidx.tracing Jetpack API'leri aracılığıyla) yakalamadığını unutmayın. Bu izleme, özellikle karşılaştırma ölçütünün dışındaki kaynaklardan kaynaklanan kararsızlığı teşhis etmede faydalı olacaktır. (I298be, b/205636583, b/145598917)
  • CompilationModes değerini Tam, Yok ve Kısmi olmak üzere üç sınıfa ayırın. Daha önce derleme bağımsız değişkenleri (artık uygulama ayrıntıları olarak kabul ediyoruz) ve özelliklere göre tutarsız bir şekilde adlandırılıyordu. Bu sayede, platform sürümleri arasındaki dengeler, olası kombinasyonlar ve davranış daha net bir şekilde anlaşılabilir. (I3d7bf, b/207132597)
  • Kurulum ve ölçüm artık her zaman sırayla çiftler halindedir. Artık paket adını ve iterasyonu sorgulayabilirsiniz (belirli ısınma senaryolarında iterasyon null olabilir). (Id3b68, b/208357448, b/208369635)

Hata Düzeltmeleri

  • CompilationMode.Speed'ün None olarak yanlış şekilde işlenmesi düzeltildi (I01137)

Sürüm 1.1.0-alpha12

17 Kasım 2021

androidx.benchmark:benchmark-*:1.1.0-alpha12 yayınlanır. 1.1.0-alpha12 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Özel izlemeye dayalı zamanlama ölçümleri için deneysel TraceSectionMetric'i ekleyin. (I99db1, b/204572664)

Hata Düzeltmeleri

  • Kullanıcı arayüzünün test edilebildiğinden emin olmak için her iterasyonda cihazı uyandırın. Bunun için kilit ekranının devre dışı bırakılması gerekir. (Ibfa28, b/180963442)
  • Emülatörlerde ve köklendirilmemiş cihazlarda StackSampling profilleme modunda birden fazla kilitlenme sorunu düzeltildi (Icdbda, b/202719335)
  • Her iterasyonun sonunda 0, 5 saniyelik uyku kaldırıldı.Bu değişiklikle birlikte eksik metrikler görürseniz lütfen bir hata kaydı gönderin. (Iff6aa)
  • Verilerin atlanma olasılığını azaltın ve izlemeden kaynaklanan bellek yükü azaltın (Id2544, b/199324831, b/204448861)
  • Kompakt planlı depolama biçimine geçerek izleme boyutunu yaklaşık% 40 oranında küçültün. (Id5fb6, b/199324831)
  • Başlangıç metriklerinin uygulamaları, her zaman renderthread'ın sonunda bitecek şekilde güncellendi. Bu, platform sürümleri arasında daha tutarlı olur ve uygulama içi ölçümlerle daha yakından eşleşir. (Ic6b55)

Sürüm 1.1.0-alpha11

3 Kasım 2021

androidx.benchmark:benchmark-*:1.1.0-alpha11 yayınlanır. 1.1.0-alpha11 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Makro karşılaştırma artık 23 minSdkVersion değerine sahip. (If2655)
  • Uygulamanın kritik kullanıcı yolculuğu için temel profiller oluşturabilen yeni bir deneysel BaselineProfileRule ekler. Ayrıntılı dokümanlar daha sonra paylaşılacak. (Ibbefa, b/203692160)
  • Yöntemi tamamlarken/çözerken belirsizliklere neden olduğu için Java çağırıcıları için eklenen measureRepeated arayüz varyantını kaldırır. Java'da çağrıyı yapanların, measureRepeated işlevinden Unit.Instance değerini döndürmesi gerekir. Bu durum size sorun teşkil ediyorsa lütfen hata bildirin. Bu konuyu gelecekteki bir sürümde yeniden ele alabiliriz. (Ifb23e, b/204331495)

Sürüm 1.1.0-alpha10

27 Ekim 2021

androidx.benchmark:benchmark-*:1.1.0-alpha10 yayınlanır. 1.1.0-alpha10 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • StartupTimingMetric'i API 23'e kadar çalışacak şekilde geriye dönük olarak taşıyın. Bu yeni uygulama, ilgili içeriğin oluşturulmasını beklemek için reportFullyDrawn() işlevini de daha iyi yönetir. (If3ac9, b/183129298)
  • Java çağrıcıları için birden fazla MacrobenchmarkScope yöntemine JvmOverloads eklendi. (I644fe, b/184546459)
  • Java dilinde idiomatik kullanım için Consumer<MacrobenchmarkScope> kullanan alternatif MacrobenchmarkRule.measureRepeated işlevi sağlayın. (If74ab, b/184546459)

Hata Düzeltmeleri

  • İzlemelerin yeterince erken başlamaması ve eksik metrik verileri sorununu düzeltme Bu sayede, kitaplığın kendisinden kaynaklanan "Karşılaştırma sırasında hiçbir metrik okunamıyor" istisnaları düzeltilebilir. (I6dfcb, b/193827052, b/200302931)
  • FrameNegativeSlack, anlamını (karenin zaman bütçesini ne kadar aştığını) açıklığa kavuşturmak için FrameOverrun olarak yeniden adlandırıldı. (I6c2aa, b/203008701)

Sürüm 1.1.0-alpha09

13 Ekim 2021

androidx.benchmark:benchmark-*:1.1.0-alpha09 yayınlanır. 1.1.0-alpha09 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • API 31/S+'te kök olmadan çekirdek sayfa önbelleğini bırakma desteği. Bu, StartupMode.COLD başlatmalarının doğruluğunu artıracaktır. (Iecfdb, b/200160030)

Sürüm 1.1.0-alpha08

29 Eylül 2021

androidx.benchmark:benchmark-*:1.1.0-alpha08 yayınlanır. 1.1.0-alpha08 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • API 23'e geri dönmek için kaydırma makro karşılaştırmalarını etkinleştirin (If39c2, b/183129298)
  • Kullanıcı arayüzüne ve JSON çıkışına, iterasyon başına birden fazla örneğin yüzdelik dilimlerine odaklanan yeni bir örneklenmiş metrik türü ekleyin. (I56247, b/199940612)
  • Karşılaştırma kitaplıklarında kayan noktalı metriklere geçin (Studio kullanıcı arayüzünde kısaltılır). (I69249, b/197008210)

Sürüm 1.1.0-alpha07

1 Eylül 2021

androidx.benchmark:benchmark-*:1.1.0-alpha07 yayınlanır. 1.1.0-alpha07 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Gelecekte desteklenecek en düşük API düzeyini yansıtmak için minimum API düzeyi 21'e yükseltildi. Şu anda desteklenen minimum API, RequiredApi() aracılığıyla iletilmeye devam etmektedir ve şu anda 29'dur (I440d6, b/183129298)

Hata Düzeltmeleri

  • Temel profil kullanan uygulamaların CompilationMode.BaselineProfile kullanarak makro karşılaştırma çalıştırmasını kolaylaştırmak için ProfileInstaller düzeltildi. (I42657, b/196074999) NOT: androidx.profileinstaller:profileinstaller:1.1.0-alpha04 veya sonraki bir sürüme güncelleme yapmanızı da gerektirir.
  • StartupMode.COLD + CompilationMode.None karşılaştırmaları artık daha kararlı. (I770cd, b/196074999)

Sürüm 1.1.0-alpha06

18 Ağustos 2021

androidx.benchmark:benchmark-*:1.1.0-alpha06 yayınlanır. 1.1.0-alpha06 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Yerel olarak test/profil oluştururken iterasyon sayısının manuel olarak geçersiz kılınmasına izin vermek için androidx.benchmark.iterations enstrümantasyon bağımsız değişkeni eklendi. (6188be, b/194137879)

Hata Düzeltmeleri

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

Bilinen Sorunlar

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

Sürüm 1.1.0-alpha05

4 Ağustos 2021

androidx.benchmark:benchmark-*:1.1.0-alpha05 yayınlanır. 1.1.0-alpha05 sürümü bu taahhütleri içerir.

1.1.0-alpha04, ara sıra yaşanan kilitlenme nedeniyle yayınlanmadan önce iptal edildi. b/193827052

API Değişiklikleri

  • startActivityAndWait işlevi, am start aracılığıyla başlatmayı çağıracak şekilde değiştirildi. Bu değişiklik, intent parcelable'ların artık desteklenmemesi pahasına her ölçüm iterasyonunun süresini yaklaşık 5 saniye azaltır. (I5a6f5, b/192009149

Hata Düzeltmeleri

  • Termal kısıtlama algılamanın agresifliğini azaltın ve sık sık kısıtlama algılanırsa referans değerini yeniden hesaplayın. (I7327b)
  • FrameTimingMetric'in Android S beta sürümünde çalışacak şekilde düzeltilmesi (Ib60cc, b/193260119)
  • CompilationMode.BaselineProfile'u daha iyi desteklemek için hedef uygulamayı zorla durdurma durumundan çıkarmak üzere bir EmptyActivity kullanın. (Id7cac, b/192084204)
  • Platform standardıyla eşleşecek şekilde izleme dosyası uzantısı .perfetto-trace olarak değiştirildi. (I4c236, b/174663039)
  • StartupTimingMetric artık uygulamanızın oluşturulmasını tamamlamasına kadar geçen süreyi ölçmek için "fullyDrawnMs" metriğini döndürüyor. Uygulamanız için bu metriği tanımlamak amacıyla, ilk içeriğiniz hazır olduğunda (ör. ilk liste öğeleriniz veritabanından veya ağdan yüklendiğinde) Activity.reportFullyDrawn işlevini çağırın. (ComponentActivity'de derleme sürümü kontrolleri olmadan reportFullyDrawn yöntemi kullanılabilir). Testinizin metriği yakalayacak kadar uzun süre çalıştırılması gerektiğini unutmayın (startActivityAndWait, reportFullyDrawn işlevini beklemez). (If1141, b/179176560)
  • Kullanıcı arayüzü meta verilerini izleyicilere ekleme maliyetini 50'den fazla ms azaltma (Ic8390, b/193923003)
  • İzlemeyi durdururken anket sıklığı önemli ölçüde artırıldı. Bu durum, örneğin, başlangıç karşılaştırma çalışma süresini %30'un üzerinde azaltabilir (Idfbc1, b/193723768)

Sürüm 1.1.0-alpha03

16 Haziran 2021

androidx.benchmark:benchmark-*:1.1.0-alpha03 yayınlanır. 1.1.0-alpha03 sürümü bu taahhütleri içerir.

Yeni Özellikler

Hata Düzeltmeleri

  • Karşılaştırma hatalarını bastırmaya yönelik örnek Gradle kodu, .gradle.kts kullanıcılarını da destekleyen bir söz dizimi içeren desteği sonlandırılmamış bir API kullanacak şekilde güncellendi.

    Örnek:

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

Sürüm 1.1.0-alpha02

18 Mayıs 2021

1.1.0-alpha02 sürümüne eklenen büyük bir bileşen olan makro karşılaştırma, karşılaştırma işlemlerine yeni bir boyut getiriyor. Karşılaştırma, CPU döngülerini ölçmenize olanak tanır. Makro Karşılaştırma ise başlangıç ve kaydırma gibi uygulama genelindeki etkileşimleri ölçmenize ve izleri yakalamanıza olanak tanır. Daha fazla bilgi için kitaplık dokümanlarını inceleyin.

androidx.benchmark:benchmark-*:1.1.0-alpha02 yayınlanır. 1.1.0-alpha02 sürümü bu taahhütleri içerir.

Yeni Özellikler

Makro karşılaştırma yapıları eklendi (androidx.benchmark:benchmark-macro-junit4 ve androidx.benchmark:benchmark-macro)

  • Uygulamanızdan yerel olarak veya CI'de başlatma, kaydırma/animasyon performansı metriklerini yakalama
  • Android Studio'dan izlemeleri yakalama ve inceleme

Hata Düzeltmeleri

  • Android 12'de çıkış dizini ile ilgili kabuk izinleri sorununun geçici çözümü (Not: Etkilenen cihazlarda çıkış dosyalarını yakalamaya devam etmek için Android Gradle eklentisini 7.0.0 canary ve Android Studio'yu Arctic Fox (2020.3.1) sürümüne güncellemeniz gerekebilir). (Icb039)
  • BenchmarkPlugin'da yapılandırma önbelleğe alma desteği (6be1c1, b/159804788)
  • Basitleştirilmiş dosya çıkışı: requestLegacyExternalStorage=true gerektirmeyen bir dizinde varsayılan olarak açıktır (8b5a4d, b/172376362)
  • Kitaplık baskısı, JIT iş parçacığının bulunmadığı platform sürümlerinde bulunmamasıyla ilgili logcat uyarılarını düzeltir. (I9cc63, b/161847393)
  • Okuma cihazı maksimum sıklığıyla ilgili düzeltme. (I55c7a)

Sürüm 1.1.0-alpha01

10 Haziran 2020

androidx.benchmark:benchmark-common:1.1.0-alpha01, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01 ve androidx.benchmark:benchmark-junit4:1.1.0-alpha01 yayınlandı. 1.1.0-alpha01 sürümü bu taahhütleri içerir.

1.1 sürümündeki yeni özellikler

  • Ayırma Metrikleri: Karşılaştırmalar artık ısınma ve zamanlamadan sonra ek bir aşama çalıştırarak ayırma sayılarını yakalar. Ayırma işlemleri, platformun eski sürümlerinde performans sorunlarına neden olabilir (O sürümünde 140 ns olan bu değer, M sürümünde 8 ns'ye düştü. Bu değer, kilitli saatler ile Nexus5X'te ölçüldü). Bu metrik, Android Studio konsol çıkışında ve
  • Profil oluşturma desteği: Artık kodunuzun neden yavaş çalıştığını incelemek için karşılaştırma çalışması için profil oluşturma verilerini yakalayabilirsiniz. Karşılaştırma, ART'den yöntem izleme veya yöntem örnekleme işlemlerini yakalamayı destekler. Bu dosyalar, Dosya > Aç seçeneği kullanılarak Android Studio'daki Profilleyici ile incelenebilir.
  • Karşılaştırma Gradle eklentisi artık daha kolay kurulum için varsayılan değerler sağlar:
    • testBuildType, yerleşik kod kapsamına sahip bağımlılıkların kullanılmasını önlemek için varsayılan olarak yayın olarak ayarlanır. Yayın buildType'i, varsayılan buildType olarak da yapılandırılır. Bu, Android Studio'nun bir projeyi ilk kez açarken doğru derleme varyantını otomatik olarak seçmesine olanak tanır. (b/138808399)
    • Varsayılan imzalama yapılandırması olarak signingConfig.debug kullanılır (b/153583269)

** Hata Düzeltmeleri **

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

Bilinen Sorunlar

  • Benchmark'ın komut satırı ve gradle çağrıları sonuçları doğrudan yazdırmaz. Bu sorunu, Studio'yu kullanarak veya JSON çıkış dosyasını ayrıştırarak çözebilirsiniz.
  • Karşılaştırma raporlaması, "android" veya "download" ile biten bir applicationId'ye sahip uygulamanın yüklü olduğu cihazlardan raporu alamaz (büyük/küçük harf duyarlı değildir). Bu sorunla karşılaşan kullanıcıların Android Gradle eklentisini 4.2-alpha01 veya sonraki bir sürüme yükseltmesi gerekir.

Sürüm 1.0.0

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

20 Kasım 2019

androidx.benchmark:benchmark-common:1.0.0, androidx.benchmark:benchmark-gradle-plugin:1.0.0 ve androidx.benchmark:benchmark-junit4:1.0.0, 1.0.0-rc01 sürümüne kıyasla herhangi bir değişiklik içermeden yayınlanmıştır. 1.0.0 sürümü bu taahhütleri içerir.

1.0.0 sürümünün önemli özellikleri

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

Oluşturma ve çalışma zamanı yapılandırma sorunlarını önler ve ölçümlerin doğru ve tutarlı olmasını sağlamak için cihaz performansını dengeler. Zaman içindeki kod performansını gözlemlemek ve gerilemelerin önüne geçmek için karşılaştırmaları doğrudan Android Studio'da veya Sürekli Entegrasyon'da çalıştırın.

Başlıca özellikler:

  • Saat sabitleme
  • Otomatik ileti dizisi önceliği belirleme
  • RecyclerView Örneği'nde olduğu gibi kullanıcı arayüzü performansı testi desteği
  • JIT uyumlu ısıtma ve döngü
  • Sonraki işleme için JSON karşılaştırma çıkışı

Sürüm 1.0.0-rc01

23 Ekim 2019

androidx.benchmark:benchmark-common:1.0.0-rc01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01 ve androidx.benchmark:benchmark-junit4:1.0.0-rc01 yayınlandı. 1.0.0-rc01 sürümü bu taahhütleri içerir.

Yeni özellikler

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

Hata düzeltmeleri

  • Öncelik düşürme nedeniyle JIT'nin ısınmadan önce bitmediği metrik kararsızlığı sorunu düzeltildi (b/140773023)
  • Android Gradle eklentisi 3.5 ve 3.6'da birleşik JSON çıkış dizini

Sürüm 1.0.0-beta01

9 Ekim 2019

androidx.benchmark:benchmark-common:1.0.0-beta01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01 ve androidx.benchmark:benchmark-junit4:1.0.0-beta01 yayınlandı. 1.0.0-beta01 sürümü bu taahhütleri içerir.

Yeni özellikler

  • Bir karşılaştırma testinden diğerine sızan bellek basıncını azaltmak için her ısınmadan önce çöp toplama işlemini çalıştırın (b/140895105)

Hata düzeltmeleri

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

Sürüm 1.0.0-alpha06

18 Eylül 2019

androidx.benchmark:benchmark-common:1.0.0-alpha06, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06 ve androidx.benchmark:benchmark-junit4:1.0.0-alpha06 yayınlandı. 1.0.0-alpha06 sürümü bu taahhütleri içerir.

Yeni özellikler

  • Test çalıştırıcı için eski paketin yanlış kullanılmasıyla ilgili bir kontrol eklendi. Bu sayede artık daha faydalı bir hata mesajı gösteriliyor.

API değişiklikleri

  • Deneysel ek açıklama ExperimentalAnnotationReport artık herkese açık. Deneysel BenchmarkState#report API'sinin kullanımı artık bu ek açıklamayı gerektiriyor

Sürüm 1.0.0-alpha05

5 Eylül 2019

androidx.benchmark:benchmark-common:1.0.0-alpha05, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05 ve androidx.benchmark:benchmark-junit4:1.0.0-alpha05 yayınlandı. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

API değişiklikleri

  • BenchmarkState.reportData API artık deneysel olarak işaretlendi

Hata düzeltmeleri

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

Sürüm 1.0.0-alpha04

7 Ağustos 2019

androidx.benchmark:benchmark-common:1.0.0-alpha04, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04 ve androidx.benchmark:benchmark-junit4:1.0.0-alpha04 yayınlandı. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Ayrıca, hem farklı derleme sistemleriyle (Bazel veya Buck gibi) hem de CI'de çalışırken Benchmark kitaplığının Gradle olmadan nasıl kullanılacağıyla ilgili yeni dokümanlar eklendi. Daha fazla bilgi için Gradle olmadan karşılaştırma oluşturma ve Sürekli Entegrasyon'da karşılaştırma çalıştırma başlıklı makaleleri inceleyin.

Yeni özellikler

  • Gradle eklentisi
    • Artık test kapsamını otomatik olarak devre dışı bırakır ve AndroidBenchmarkRunner değerini varsayılan olarak ayarlar (b/138374050)
    • Karşılaştırmalar çalıştırırken ve AGP 3.6 veya sonraki sürümleri kullanırken yeni AGP tabanlı veri kopyalama desteği eklendi
  • JSON biçimi eklemeleri
    • Çıkış toplam karşılaştırma testi çalışma süresi (b/133147694)
    • Ad dizesi kullanan @Parameterized karşılaştırmaları (ör. @Parameters(name = "size={0},depth={1}")), artık JSON çıkışında karşılaştırma başına parametre adlarını ve değerlerini döndürüyor (b/132578772)
  • Prova modu (b/138785848)
    • Ölçümleri yakalamadan hataları/kilitlenmeleri kontrol etmek için her karşılaştırma döngüsünü yalnızca bir kez çalıştırmak üzere bir "kuru çalıştırma" modu eklendi. Bu, örneğin, bozuk olmadıklarını kontrol etmek için göndermeden önce karşılaştırmaları hızlı bir şekilde çalıştırmak için yararlı olabilir.

API değişiklikleri

  • Modül yapısı değişti, kitaplık bölündü (b/138451391)
    • benchmark:benchmark-junit4, JUnit bağımlılığı olan sınıflar içerir: AndroidBenchmarkRunner ve BenchmarkRule. Bu sınıfların ikisi de androidx.benchmark.junit4 paketine taşındı.
    • benchmark:benchmark-common, BenchmarkState API dahil olmak üzere mantığın geri kalanını içerir.
    • Bu bölme, kitaplığın gelecekte JUnit4 API'leri olmadan karşılaştırma yapmayı desteklemesine olanak tanıyacak.
  • Yapılandırma uyarıları artık hata olarak değerlendirilir ve testi kilitler (b/137653596)
    • Bu, özellikle CI'de doğru ölçümleri daha da teşvik etmek için yapılır.
    • Bu hatalar, bir enstrümantasyon bağımsız değişkeni kullanılarak uyarıya dönüştürülebilir. Örneğin: -e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"

Hata düzeltmeleri

  • Q cihazlarda harici depolama alanına yazmayla ilgili hatalar, sorunun nasıl çözüleceğine dair öneriler içeren daha açıklayıcı mesajlar sağlar.
  • Ekranlar, kapalıyken başarısız olmak yerine karşılaştırma çalışmaları sırasında otomatik olarak açılır.

Harici katkılar

  • JSON çıkışı iyileştirmelerine ve ekran kapalıyken yaşanan sorunlara yönelik düzeltmeye katkıda bulunan Sergey Zakharov'a teşekkür ederiz.

Sürüm 1.0.0-alpha03

2 Temmuz 2019

androidx.benchmark:benchmark:1.0.0-alpha03 ve androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03 yayınlandı. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Yeni özellikler

  • Tam JSON raporunda, karşılaştırma başına termal sınırlama nedeniyle uyku süresini gösterin.

Hata düzeltmeleri

  • Android eklentileri ve Android bloğu uygulandıktan sonra Gradle eklentisinin uygulanması artık gerekmez.
  • Android 10 cihazlarda kapsamlı depolama alanını kullanan karşılaştırma raporları için destek eklendi

Sürüm 1.0.0-alpha02

6 Haziran 2019

androidx.benchmark:1.0.0-alpha02 ve androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02 yayınlandı. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

JSON şemasını bir API olarak ele aldığımızı unutmayın. Diğer API'lerle aynı kararlılık kısıtlamalarını uygulamayı planlıyoruz: Beta sürümünde kararlı (çok nadir istisnalar dışında) ve nihai sürümde düzeltilmiş, yalnızca küçük sürümlerde eklemeler ve büyük sürümlerde değişiklik/kaldırma işlemi yapılır.

API değişiklikleri

  • JSON şeması tamamen yenilendi. JSON şemasında yapılacak diğer değişikliklerin eklemelerle sınırlı olması muhtemeldir:

    • Sonuç nesnesi yapısı, gelecekte ek metrik gruplarını destekleyecek şekilde yeniden düzenlendi (b/132713021)
    • Cihaz ve derleme bilgileri ile saatlerin kilitli olup olmadığı gibi test çalıştırma bağlam bilgileri üst düzey nesneye eklendi (b/132711920)
    • Zaman metriği adlarında artık "ns" var (b/132714527)
    • Raporlanan her metrik için ek istatistikler eklendi (maksimum, medyan, minimum) ve basitleştirilmiş "nanos" özet istatistiki kaldırıldı (b/132713851)
  • XML çıkışı kaldırıldı (b/132714414)

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

Hata düzeltmeleri

  • ./gradlew lockClocks'ün bazı yeni işletim sistemli cihazlarda takılması sorunu düzeltildi (b/133424037)
  • Throttling algılama, emülatör için devre dışı bırakıldı (b/132880807)

Sürüm 1.0.0-alpha01

7 Mayıs 2019

androidx.benchmark:benchmark:1.0.0-alpha01 yayınlanır. Bu sürüme dahil edilen taahhütler burada bulunabilir.