Karşılaştırma

Kodunuzun performansını Android Studio'da doğru şekilde ölçün.
Son Güncelleme Kararlı sürüm Sürüm Adayı Beta Sürümü Alfa sürümü
30 Temmuz 2025 1.4.0 - - -

Bağımlılıkları bildirme

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

Macrobenchmark

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

Groovy

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

Kotlin

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

Mikro karşılaştırma testi

Projenizde Microbenchmark'ı kullanmak için build.gradle dosyanıza mikro karşılaştırma modülünüzle ilgili aşağıdaki bağımlılıkları ekleyin:

Groovy

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

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

Kotlin

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

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

The Microbenchmark library also provides a Gradle plugin to use with your microbenchmark module. This plugin sets build configuration defaults for the module, sets up benchmark output copy to the host, and provides the ./gradlew lockClocks task.

To use the plugin, include the following line in the `plugins` block in your top-level build.gradle file:

Groovy

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

Kotlin

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

Then apply the plugin to your benchmark module's build.gradle file

Groovy

plugins {
  id 'androidx.benchmark'
}

Kotlin

plugins {
    id("androidx.benchmark")
}

Geri bildirim

Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz olursa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.

Yeni sorun oluşturma

Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.

Sürüm 1.4

Sürüm 1.4.0

30 Temmuz 2025

androidx.benchmark:benchmark-*:1.4.0 iptal edilir. 1.4.0 sürümü bu commit'leri içerir.

1.3.0 sürümünden beri yapılan önemli değişiklikler

Mikro karşılaştırma testi

  • Gradle proje yalıtımına uymak için Gradle görevleri lockClocks ve unlockClocks, en üst düzeyde değil, karşılaştırma projelerinde olacak şekilde taşındı.
  • BenchmarkRule, coroutine'ler üzerine kurulacak ve daha iyi yield() davranışı destekleyecek şekilde yeniden düzenlendi. Bu, özellikle uzun CI çalıştırmaları sırasında karşılaşılan ANR riskini önemli ölçüde azaltır. Not: Kullanıcı arayüzü karşılaştırmaları measureRepeatedOnMainThread ile çalıştırılmalıdır.

Macrobenchmark

  • CompilationMode.None() için API 34 ve sonraki sürümlerde geçici çözüm eklendi. ART'nin, ilk başlatmadan sonra uygulamaları kısmen derlemesi nedeniyle tutarsız performans sorunu yaşanıyordu.
  • Deneysel özellik: Başlangıç analizleri, MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true))) iletilerek bir başlangıç makro karşılaştırma testindeki belirli yaygın sorunları vurgulayabilir.
  • JIT derlemesini ve optimize edilmemiş sınıf yüklemeyi algılamak için kullanılabilecek ArtMetric eklendi. Bu metrikler, temel profil optimizasyonlarını doğrulamak için kullanışlıdır.

Temel profiller

  • BaselineProfileRule artık çok süreçli uygulamalar için profiller topluyor.

Diğer değişiklikler

  • TraceProcessor, Macrobenchmark metriklerinin dışında diğer durumlarda da kullanılabilmesi için kendi kitaplığına (androidx.benchmark:benchmark-traceprocessor) taşındı. Ayrıca kendi ServerLifecycleManager'ınızı tanımlayarak masaüstü JVM'de de çalıştırılabilir.

Sürüm 1.4.0-rc01

18 Haziran 2025

androidx.benchmark:benchmark-*:1.4.0-rc01 iptal edilir. 1.4.0-rc01 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Çalışma zamanı görüntülerinin, ilk yinelemeden sonra CompilationMode.None()'nın en kötü durum performansını ölçmemesine neden olmasıyla ilgili geçici çözüm eklendi. Maalesef bu geçici çözüm, her makrobenchmark paketi başlangıcında çalışma zamanı görüntüsünü kasıtlı olarak bozmak için 5 saniyelik bir gecikme gerektiriyor (I4a4f1).

Sürüm 1.4.0-beta02

4 Haziran 2025

androidx.benchmark:benchmark-*:1.4.0-beta02 iptal edilir. 1.4.0-beta02 sürümü bu commit'leri içerir.

API Değişiklikleri

  • Java geliştiricilerin BaselineProfileRule.collectWithResults()'yi aramalarını kolaylaştırmak için BaselineProfileConfig.Builder eklendi. (I94905)

Sürüm 1.4.0-beta01

7 Mayıs 2025

androidx.benchmark:benchmark-*:1.4.0-beta01 iptal edilir. 1.4.0-beta01 sürümü bu commit'leri içerir.

API Değişiklikleri

  • PerfettoTraceRule (Ie53ba) kabul eden PerfettoConfig oluşturucu varyantı eklendi.

Hata Düzeltmeleri

  • Doğru eklentinin kullanılması ve daha net bir sınırlayıcı (:, %3A'den kısadır ve her ikisi de desteklenir) için TraceProcessor başlangıç bilgisi bağlantı biçimi güncellendi (Ie18ef).
  • Root edilmiş ve sistem uygulamaları kapatılıyor olsa bile işlemleri kapatmak için her zaman zorla durdurma özelliğini kullanın. Expected no stdout/stderr from killall ... No such process biçimindeki istisnaları düzeltir. (Idca2c)

Harici Katkı (External Contribution)

  • TraceProcessorHttpServer için proxy istisnası işleyicisi eklendi (I480f5)

Sürüm 1.4.0-alpha11

9 Nisan 2025

androidx.benchmark:benchmark-*:1.4.0-alpha11 iptal edilir. 1.4.0-alpha11 sürümü bu commit'leri içerir.

API Değişiklikleri

  • Java arayanın kullanılabilirliği için TraceProcessor bağımsız değişkeninin zaman aşımı süresi, timeoutMs uzunluğuna değiştirildi. (I9fbb5)
  • TraceProcessor oluşturucusunu dahili olarak işaretleyin. Arayanlar TraceProcessor.startServer veya TraceProcessor.runServer kullanmalıdır. (Ia8c5b)

Hata Düzeltmeleri

  • Uygulamayı MacrobenchmarkScope.killProcess ile sonlandırırken sessiz hata ve zaman aşımı hatasını önlemek için sonlandırma komutunun sonuçlarını doğrulayın. (I84555)

Bağımlılık Güncellemeleri

  • Bu kitaplık artık Kotlin 2.0 dil seviyesini hedefliyor ve KGP 2.0.0 veya daha yeni bir sürüm gerektiriyor. (Idb6b5)

Sürüm 1.4.0-alpha10

26 Mart 2025

androidx.benchmark:benchmark-*:1.4.0-alpha10 iptal edilir. 1.4.0-alpha10 sürümü bu commit'leri içerir.

API Değişiklikleri

  • TraceProcessor Sunucu yükü ve sorgulama için varsayılan zaman aşımı süresi 120 saniyeye (önceki 60/30 saniyeden) çıkarıldı ve her ikisi de tek bir zaman aşımı parametresiyle yapılandırılabilir hale getirildi. (Ifec87)

Hata Düzeltmeleri

  • profileinstaller içermeyen bir uygulamanın karşılaştırması yapılırken veya profilleri yakalanırken ortaya çıkan ve BroadcastReciever'nin dahil olduğu bazı sorunlar düzeltildi. Bu durum yalnızca root edilmiş cihazlardaki çalıştırmaları etkiler. (Ied308)

Sürüm 1.4.0-alpha09

12 Mart 2025

androidx.benchmark:benchmark-*:1.4.0-alpha09 iptal edilir. 1.4.0-alpha09 sürümü bu commit'leri içerir.

API Değişiklikleri

  • Özel yaşam döngüleriyle daha kolay kullanım için kapatılabilir işleyicilere sahip TraceProcessor ve Session API eklendi. Bu, Coroutine ve Java API'nin daha kolay kullanılmasını sağlama yolunda da bir adımdır. TraceProcessor.runServer {} işlevleri, gelecekte taşınma ve deneysel olmayan hale getirilme olasılıkları nedeniyle artık deneysel olarak işaretleniyor. (I358b4)

Hata Düzeltmeleri

  • pgrep toybox'ta yapılan ve artık tam komut satırının yazdırılması için -a gerektiren bir değişiklik nedeniyle, API 36 ile çalışmayan karşılaştırma ve temel profil yakalama sorunu düzeltildi. (Idc991)
  • Daha yeni API düzeylerindeki izlemelerde veri kaybı riskini azaltmak için varsayılan izleme yapılandırmasını filtreleyin. (I54e8a)
  • Mevcut Perfecto iz yakalamanın devam etmesine izin vermek için false olarak ayarlanabilen deneysel androidx.benchmark.killExistingPerfettoRecordings enstrümantasyon bağımsız değişkeni eklendi. Varsayılan olarak, cihazda önceden mevcut olan Perfetto izleme kayıtları, müdahaleyi önlemek için sonlandırılır. (I02a3c)
  • Sayısal olmayan kod adları artık temel platform tarafından desteklenmediğinden, API 35 ve üzeri sürümlerde yayınlanan işletim sistemi sürümlerinde context.osCodenameAbbreviated JSON alanı artık REL olacak. (Ib17fd)
  • Kareler yeniden senkronize edildiğinde FrameTimingMetric'da kilitlenme sorunu düzeltildi. (I7c6f4, b/394610806)
  • Artık Choreographer#doFrame'nın FrameTimingQuery için ana iş parçacığındaki yığın çerçevesinin en üstünde olduğu varsayılmaz. (Iee0e0, b/340206285)

Sürüm 1.4.0-alpha08

12 Şubat 2025

androidx.benchmark:benchmark-*:1.4.0-alpha08 iptal edilir. 1.4.0-alpha08 sürümü şu commit'leri içerir.

API Değişiklikleri

  • TraceProcessor.runSession() uzantısı API'leri, Android'de nihai oluşturuculara dönüşme ihtimali olduğundan deneysel olarak taşındı. (Ib0528, b/393640753)
  • Startup Insights'ın çoğu uygulaması artık herkese açık/deneyseldir ve TraceProcessor yapısına taşınmıştır. StartupInsights başlıklı makaleyi inceleyin. (I0aa00)
  • BenchmarkRule.runWithTimingDisabled {} yerine BenchmarkRule.runWithMeasurementDisabled {} kullanın. Bu durum, davranışı daha net bir şekilde tanımlar: Tüm metrikler duraklatılır. Ayrıca, runWithMeasurementDisabled işlevi satır içi olduğundan erişimi açmak için yeniden tanımlamak mümkün olmadığından MicrobenchmarkScope üst sınıfını kullanıma sunun. (I9e23b, b/389149423, b/149979716)
  • Benchmark kitaplıkları Kotlin 2.0'a taşındı. (I9d1e0)
  • androidx.benchmark.startupProfiles.enable enstrümantasyon bağımsız değişkeni kaldırıldı. includeInStartupProfile içindeki BaselineProfileRule.collect() argümanı tarafından kontrol edilebildiği için artık yararlı değildir. (I39eb4)

Hata Düzeltmeleri

  • Örneğin, yöntem izlerinin daha net olması için profilleme sırasında çağrılan Microbenchmark dahili işlevlerinin sayısı azaltıldı (Ifaed8).
  • Kilitlenmeler için spekülatif düzeltme: "[ProcessPid(processName=perfetto, pid=...)] durdurulamadı". Artık karşılaştırma çalıştırılmadan önce arka plandaki bir Perfetto işlemi durdurulamadığında kilitlenme yerine mesaj kaydedilecek. (I37d3e, b/323601788)
  • Aşırı katı çıkış biçimi kontrolünden kaynaklanan "Beklenen pm dump-profiles stdout" etiketli IllegalStateExceptions sorununu düzeltin. (I358dc)

Sürüm 1.4.0-alpha07

29 Ocak 2025

androidx.benchmark:benchmark-*:1.4.0-alpha07 iptal edilir. 1.4.0-alpha07 sürümü bu commit'leri içerir.

Yeni Özellikler

  • BaselineProfileRule artık hesaplanmış profillerin yollarının listesini içeren bir collectWithResults(...) API'si sunuyor. (I056f8)
  • Yerel test için measureRepeatedOnMainThread öğesinin son tarihte hata verme davranışını devre dışı bırakmak üzere false olarak ayarlanabilen androidx.benchmark.measureRepeatedOnMainThread.throwOnDeadline enstrümantasyon bağımsız değişkeni eklendi. Testler sırasında ANR olasılığını artırdığı için başka bir şekilde önerilmez. (Idbeec, b/353226476)

API Değişiklikleri

  • @JvmOverloads, MicrobenchmarkConfig oluşturucusuna eklendi. (I13fd3)
  • BenchmarkRule, coroutine'ler üzerine kurulacak ve daha iyi yield() davranışı destekleyecek şekilde yeniden düzenlendi. Bu yeniden düzenleme, deneysel BenchmarkState API'lerin birçoğunu kaldırdı ancak gerektiğinde yerlerine yenileri eklenecek. Ayrıca, davranışı netleştirmek için runWithMeasurementDisabled eklendi (tüm ölçüm duraklatılır). Gelecekte runWithTimingDisabled desteği sonlandırılacaktır. (I19837, b/389149423, b/311242861)
  • PerfettoTraceProcessor'yı yeni bir androidx.benchmark:benchmark-traceprocessor yapay nesnesinde TraceProcessor'ye taşıyın ve API'sinin çoğunu deneysel olmayan hale getirin. Özel TraceMetric veya izlerden okunan her şeyin yeni TraceProcessor içe aktarma işlemine güncellenmesi gerekir. Yeni TraceProcessor API, eski API ile aynı şekilde çalışır ancak macrobenchmark'a yerleştirilmiş Android'e özgü bir uygulamaya sahip bağımsız bir arayüz kitaplığıdır (Room'daki androidx.sqlite katmanına benzer). Yeni yapay ürün JVM'de de kullanılabilir ancak şu anda TraceProcessor ikilisinin kendi kopyanızı başlatmanız ve bağlanmak için bir bağlantı noktası sunmanız gerekir. (I3a767, I62563, b/381134564)

Hata Düzeltmeleri

  • MacrobenchmarkScope.startActivityAndWait hedef işlemi başlatamadığında (hedef işlemde kilitlenme nedeniyle olabilir) daha belirsiz olan "Etkinlik başlatma işleminin tamamlandığı onaylanamıyor" mesajı yerine daha net bir hata mesajı gösterilir (I3539b).
  • Kotlin örneklerindeki çeşitli söz dizimi hataları ve çeşitli Java / build.gradle örneklerindeki söz dizimi vurgulama sorunları düzeltildi. (Ib3808)
  • ArtMetric ve CaptureInfo parametreleriyle ilgili belgeler daha net hale getirildi. (I96e60)

Sürüm 1.4.0-alpha06

11 Aralık 2024

androidx.benchmark:benchmark-*:1.4.0-alpha06 iptal edilir. 1.4.0-alpha06 sürümü bu commit'leri içerir.

API Değişiklikleri

  • Studio'da vurgulama/ayrıştırma işlevi bozuk olduğundan PerfettoTraceProcessor.Session.query() içinde @Language("sql") kullanımı kaldırıldı. (Idc2fa, b/377733398)

Hata Düzeltmeleri

  • Bu kitaplık artık tür kullanımı olan JSpecify nullness ek açıklamalarını kullanıyor. Kotlin geliştiricileri, doğru kullanımı zorunlu kılmak için aşağıdaki derleyici bağımsız değişkenini kullanmalıdır: -Xjspecify-annotations=strict (bu, Kotlin derleyicisinin 2.1.0 sürümünden itibaren varsayılan değerdir). (I46810, b/326456246)
  • Sınıf yüklemesini (başlatma değil) bildirmek için ArtMetric düzeltildi ve dokümanlar, çalışma zamanı davranışını netleştirmek için iyileştirildi. (I9915c)
  • Android'de çok kullanıcılı modda, komutları yalnızca rootlanmış cihazlarda root olarak yürütün. (I88b44)

Sürüm 1.4.0-alpha05

13 Kasım 2024

androidx.benchmark:benchmark-*:1.4.0-alpha05 iptal edilir. 1.4.0-alpha05 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • API 34 ve sonraki sürümlerde, CompilationMode.None()'nın ilk ve en kötü durum performansını temsil etmeyen tutarsız bir performansa sahip olmasına neden olan sorun düzeltildi. Bu, ART'nin derleme durumunun verify ilk başlatmadan kısa süre sonra uygulamaları kısmen derlemesine (yalnızca sınıf yüklemeyi etkiler) olanak tanıyan bir platform değişikliğinin geçici çözümüdür. (Ie48d0)
  • Perfetto izinde işlem adı kısaltıldığından, yerleşik Macrobenchmark metriklerinden ölçüm raporlamayan (özellikle kısa) izlerin yakalanabildiği sorun düzeltildi. Macrobenchmark, beklenen paket adının yanı sıra tüm yerleşik sorgularda kısaltılmış paket adını arayarak bu sorunu çözmektedir. Özel TraceMetric uygulamalarının veya PerfettoSession.query'nin diğer doğrudan arayanlarının, Perfetto sorgusunda process.name LIKE "$packageName" yerine (process.name LIKE "$packageName" OR process.name LIKE "$(packageName.takeLast(15))")'ü kullanarak aynı davranışı uygulayabileceğini unutmayın. (I5bf01, b/377565760)

Sürüm 1.4.0-alpha04

30 Ekim 2024

androidx.benchmark:benchmark-*:1.4.0-alpha04 iptal edilir. 1.4.0-alpha04 sürümü bu commit'leri içerir.

Yeni Özellikler

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

Hata Düzeltmeleri

  • isProfileable artık karşılaştırma derlemelerinde her zaman geçersiz kılınıyor. isDebuggable ise artık hem karşılaştırma hem de nonMinified (temel profil yakalama) derlemelerinde her zaman geçersiz kılınıyor. (I487fa, b/369213505)
  • API 28'den önceki bazı fiziksel cihazlarda derleme algılamasıyla ilgili sorunlar düzeltildi. Bu düzeltme, context.compilationMode JSON'u ve androidx.benchmark.requireAot=true davranışını etkiler (artık yanlışlıkla hata vermez). (Ic3e08, b/374362482)
  • CpuEventCounter metriklerinde, geçersiz ölçümler gözlemlenirse (ör.instructions/cpucycles==0) hata verilir (I8c503).

Sürüm 1.4.0-alpha03

16 Ekim 2024

androidx.benchmark:benchmark-*:1.4.0-alpha03 iptal edilir. 1.4.0-alpha03 sürümü bu commit'leri içerir.

API Değişiklikleri

  • Macrobenchmark: Profil kapsamını veya genel Android RunTime performansını incelemek için kullanılabilecek ArtMetric öğesini ekler. JIT, sınıf başlatma (varsa) ve sınıf doğrulama sayısını ve toplam süresini yakalar. Ayrıca, değişiklikler CaptureInfo varsayılan olarak isteğe bağlı ART ana sürümünü içerecek şekilde değiştirildi. (I930f7)
  • Belirli bir karşılaştırma çalıştırması içindeki kararlılığı göstermek için karşılaştırma JSON çıkışına coefficientOfVariation ekleyin. (Ib14ea)

Hata Düzeltmeleri

  • AVD cihazında boşluk olduğunda CollectBaselineProfileTask düzeltildi. (Ia0225, b/371642809)
  • StartupMode.COLD istisnalarından kaynaklanan hatalar için spekülatif düzeltme: Package <packagename> must not be running prior to cold start!. Artık MacrobenchmarkScope.killProcess() (her yinelemeden önce çalıştırılan ve StartupMode.COLD davranışını uygulamak için kullanılan dahil) uygulamanın işlemlerinin tümünün durdurulduğunu doğrulamak için bekleyecektir. (I60aa6, b/351582215)
  • Bazı root edilmiş emülatörlerde UNLOCKED_ hatasının gösterilmesine neden olan sorun düzeltildi. (Ic5117)
  • Bu kitaplık artık tür kullanımı olan JSpecify nullness ek açıklamalarını kullanıyor. Kotlin geliştiricileri, doğru kullanımı zorunlu kılmak için aşağıdaki derleyici bağımsız değişkenini kullanmalıdır: -Xjspecify-annotations=strict (bu, Kotlin derleyicisinin 2.1.0 sürümünden itibaren varsayılan değerdir). (I7104f, b/326456246)

Sürüm 1.4.0-alpha02

2 Ekim 2024

androidx.benchmark:benchmark-*:1.4.0-alpha02 iptal edilir. 1.4.0-alpha02 sürümü bu commit'leri içerir.

API Değişiklikleri

  • Gradle görevleri lockClocks ve unlockClocks, üst düzeyde kullanılabilir olmak yerine karşılaştırma ölçütü projelerinde kullanılacak şekilde taşındı. Bu değişiklik, proje izolasyonunu bozmadan bunları üst düzey işlemler olarak kaydetmenin maalesef bir yolu olmadığı için gerekliydi. (I02b8f, b/363325823)

Hata Düzeltmeleri

  • BaselineProfileRule artık çok süreçli uygulamalar için profilleri, blokun sonunda çalışan her süreci profilleri boşaltmak üzere işaretleyerek topluyor. Profile dayalı derleme, yayınlanacak bir süreci hiçbir zaman başarıyla bulamazsa derleme başarısız olur. Bunun nedeni, profil verilerinin derleme içinde bulunmasının beklenmemesidir. Ayrıca, döküm bekleme süresini kontrol etmek için bir enstrümantasyon bağımsız değişkeni eklendi: androidx.benchmark.saveProfileWaitMillis (I0f519, b/366231469)
  • Benchmark'tan 1.3.2: Firebase Test Lab'in (FTL) Baseline Profile Gradle eklentisinden Baseline Profile veya Macrobenchmark sonuç dosyalarını çekememesi sorunu düzeltildi. (I2f678, b/285187547)

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

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

ve ardından Firebase Test Lab'i şu şekilde yapılandırın:

  firebaseTestLab {

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

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

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

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

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

Sürüm 1.4.0-alpha01

18 Eylül 2024

androidx.benchmark:benchmark-*:1.4.0-alpha01 iptal edilir. 1.4.0-alpha01 sürümü şu commit'leri içerir.

Yeni özellik: Uygulama başlatma analizleri

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

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

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

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

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

Bu özellik henüz geliştirme aşamasındadır. Dokümanlarda ve genişletilebilirlik konusunda iyileştirmeler yapılmaya devam edecektir. Geri bildirimlerinizi bekliyoruz.

Yeni Özellikler

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

API Değişiklikleri

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

Hata Düzeltmeleri

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

Sürüm 1.3

Sürüm 1.3.4

26 Mart 2025

androidx.benchmark:benchmark-*:1.3.4 iptal edilir. 1.3.4 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Benchmark Baseline Gradle eklentisindeki Gradle proje izolasyonu uyumsuzlukları düzeltildi. (b/404523257)

Sürüm 1.3.3

16 Ekim 2024

androidx.benchmark:benchmark-*:1.3.3 iptal edilir. 1.3.3 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

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

Sürüm 1.3.2

2 Ekim 2024

androidx.benchmark:benchmark-*:1.3.2 iptal edilir. 1.3.2 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Firebase Test Lab'in (FTL) Baseline Profile Gradle eklentisinden Baseline Profile veya Macrobenchmark sonuç dosyalarını çekememesi sorunu düzeltildi. (I2f678, b/285187547)

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

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

ve ardından Firebase Test Lab'i şu şekilde yapılandırın:

  firebaseTestLab {

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

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

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

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

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

Sürüm 1.3.1

18 Eylül 2024

androidx.benchmark:benchmark-*:1.3.1 iptal edilir. 1.3.1 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Tüm temel profil uyarılarını (I7c36e, b/349646646) bastırmak için gradle özelliği androidx.baselineprofile.suppressWarnings eklendi.
  • Sarmalayıcı oluşturmak yerine uygulama tarafından oluşturulmuşsa önceden var olan nonMinified… ve benchmark… kullanmak için Baseline Profile Gradle eklentisi düzeltildi. (Ia8934, b/361370179)
  • Emülatörlerde automaticGenerationDuringBuild etkinleştirildiğinde java.lang.AssertionError: ERRORS (not suppressed): EMULATOR sorunu düzeltildi. Bunun yerine testi atlamak için yeni bir bağımsız değişken kullanılır. (If3f51, b/355515798)
  • Küçültme için mikro karşılaştırma: org.junit.runner.notification.RunListener alt sınıflarını karşılaştırma kitaplığı proguard'da tutun (Ic8ed5, b/354264743)
  • TraceSectionMetric seçeneğini belirleyerek sonlandırılmayan dilimleri yoksayın. Daha önce bunlar, toplama veya minimum süreyi bulma sırasında -1 süreye sahip olarak kabul ediliyordu. (If74b7)
  • FrameTimingGfxInfoMetric'da, işlem zaten çalışmıyorsa metriğin başlatılmasının kilitlenmeye neden olduğu sorun düzeltildi. (I6e412)

Sürüm 1.3.0

21 Ağustos 2024

androidx.benchmark:benchmark-*:1.3.0 iptal edilir. 1.3.0 sürümü bu commit'leri içerir.

1.2.0 sürümünden beri yapılan mikro kıyaslama değişiklikleri

  • Çoğu cihazda çalıştırıldığında mikro kıyaslama testlerinde yöntem izleme varsayılan olarak etkindir.
    • Yöntem izleme, ölçümlerden sonra ayrı bir aşama olarak çalışır. Bu sayede, tek bir karşılaştırma çalıştırmasından hem doğru ölçümler hem de yöntem izlemeleri elde edilebilir.
    • Bazı Android OS ve ART sürümlerinde yöntem izleme, sonraki ölçüm aşamalarını etkiler. Bu sürümlerde yöntem izleme varsayılan olarak devre dışıdır ve Studio çıkışına bir uyarı yazdırılır.
  • Ana iş parçacığı karşılaştırmaları ve ANR'ler
    • Birçok saniye boyunca çalışırken ANR'leri önlemek için kullanıcı arayüzü iş parçacığı karşılaştırma testleri (ör. Compose/View kullanıcı arayüzleriyle etkileşimde bulunanlar) için measureRepeatedOnMainThread eklendi.
    • ANR'yi önleme son tarihini aşması beklenen yöntem izlemeleri atlanır. Bu davranışı devre dışı bırakmak için androidx.benchmark.profiling.skipWhenDurationRisksAnr değerini false olarak ayarlayın (ANR'ler uzun CI çalıştırmalarında sorunlara neden olabileceğinden CI çalıştırmaları için önerilmez).
  • Sadeleştirme
    • Küçültme etkinleştirilmişken mikro karşılaştırmayı iyileştirmek için yerleştirilmiş ProGuard kuralları
    • Kitaplık modülünde küçültme/R8 için AGP 8.3 gerekir ve build.gradle içindeki android.buildTypes.release.androidTest.enableMinification aracılığıyla etkinleştirilebilir.
    • Ölü kodun ortadan kaldırılmasını önlemek için deneysel BlackHole.consume() API eklendi (If6812, b/286091643)
  • Metrikler
    • Deneysel CPU etkinlik sayacı özelliği (perf_event_open metrikleri, platformun çoğu sürümünde root erişimi gerektirir), InstrumentationArgument androidx.benchmark.cpuEventCounter.enable üzerinden erişim (true olarak ayarlanabilir) 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 beri MACRObenchmark'ta yapılan değişiklikler

  • Makro karşılaştırmalar için yöntem izleme özelliği tamamen yenilendi.
    • Artık yöntem izlemeleri measureBlock süresiyle sınırlandırılıyor ve işlem birden çok kez başlatılırsa birden fazla oturum yakalayabiliyor.
    • Daha önce, yöntem izleme yalnızca StartupMode.COLD kıyaslama testlerinde çalışır ve hedef işlemi yeniden başlatmayan measureBlocks için hiçbir şey yakalamazdı.
    • Makro karşılaştırma testinde yöntem izlerinin temizlenmesi düzeltildi. Böylece, daha yavaş cihazlarda bile yöntem izleri tamamen yakalanıp geçerli olacak. (I6349a, b/329904950)
  • İşlem sonlandırıldığında warmUp yinelemeler sırasında ART profilini doğru şekilde boşaltarak CompilationMode.Partial(warmup=N) ölçümlerin daha doğru olmasını sağlayın. (I17923)
  • Drop Shader yayın hatası mesajı
    • Drop shader yayın hatası mesajına hata ayıklama önerileri eklendi
    • ProfileInstaller 1.3:
        olmadan uygulamalara kıyaslama testi yaparken kilitlenmeleri önlemek için gölgelendirici bırakma davranışını geçersiz kılmaya yönelik iki enstrümantasyon bağımsız değişkeni ekleyin.
      • androidx.benchmark.dropShaders.enable=true/false : Özellikle henüz profileinstaller 1.3'ü kullanmayan uygulamalarda karşılaştırma yaparken, StartupMode.Cold başlatmalarında yapılanlar da dahil olmak üzere tüm gölgelendirici bırakma işlemlerini atlamak için kullanılabilir.
      • androidx.benchmark.dropShaders.throwOnFailure=true/false : Örneğin, uygulamalara profileinstaller 1.3 (I4f573) olmadan kıyaslama testi yaparken gölgelendiricileri bırakmaya çalışırken hatalara tolerans göstermek için kullanılabilir.
  • Tamamen özelleştirilmiş Perfetto iz kaydı için özel PerfettoConfig alan 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 Macrobenchmark çalıştırmadan önce arka plandaki dexopt işlerini iptal edin. (I989ed)
  • Macrobenchmark artık hedef uygulamanın bir ART profilini temizlemesi için 1 saniye bekliyor (daha önce 500 ms bekliyordu). (I85a50, b/316082056)
  • TraceSectionMetric'te büyük değişiklikler
    • Not: Aşağıdaki TraceSectionMetric değişiklikler, CI kullanımındaki çıktıları etkileyebilir ve süreksizliklere neden olabilir veya ayrıştırmayı bozabilir.
    • Bu metriğin çoğu kullanımı tekrarlanan etkinlikler için olduğundan ve ilk değer bu durumlarda verileri sileceğinden artık varsayılan değer toplamdır.
    • Daha fazla mod seçeneğiyle daha özelleştirilebilir hale getirildi.
    • Mod adları artık metrik çıkış adına (Studio ve JSON'da) yerleştiriliyor.
    • Artık Trace.{begin|end}AsyncSection kullanılarak oluşturulan dilimleri destekliyor.
  • Metrikler
    • Güç: PowerMetric.deviceSupportsHighPrecisionTracking, PowerMetric.deviceBatteryHasMinimumCharge() ve PowerMetric.deviceSupportsPowerEnergy() eklendi
    • Dönüş türüyle eşleşmesi için Metric.getResult, getMeasurements olarak yeniden adlandırıldı.
    • Tüm başlangıç algılama hatalarına log.w / exception etiketleri eklendi. Bu değişiklik, mevcut davranışı değiştirmez (bu nedenle bazı hatalar oluşturulur, bazıları ise başlatmayı sessizce algılayamaz), yalnızca daha anlaşılır hale getirir. Genellikle Log.w() ve başlatma metriklerini bildiremeyenler, kare dışı etkinliklerin eksik olduğu durumlardır. Başlatma algılandığında, kare zamanlaması bilgileri (UI/RT dilimlerinden) hariç olmak üzere istisnalar oluşturulur. (Id240f, b/329145809)
    • Üretilen kare sayısı değiştiği için ölçümlerin değiştiği senaryoların keşfedilmesine yardımcı olmak amacıyla FrameTimingMetric'e frameCount ölçümü eklendi (yeni animasyonlar eklendi, geçersiz kılma sorunları düzeltildi). (I1e5aa)
    • frameOverrunMs metriğinin, dokümanlarda kullanılabildiği durumlarda izleme için tercih edilen metrik olduğu ve bunun nedenleri açıklığa kavuşturuldu. (I18749, b/329478323)
    • İzlemenin başında ve sonunda sonlandırılmamış karelerin birlikte eşleştirilerek tek bir uzun kare olarak yanlış raporlanmasına neden olan sorun düzeltildi. (I39353, b/322232828)
    • Kareler üretilmediğinde FrameTimingMetric hatası iyileştirildi ve sorunun teşhis edilmesine yardımcı olmak için metrik ayrıştırma başarısız olduğunda her zaman izleme bağlantısı çıkışı yapıldı. (I956b9)
    • FrameTimingMetric içinde, özellikle belirli OEM cihazlarda kare kimliğinin ayrıştırılamamasına neden olan kilitlenme düzeltildi. (Ia24bc, b/303823815, b/306235276)
    • FrameMetrics bölümündeki kontrollerin katılığı azaltıldı ve hata mesajlarına daha fazla ayrıntı eklendi. (Geri ödeme)

Baseline Profile yakalama / 1.2.0 sürümünden beri Gradle eklentisinde yapılan değişiklikler

  • AGP'nin önerilen maksimum sürümü 9.0.0-alpha01'e yükseltildi.
  • mergeArtProfile ve mergeStartupProfile görevlerinin her zaman temel profil oluşturma işlemini beklediğinden emin olun. (I623d6, b/343086054)
  • Temel profilin başarıyla oluşturulması, nelerin değiştiğine dair bir özet oluşturur (I824c8, b/269484510).
  • Uyarıları devre dışı bırakmak için DSL eklendi (Ic4deb, b/331237001)
  • automaticGenerationDuringBuild devre dışıyken karşılaştırmaların oluşturulan temel profil kullanmasını sağlamak için düzeltme (Ic144f, b/333024280)
  • BaselineProfile veya karşılaştırma derleme türünü özelleştirirken temel profil oluşturma ve karşılaştırma işlemlerini etkinleştirmek için nonMinified gradle eklenti özelliği geçersiz kılmalarını düzeltin. (Ib8f05, b/324837887)
  • AGP 8.3.0-alpha15'ten önceki sürümlerde kitaplık temel profillerinin AAR'ye dahil edilmesiyle ilgili düzeltme. (I1d2af, b/313992099)
  • Oluşturma görevinin sonunda sabit temel ve başlangıç profili çıkış URL'si. (I802e5, b/313976958)

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

  • Trace yakalama
    • Hata durumundan kaydedilmiş uyarıya geçiş yaparken EXITCODE 2 hatası azaltıldı
    • Karşılaştırmalarda AIDL izlemeyi varsayılan olarak etkinleştirme(API 28 gerektirir) (Ia0af2, b/341852305)
    • Karşılaştırmalarda varsayılan olarak taşıyıcı etiket izlemeyi etkinleştirin. Örneğin, wakelock izleme noktaları bu kapsamdadır. (Icfe44, b/286551983)
    • Daha yavaş cihazlarda izleme başlatılırken kilitlenmeleri önlemek için iz yakalama başlatma zaman aşımı artırıldı (I98841, b/329145808)
    • JSON, textproto ve proto ikili (kodlanmamış) varyantlarına sahip PerfettoTraceProcessor.Session.queryMetrics API'leri genel API'ye eklendi. Bu metrikler, TraceProcessor'de yerleşik olarak bulunan metrikleri sorgulamanıza olanak tanır (I54d7f, b/304038382).
    • İzlemenin başında veri kaybı riskini azaltmak için Perfetto izleme kaydında engellemeyi başlatma özelliğini etkinleştirin. Yalnızca API 33 ve sonraki sürümlerde desteklenir. (Ie6e41, b/310760059)
  • JSON çıkışı
    • JSON çıktısında karşılaştırma bağlamına ek bilgiler eklendi:
      • context.artMainlineVersion: Art ana hat modülünün tam sayı sürümü (cihazda varsa -1, aksi takdirde)
      • context.build.id - android.os.Build.ID ile eşittir.
      • context.build.version.codename - Equals android.os.Build.VERSION.CODENAME
      • context.build.version.abbreviatedCodename: Yayın öncesi kod adının ilk harfine karşılık gelir (yayın derlemeleri dahil) (Ie5020)
    • Profil oluşturma izleriyle (ör.Perfetto, yöntem izleri) ilgili araçları kolaylaştırmak için JSON çıkışına profilerOutput listesi eklendi (I05ddd, b/332604449).
    • Android Test Orchestrator, karşılaştırma modüllerinde kullanıldığında uyarı eklendi. Bu durum, modül başına çıktı JSON dosyalarının tekrar tekrar üzerine yazılmasına neden olur. (Ia1af6, b/286899049)
    • Dosya yazma veya işleme sonrası sırasında belirsiz kilitlenmeleri önlemek için dosya adları 200 karakterden uzun olduğunda hata verilir. (I4a5ab)

Sürüm 1.3.0-rc01

7 Ağustos 2024

androidx.benchmark:benchmark-*:1.3.0-rc01 iptal edilir. 1.3.0-rc01 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • androidx.benchmark.cpuEventCounter'nın talimat dışı etkinlikler için bozuk değerler üretmesi (I7386a, b/286306579) sorunu düzeltildi.
  • Metrik öncelik sırasına uymak için resumeTiming/runWithTimingDisabled düzeltildi ve düşük öncelikli metrik duraklatma/devam ettirmenin yüksek öncelikli metrik sonuçları üzerindeki etkisi önemli ölçüde azaltıldı. Örneğin, cpuEventCounter.enable enstrümantasyon bağımsız değişkeni aracılığıyla CPU performans sayaçları kullanılıyorsa duraklatma/devam ettirme gerçekleştiğinde timeNs artık önemli ölçüde azalmaz. (I39c2e, b/286306579, b/307445225)
  • Yığın örnekleme dönüşümünü ana iş parçacığının dışına taşıyarak yığın örneklemenin measureRepeatedOnMainThread'nın ana iş parçacığına zorlu zaman aşımı uygulamasına neden olma olasılığı azaltıldı. (I487a8, b/342237318)
  • AGP 7.3 veya sonraki sürümleriyle (ör. R8 sürümü 3.3) R8 kullanılırken ve AGP 8.1 veya sonraki sürümleriyle (ör. D8 sürümü 8.1) tüm derlemeler için yeni platform API'lerine erişimin manuel olarak ana hatlarının oluşturulması, API modelleme aracılığıyla otomatik olarak yapıldığından kaldırıldı. AGP kullanmayan müşterilerin D8 sürüm 8.1 veya sonraki bir sürüme güncellemeleri önerilir. Daha fazla bilgi için bu makaleye göz atın. (I9496c, b/345472586)
  • Paket adını instr argümanı olarak göndermek için agp sürümü kontrolü eklendi. AGP 8.4.0'dan önceki sürümlerde hedef uygulama paketi adı, enstrümantasyon bağımsız değişkenleri aracılığıyla enstrümantasyon uygulamasına gönderilemez. (0c72a3f)

Sürüm 1.3.0-beta02

10 Temmuz 2024

androidx.benchmark:benchmark-*:1.3.0-beta02 iptal edilir. 1.3.0-beta02 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Uyarı günlüğe kaydetmek için Perfetto'yu başlatırken EXITCODE 2 değerini sorunsuz bir şekilde işleyin ancak devam edin.

Sürüm 1.3.0-beta01

12 Haziran 2024

androidx.benchmark:benchmark-*:1.3.0-beta01 iptal edilir. 1.3.0-beta01 sürümü bu commit'leri içerir.

API Değişiklikleri

  • Tutarlılık için MethodTracing.affectsMeasurementOnThisDevice, AFFECTS_MEASUREMENT_ON_THIS_DEVICE olarak yeniden adlandırıldı. (I1bdfa)
  • Mikro karşılaştırmalarda kullanılmayan kodların kaldırılmasını önlemek için deneysel BlackHole.consume() API'si eklendi. (If6812, b/286091643)
  • Mikro karşılaştırma testi artık yöntem izlemenin ölçümleri etkilemesini önlemek için doğru şekilde hata verecek. Bu durum, belirli cihazlarda yöntem izleme zorunlu kılındığında (enstrümantasyon bağımsız değişkenleri veya MicrobenchmarkConfig aracılığıyla) ve yöntem izlemeden sonra ölçüm yapılmaya çalışıldığında meydana gelir. Etkilenen cihazlarda API 26-30 veya bu müdahaleden etkilenen belirli ART ana modül sürümleri çalıştırılıyor ve bu cihazlar çalışma zamanında ProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice aracılığıyla algılanabiliyor. (Iafb92, b/303660864)

Hata Düzeltmeleri

  • Önerilen maksimum AGP sürümü 9.0.0-alpha01'e yükseltildi. (I5bbb0)
  • Karşılaştırma bağlamına derleme modu eklendi (If5612, b/325512900)
  • Varsayılan olarak AIDL izlemeyi etkinleştirme (API 28 gerektirir) (Ia0af2, b/341852305)
  • JSON çıktısında karşılaştırma bağlamına ek bilgiler eklendi:
    • context.artMainlineVersion: Art ana hat modülünün tam sayı sürümü (cihazda varsa, aksi takdirde -1)
    • context.build.id - Eşittir android.os.Build.ID
    • context.build.version.codename - Eşittir android.os.Build.VERSION.CODENAME
    • context.build.version.abbreviatedCodename: Yayın öncesi kod adının ilk harfine karşılık gelir (yayın derlemelerinde bile) (Ie5020)
  • StackSampling, androidx.benchmark.profiling.sampleDurationSeconds'e uygun olacak şekilde düzeltildi (Ib1d53)
  • Makro -> ortak bağımlılığı api() olarak değiştirin. Böylece, örneğin PerfettoTrace ve PerfettoConfig daha kolay kullanılabilir. (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şlemcisi için varsayılan başlangıç zaman aşımı artırıldı. (I87e8c, b/329145808)

Sürüm 1.3.0-alpha05

14 Mayıs 2024

androidx.benchmark:benchmark-*:1.3.0-alpha05 iptal edilir. 1.3.0-alpha05 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

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

Sürüm 1.3.0-alpha04

1 Mayıs 2024

androidx.benchmark:benchmark-*:1.3.0-alpha04 iptal edilir. 1.3.0-alpha04 sürümü bu onayları içerir.

API Değişiklikleri

  • Tamamen özelleştirilmiş Perfetto iz kaydı için özel PerfettoConfig alan 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.deviceSupportsPowerEnergy öğesini PowerMetric.deviceSupportsHighPrecisionTracking olarak yeniden adlandırın (I5b82f)
  • Cihazın güç ölçümü özelliğine göre karşılaştırma ölçütlerini değiştirme veya atlama özelliğini etkinleştirmek için PowerMetric.deviceBatteryHasMinimumCharge() ve PowerMetric.deviceSupportsPowerEnergy() eklendi. (I6a591, b/322121218)

Hata Düzeltmeleri

  • Önceki temel değer profiliyle karşılaştırma eklendi (I824c8, b/269484510)
  • Uyarıları devre dışı bırakmak için DSL eklendi (Ic4deb, b/331237001)
  • Karşılaştırma varyantları devre dışı bırakıldığında istisna, bilgi günlüğüne dönüştürüldü (I8a517, b/332772491)
  • Macrobenchmark için yöntem izlerini yakalamayı kolaylaştırın. Macrobenchmark, gerçek measureBlock() süresiyle sınırlıdır. Daha önce hedef süreç başlatıldığında başlıyor ve yalnızca soğuk başlatmaları destekliyordu (Iee85a, b/300651094).
  • Perfetto izleme işlemcisi yavaş başladığında kilitlenmeyi önleme (I98841, b/329145808)

Sürüm 1.3.0-alpha03

17 Nisan 2024

androidx.benchmark:benchmark-*:1.3.0-alpha03 iptal edilir. 1.3.0-alpha03 sürümü bu commit'leri içerir.

Yeni Özellikler

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

API Değişiklikleri

  • TraceSectionMetric.Mode, sealed class olarak değiştirildi. Böylece, when ifadelerini kapsamlı bir şekilde bozmadan gelecekte genişletme yapılabilir (I71f7b).
  • TraceSectionMetric.Mode.Average ve .Count eklendi ve daha yaygın olan bağımsız değişken (mod) bağımsız değişken listesinde daha önce yer alacak şekilde bağımsız değişkenler yeniden sıralandı. Böylece, parametre adlarını belirtme ihtiyacı azaltıldı. (Ibf0b0, b/315830077, b/322167531)
  • İade türüyle eşleşmesi için Metric.getResult, getMeasurements olarak yeniden adlandırıldı (I42595)

Hata Düzeltmeleri

  • automaticGenerationDuringBuild devre dışıyken karşılaştırmaların oluşturulan temel profil kullanmasını sağlamak için düzeltme (Ic144f, b/333024280)
  • BaselineProfile veya karşılaştırma derleme türünü özelleştirirken temel profil oluşturma ve karşılaştırma işlemlerini etkinleştirmek için nonMinified gradle eklenti özelliği geçersiz kılmalarını düzeltin. (Ib8f05, b/324837887)
  • Makro karşılaştırma testinde yöntem izlerinin temizlenmesi düzeltildi. Böylece, daha yavaş cihazlarda bile yöntem izleri tamamen yakalanıp geçerli olacak. (I6349a, b/329904950)
  • İzlemenin başında veri kaybı riskini azaltmak için Perfetto izleme kaydında engellemeyi başlatma özelliğini etkinleştirin. Yalnızca API 33 ve sonraki sürümlerde desteklenir. (Ie6e41, b/310760059)
  • Android Test Orchestrator, karşılaştırma modüllerinde kullanıldığında uyarı eklendi. Bu durum, modül başına çıktı JSON dosyalarının tekrar tekrar üzerine yazılmasına neden olur. (Ia1af6, b/286899049)
  • Cihaz yerel ayarı yoksayılarak Studio çıkışında tutarlılık için binlik ayırıcı olarak "," (virgül) kullanılması zorunlu kılındı (I3e921, b/313496656).
  • TraceSectionMetric artı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 değişiklik, mevcut davranışı değiştirmez (bu nedenle bazı hatalar oluşturulur, bazıları ise başlatmayı sessizce algılayamaz), yalnızca daha anlaşılır hale getirir. Genellikle Log.w() ve başlatma metriklerini bildiremeyenler, kare dışı etkinliklerin eksik olduğu durumlardır. Başlatma algılandığında, kare zamanlaması bilgileri (UI/RT dilimlerinden) hariç olmak üzere istisnalar oluşturulur. (Id240f, b/329145809)
  • Girişimi azaltmak için Macrobenchmark çalıştırmadan önce arka plandaki dexopt işlerini iptal edin. (I989ed)
  • Üretilen kare sayısı değiştiği için ölçümlerin değiştiği senaryoların keşfedilmesine yardımcı olmak amacıyla FrameTimingMetric'e frameCount ölçümü eklendi (yeni animasyonlar eklendi, geçersiz kılma sorunları düzeltildi). (I1e5aa)
  • frameOverrunMs metriğinin, dokümanlarda kullanılabildiği durumlarda izleme için tercih edilen metrik olduğu ve bunun nedenleri açıklığa kavuşturuldu. (I18749, b/329478323)

Sürüm 1.3.0-alpha02

20 Mart 2024

androidx.benchmark:benchmark-*:1.3.0-alpha02 iptal edilir. 1.3.0-alpha02 sürümü bu commit'leri içerir.

Yeni Özellikler

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

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

Hata Düzeltmeleri

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

Sürüm 1.3.0-alpha01

21 Şubat 2024

androidx.benchmark:benchmark-*:1.3.0-alpha01 iptal edilir. 1.3.0-alpha01 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Gereksiz "should" kelimesini önlemek için MicrobenchmarkConfig Boole parametreleri yeniden adlandırıldı (Ia8f00, b/303387299)
  • Ana iş parçacığı kıyaslamalarının (ör. Görünümler veya Compose kullanıcı arayüzlerine dokunanlar) özellikle CI'daki büyük paketler sırasında ANR'leri tetiklememesi için BenchmarkRule.measureRepeatedOnMainThread eklendi. (I5c86d)
  • FrameTimingMetric'nin deneysel bir alternatif uygulaması olan FrameTimingGfxInfoMetric eklendi. Bu uygulamada ölçümler, Perfetto izinden çıkarılmak yerine doğrudan platformdan alınır. (I457cb, b/322232828)
  • Ayrı ayrı warmUp yinelemeleri sırasında ART profili dökümü alma özelliği eklendi. (I17923)
  • TraceSectionMetric API'sinde çeşitli değişiklikler yapıldı:
    • Mode.Min ekleyin, Mode.Max
    • Bölüm adını metrik etiketi olarak geçersiz kılmak için etiket bağımsız değişkeni ekleyin.
    • Metrik anlamını netleştirmek için çıkışa mod adı eklendi
    • Bu metriğin çoğu kullanımında tekrarlanan etkinlikler söz konusu olduğundan varsayılan değer toplam olarak değiştirildi. Sürekli entegrasyon kullanımındaki bu değişikliklerin süreksizliklere neden olabileceğini veya ayrıştırmayı bozabileceğini unutmayın. (Ic1e82, b/301892382, b/301955938)

Hata Düzeltmeleri

  • Belirtilen yönetilen cihaz mevcut olmadığında temel profil Gradle eklentisindeki hata mesajı iyileştirildi (Idea2b, b/313803289)
  • AGP 8.3.0-alpha15'ten önceki sürümlerde kitaplık temel profillerinin AAR'ye dahil edilmesiyle ilgili düzeltme (I1d2af, b/313992099)
  • Oluşturma görevinin sonunda sabit temel ve başlangıç profili çıkış URL'si (I802e5, b/313976958)
  • java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)] sorununu düzeltmek için veri kaynağı zaman aşımları ayarlandı (I8dc7d, b/323601788)
  • ProfileInstaller 1.3:
      olmadan uygulamalara kıyaslama testi yaparken kilitlenmeleri önlemek için gölgelendirici bırakma davranışını geçersiz kılmaya yönelik iki enstrümantasyon bağımsız değişkeni ekleyin.
    • androidx.benchmark.dropShaders.enable=true/false : Özellikle henüz profileinstaller 1.3'ü kullanmayan uygulamalarda karşılaştırma yaparken, StartupMode.Cold başlatmalarında yapılanlar da dahil olmak üzere tüm gölgelendirici bırakma işlemlerini atlamak için kullanılabilir.
    • androidx.benchmark.dropShaders.throwOnFailure=true/false : Örneğin, uygulamalara profileinstaller 1.3 (I4f573) olmadan kıyaslama testi yaparken gölgelendiricileri bırakmaya çalışırken hatalara tolerans göstermek için kullanılabilir.
  • Birkaç saniyeden uzun sürmesi beklenen durumlarda kullanıcı arayüzü iş parçacığında yöntem izlemeyi atlayın ve hata oluştuğunda yöntem izlemelerini temizleyin. (I6e768)
  • Dosya yazma veya işleme sonrası sırasında belirsiz kilitlenmeleri önlemek için dosya adları 200 karakterden uzun olduğunda hata verilir. (I4a5ab)
  • İzlemenin başında ve sonunda sonlandırılmamış karelerin birlikte eşleştirilerek tek bir uzun kare olarak yanlış raporlanmasına neden olan sorun düzeltildi. (I39353, b/322232828)
  • Kullanıcı derlemelerindeki ART profillerini temizlemek için API düzeyi 30-33'te bir paketi yeniden yüklerken API düzeyi 30 ve sonraki sürümlerde --skip verification kullanın. Bu sayede, bazı cihaz sınıflarında hatalara neden olan Play Protect uyarıları atlanabilir. (Ic9e36)
  • Sistem kullanıcı arayüzü veya başlatıcı gibi bir sistem uygulaması olmadığında uygulamaları kapatmak için am force-stop seçeneğini kullanın. (I5e028)
  • Macrobenchmark artık hedef uygulamanın bir ART profilini temizlemesi için 1 second bekliyor (önceden 500 ms bekliyordu). (I85a50, b/316082056)
  • Kareler üretilmediğinde FrameTimingMetric hatası iyileştirildi ve sorunun teşhis edilmesine yardımcı olmak için metrik ayrıştırma başarısız olduğunda her zaman izleme bağlantısı çıkışı yapıldı. (I956b9)
  • FrameTimingMetric içinde, özellikle belirli OEM cihazlarda kare kimliğinin ayrıştırılamamasına neden olan kilitlenme düzeltildi. (Ia24bc, b/303823815, b/306235276)
  • FrameMetrics bölümündeki kontrollerin katılığı azaltıldı ve hata mesajlarına daha fazla ayrıntı eklendi. (Geri ödeme)

Sürüm 1.2

Sürüm 1.2.4

17 Nisan 2024

androidx.benchmark:benchmark-*:1.2.4 iptal edilir. 1.2.4 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Temel profil srcset'inin karşılaştırma varyantlarında ayarlanmaması sorunu düzeltildi. Ayrıca, kitaplıklarda döngüsel bağımlılığa neden olan automaticGenerationDuringBuild sorununu da düzeltir. (I28ab7, b/333024280)
  • Sistem kullanıcı arayüzü veya başlatıcı gibi bir sistem uygulaması olmadığında uygulamaları kapatmak için am force-stop seçeneğini kullanın. Bu düzeltme, işlemin tamamen sonlandırılmaması nedeniyle "Package $package must not be running prior to cold start!" (Paket $package, sıfırdan başlatılmadan önce çalışmamalıdır!) hatasıyla StartupMode.COLD karşılaştırmalarının kilitlenmesini önler. (I5e028)

Sürüm 1.2.3

24 Ocak 2024

androidx.benchmark:benchmark-*:1.2.3 iptal edilir. 1.2.3 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • AGP sürümü 8.3.0 veya daha yüksek olduğunda Baseline Profile Gradle eklentisinden istisna kaldırıldı.
  • AGP 8.3.0-alpha15'ten önceki sürümlerde kitaplık temel profillerinin AAR'ye dahil edilmesiyle ilgili düzeltme.

Sürüm 1.2.2

1 Aralık 2023

androidx.benchmark:benchmark-*:1.2.2 iptal edilir. 1.2.2 sürümü şu commit'leri içerir.

Temel profiller

Sürüm 1.2.1

15 Kasım 2023

androidx.benchmark:benchmark-*:1.2.1 iptal edilir. 1.2.1 sürümü şu commit'leri içerir.

Yeni Özellikler

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

Sürüm 1.2.0

18 Ekim 2023

androidx.benchmark:benchmark-*:1.2.0 iptal edilir. 1.2.0 sürümü şu commit'leri içerir.

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

Temel profiller

  • Yeni Baseline Profile Gradle Plugin, temel profilleri test ve derleme iş akışınıza dahil etme ve yakalama işlemlerini otomatikleştirir.
  • BaselineProfileRule.collect artık kararlı, önceki deneysel BaselineProfileRule.collectBaselineProfile API'nin basitleştirilmiş ve kolaylaştırılmış bir sürümü
    • Yalnızca packageName belirtin ve uygulamanızı kullanın
  • Temel profil oluşturan kitaplıklar için artık oluşturulan kuralları kodda (BaselineProfileRule.collect bağımsız değişkeni) veya daha da basit bir şekilde Gradle eklentisinde filtreleyebilirsiniz.
  • Düzeltmeler

Macrobenchmark

  • Derleme
    • Macrobenchmark artık her derleme için derleme durumunu doğru şekilde tamamen sıfırlıyor. Bu işlem için Android 14'ten önce APK'nın yeniden yüklenmesi gerekiyor. Bu nedenle, ölçülenlerde durumu (ör. kullanıcı girişi) korumak istiyorsanız Android 14 ve sonraki sürümlerde karşılaştırma yapmanız önemle tavsiye edilir.
    • Uygulama derlemesini ayrı ayrı kontrol ederek ve CompilationMode.Ignore() veya enstrümantasyon bağımsız değişkeni ile derlemeyi atlayarak bu sorunu da çözebilirsiniz.
  • Araç Bağımsız Değişkenleri

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

    • Macrobenchmark artık profil yakalama / sıfırlama ve gölgelendirici önbelleğini temizleme işlemlerini etkinleştirmek için hedef uygulamada ProfileInstaller 1.3.0 veya daha yeni bir sürüm gerektiriyor.
  • Yeni deneysel metrik API'leri

    • Uygulamanızdaki trace("") {} bloklarından basit zamanlamalar çıkarmanıza veya Perfetto'nun TraceProcessor tam sorgu özelliğinden yararlanmak için TraceMetric kullanmanıza olanak tanıyan deneysel TraceSectionMetric eklendi.
    • Güç kullanımı bilgilerini yakalamak için deneysel PowerMetric eklendi
    • Sayfa hatalarını saymak için deneysel MemoryCountersMetric eklendi.
    • Sistem izlerinden (Perfetto izleri olarak da bilinir) metrikleri çıkarmak için dahili olarak kullanılan deneysel PerfettoTraceProcessor API'si eklendi.
  • Düzeltmeler

    • Birden fazla APK'dan (ör. uygulama paketinden) yüklenen bir uygulamadan profil yüklenirken veya profiller çıkarılırken yaşanan kilitlenme sorunları düzeltildi.
    • Tutarsız çerçeve kimliklerine sahip çerçevelerin (genellikle API 31 ve sonraki sürümlerdeki dalgalanmalar sırasında oluşan çerçeveler) yoksayılması sorunu düzeltildi (I747d2, b/279088460).FrameTimingMetric
    • 64 MB'tan büyük izlemelerde ayrıştırma hataları düzeltildi (Ief831, b/269949822).
    • Cihaz (özellikle emülatör) işletim sistemi görüntüsü izleme veya derleme için doğru şekilde yapılandırılmadığında oluşan hatalar netleştirildi.
    • Pili olmayan cihazlarda (mikro ve makro) pil seviyesi kontrolünü atlama
    • Geçersiz çıkış dizinleri için daha net hatalar ve daha güvenli varsayılan değerlerle dosya çıkışı iyileştirildi.
    • Tutarlı bir şekilde gölgelendirici önbelleği bırakılarak StartupMode.COLD kararlılığı iyileştirildi (MacrobenchmarkScope.dropShaderCache üzerinden de sunulur).
    • startActivityAndWait için sabit leanback yedeği.

Mikro karşılaştırma testi

  • Özellikler
    • Diğer metriklerden sonra profil oluşturma ayrı bir aşamaya taşındı. Böylece tek bir test çalıştırması hem doğru zamanlama hem de profil oluşturma sonuçlarını gösterebilir.
  • Deneysel API'ler
    • Özel metrikleri tanımlamak, izlemeyi ve profil oluşturmayı yapılandırmak için deneysel MicrobenchmarkConfig API eklendi. Yöntem izlemelerini veya izleme noktalarını yakalamak için kullanılabilir (ancak izleme ek yüküne dikkat edin).
    • JUnit olmadan BenchmarkStateBenchmarkRule'dan ayrı olarak kontrol etmek için deneysel API'ler eklendi.
    • Referans değeri API'lerinden ayrı olarak özel yapılandırmayla Perfetto izlerinin yakalanmasını sağlamak için deneysel PerfettoTrace kaydı eklendi.
  • Düzeltmeler
    • Android Studio karşılaştırma çıkışında eksik olan baştaki boşlukları geçici olarak çözün.
    • Uyarıların Android Studio karşılaştırma testinde yazdırılamaması sorunu düzeltildi.
    • Android 13 (API 33) ve sonraki sürümlerdeki SampledProfiling kilitlenme sorunu düzeltildi.
    • IsolationActivity ve Perfetto izleme atlanarak dryRunMode'nın performansı büyük ölçüde iyileştirildi (Eski işletim sistemi sürümlerinde 10 kata kadar daha hızlı deneme modu).

Sürüm 1.2.0-rc02

6 Ekim 2023

androidx.benchmark:benchmark-*:1.2.0-rc02 iptal edilir. 1.2.0-rc02 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Benchmark dosya çıkışının artık BaselineProfileeklenti dosyası kopyalamayı bozmaması için düzeltildi. Dosyalar oluşturulup cihazdan kopyalanmış ancak Gradle eklentisinin göremeyeceği şekilde yeniden adlandırılmış. (I8dbcc, b/303034735, b/296453339)
  • Makrobenchmark modülünden hedef uygulamaya yerleştirme yapılırken tracing-perfetto yükleme hata mesajları netleştirildi.

Sürüm 1.2.0-rc01

20 Eylül 2023

androidx.benchmark:benchmark-*:1.2.0-rc01 iptal edilir. 1.2.0-rc01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Perfetto SDK izleme bir kıyaslama testinde başlatılamadığında artık bir istisna (çözüm talimatlarıyla birlikte) oluşturuluyor. (I6c878, b/286228781)
  • ART yöntemi izlemesi -> perfetto biçimi dönüştürülürken OOM kilitlenmesi düzeltildi. (I106bd, b/296905344)
  • (Macrobenchmark) Studio test çıkışında bağlantı oluşturulduğunda yöntem izleme etiketi netleştirildi ve yöntem izleme dosya adlarının cihazda/ana makinede benzersiz olması için düzeltildi. Böylece, birden fazla karşılaştırma testi çalıştırıldığında üzerine yazılmayacak. (I08e65, b/285912360)
  • Temel profil yakalanırken cihazın uyanık olmasını sağlar. (I503fc)

Sürüm 1.2.0-beta05

30 Ağustos 2023

androidx.benchmark:benchmark-*:1.2.0-beta05 iptal edilir. 1.2.0-beta05 sürümü şu commit'leri içerir.

Yeni Özellikler

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

Sürüm 1.2.0-beta04

23 Ağustos 2023

androidx.benchmark:benchmark-*:1.2.0-beta04 iptal edilir. 1.2.0-beta04 sürümü şu commit'leri içerir.

Yeni Özellikler

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

Hata Düzeltmeleri

  • Çıkış dosyası adlarını daha fazla temizleyerek, çıkış dosyası adlarında "=" ve ":" karakterlerini kullanmayarak dosyaları yazma / taşıma ve çekme işlemlerindeki (özellikle parametrelendirilmiş testlerden gelenler) hataları düzeltin. (I759d8)

Sürüm 1.2.0-beta03

9 Ağustos 2023

androidx.benchmark:benchmark-*:1.2.0-beta03 iptal edilir. 1.2.0-beta03 sürümü şu commit'leri içerir.

API Değişiklikleri

  • TraceSectionMetric filtresine yalnızca hedef paketi filtreleme argümanı eklendi. Bu argüman varsayılan olarak etkindir (Ia219b, b/292208786).

Hata Düzeltmeleri

  • fullTracing.enable enstrümantasyon bağımsız değişkeni, yapıt adıyla ve diğer referanslarla tutarlılık sağlamak için perfettoSdkTracing.enable olarak yeniden adlandırıldı. fullTracing.enable, yedek olarak çalışmaya devam edecek. (I7cc00)
  • Dahili izleme noktaları (mikro kıyaslama döngüsü/aşama izleme dahil) içeren kıyaslama kitaplığı artık Studio sistem izleme görüntüleyicisinde gösterilecek ve Perfetto'da doğru işlem altında yer alacak. (I6b2e7, b/293510459)
  • API 31 ve sonraki sürümlerde NOT-PROFILEABLE macrobenchmark hatası kaldırıldı ve eng/userdebug root edilmiş cihazlarda profil oluşturulabilirliği kontrolü atlandı. (I2abac, b/291722507)
  • Dex Layout Optimizations kullanılırken başlangıç profili kuralları artık temel profil kuralları olarak da kabul ediliyor. (aosp/2684246, b/293889189)

Sürüm 1.2.0-beta02

26 Temmuz 2023

androidx.benchmark:benchmark-*:1.2.0-beta02 iptal edilir. 1.2.0-beta02 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Mikro karşılaştırma özel metrikleri ve yapılandırması (ör. profil oluşturucu ve izleme) için deneysel API'ler eklendi. (I86101, b/291820856)

Hata Düzeltmeleri

  • Yakın zamanda API 26/28 ARM64 emülatörlerinde düzeltildiği gibi, işletim sistemi izleme için yanlış yapılandırıldığında makro karşılaştırmada hata bildirilir. (I0a328, b/282191686)
  • Bazı emülatörler bu sorunu yakın zamanda düzelttiğinden, derleme sıfırlama hatasıyla ilgili ayrıntı eklenerek emülatörün güncellenmesi önerildi. (I8c815, b/282191686)
  • androidx.test.uiautomator:uiautomator:2.2.0 öğesini implementation bağımlılığı yerine api bağımlılığı yapın. (I1981e)

Sürüm 1.2.0-beta01

18 Temmuz 2023

androidx.benchmark:benchmark-*:1.2.0-beta01 iptal edilir. 1.2.0-beta01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Studio'daki karşılaştırma çıktısında bazen gizlenen uyarılar düzeltildi ve Studio'da karşılaştırma çıktısından gelen, başta yer alan boşlukların gösterilmemesi sorunu giderildi (Ia61d0, b/227205461, b/286306579, b/285912360).
  • FrameTimingMetric için sabit yorum. Alt metriğin adı frameDurationCpuMs. (Ib097f, b/288830934).

Sürüm 1.2.0-alpha16

21 Haziran 2023

androidx.benchmark:benchmark-*:1.2.0-alpha16 iptal edilir. 1.2.0-alpha16 sürümü şu commit'leri içerir.

API Değişiklikleri

  • BaselineProfileRule.collectBaselineProfile() API'sinin adı BaselineProfileRule.collect() olarak değiştirildi. (I4b665)

Hata Düzeltmeleri

  • androidx.benchmark.profiling.mode = MethodTracing için makro karşılaştırma desteği. (I7ad37, b/285912360)
  • Mikro karşılaştırma profili oluşturma ayrı bir aşamaya taşındı. Bu nedenle, ölçümün yerini almak yerine sonrasında sırayla gerçekleşir. MethodTracing Varsa izleme bölümleri de artık yakalanan Perfetto izine dahil ediliyor. (I9f657, b/285014599)
  • Mode.Sum ile TraceSectionMetric'ya sayı ölçümü ekleyin. (Ic121a, b/264398606)

Sürüm 1.2.0-alpha15

7 Haziran 2023

androidx.benchmark:benchmark-*:1.2.0-alpha15 iptal edilir. 1.2.0-alpha15 sürümü şu commit'leri içerir.

Yeni Özellikler

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • Çalışma zamanının büyük bir bölümünü oluşturdukları için IsolationActivity ve dryRunMode'de Perfetto izlemeyi devre dışı bırakarak performansı önemli ölçüde artırın. (Ie4f7d)
  • Enstrümantasyon testi bağımsız değişkenleri androidx.benchmark.profiling.mode=StackSampling ve androidx.benchmark.profiling.sampleFrequency kullanılarak Macrobenchmark'larda çağrı yığını örnekleme desteği. (I1d13b, b/282188489)
  • Android U (API 34) ve emülatörlerde gölgelendiriciler bırakılırken yaşanan kilitlenme sorunu düzeltildi. (I031ca, b/274314544)

Sürüm 1.2.0-alpha14

3 Mayıs 2023

androidx.benchmark:benchmark-*:1.2.0-alpha14 iptal edilir. 1.2.0-alpha14 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Tutarsız çerçeve kimliklerine sahip çerçevelerin FrameTimingMetric tarafından yoksayılması sorunu düzeltildi. Bu durum, son platform sürümlerindeki (API 31+) bazı animasyonların RenderThread animasyon yaparken (ör. dalgalanma sırasında) birçok kareyi yoksaymasına neden oluyordu. (I747d2, b/279088460)
  • 64 MB'tan büyük izler için iz işleme birimi ayrıştırma işlemi düzeltildi. (Ief831, b/269949822)
  • pm dump-profiles komutunun farklı çıkışı nedeniyle Android U'da temel profil oluşturma işleminin başarısız olmasına yol açan sorun düzeltildi. (Id1392, b/277645214)
  • Dizeleri doğru şekilde karşılaştırmak için GPU saat kilitleme komut dosyasını düzeltin (I53e54, b/213935715)

Sürüm 1.2.0-alpha13

5 Nisan 2023

androidx.benchmark:benchmark-*:1.2.0-alpha13 iptal edilir. 1.2.0-alpha13 sürümü şu commit'leri içerir.

API Değişiklikleri

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

Sürüm 1.2.0-alpha12

22 Mart 2023

androidx.benchmark:benchmark-*:1.2.0-alpha12 iptal edilir. 1.2.0-alpha12 sürümü şu commit'leri içerir.

Yeni Özellikler

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

API Değişiklikleri

  • API 21 ve 22'de Perfetto izleme desteği kaldırıldı. Bu, hem mikro karşılaştırmaları hem de deneysel PerfettoTrace API'lerini içerir. Bu sürümden önce, bazı cihazlarda UiAutomation bağlantıları güvenilir değildi. (I78e8c)
  • İzleme içeriğinin ayrıştırılmasını sağlamak için PerfettoTraceProcessor ile ilgili herkese açık deneysel API eklendi. Bu, Perfetto izleme verilerine dayalı tamamen özel metriklere doğru atılan bir adımdır. (I2659e, b/219851406)

Sürüm 1.2.0-alpha11

8 Mart 2023

androidx.benchmark:benchmark-*:1.2.0-alpha11 iptal edilir. 1.2.0-alpha11 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Birden fazla APK içeren bir uygulama paketinden profiller yeniden yüklenirken veya çıkarılırken MacrobenchmarkRule ve BaselineProfileRule'de kilitlenme sorunu düzeltildi. (I0d8c8, b/270587281)

Sürüm 1.2.0-alpha10

22 Şubat 2023

androidx.benchmark:benchmark-*:1.2.0-alpha10 iptal edilir. 1.2.0-alpha10 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Android 14 ve sonraki sürümlerde, yeni bir platform özelliği sayesinde Macrobenchmark artık derleme durumunu sıfırlamak için hedef uygulamaları yeniden yüklemiyor. Daha önce, cihazın root edilmiş olması veya her karşılaştırma testi çalıştırılmadan önce tüm uygulama durumunun (ör. kullanıcı girişi) kaldırılması gerekiyordu. (I9b08c, b/249143766)

Hata Düzeltmeleri

  • Derleme atlandığı için DryRunMode artık boş profille kilitlenmeyecek şekilde düzeltildi. Bunun yerine, tek bir yineleme çalıştırır ve bir şeyin yakalandığından emin olmak için profili çıkarır. (I2f05d, b/266403227)
  • Eski API düzeylerinde powerstats varlığı kontrol edilirken yaşanan PowerMetric kilitlenme sorunu düzeltildi. (5faaf9, b/268253898)

Sürüm 1.2.0-alpha09

11 Ocak 2023

androidx.benchmark:benchmark-*:1.2.0-alpha09 iptal edilir. 1.2.0-alpha09 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Tüm karşılaştırmaları / temel profil oluşturmayı devre dışı bırakmak için None değerinin androidx.benchmark.enabledRules enstrümantasyon bağımsız değişkenine iletilmesi etkinleştirildi. (I3d7fd, b/258671856)
  • Uygulama modüllerinde (ör.kendi kendine enstrüman oluşturmayan test APK'ları) PerfettoTrace yakalamayla ilgili sorun düzeltildi (I12cfc).
  • Studio çıkışında temel profil adb çekme bağımsız değişken sırası düzeltildi (I958d1, b/261781624)
  • Arm emulator api 33 artık bir makro karşılaştırma testi çalıştırmaya çalışırken doğru şekilde tanınıyor ve uyarıyı doğru şekilde yazdırıyor. (69133b,b/262209591)
  • Macrobenchmark'ta pili olmayan cihazlarda pil seviyesi kontrolünü atlama (fe4114, b/232448937)

Sürüm 1.2.0-alpha08

7 Aralık 2022

androidx.benchmark:benchmark-*:1.2.0-alpha08 iptal edilir. 1.2.0-alpha08 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Testin bir parçası olarak Perfetto izlerini (Sistem İzleri olarak da bilinir) yakalamak, test davranışını ve performansını incelemek için deneysel yeni API'ler PerfettoTrace.record {} ve PerfettoTraceRule eklendi. (I3ba16)
  • BaselineProfileRule artık paket ön ekleri listesi yerine filtre yüklemi kabul ediyor. Bu, testin filtreleme üzerinde tam kontrol sahibi olmasını sağlar. (I93240)
  • Temel profil N yineleme boyunca sabit olana kadar bekleyen deneysel bir API BaselineProfileRule.collectStableBaselineProfile ekleyin. (I923f3)
  • BaselineProfileRule kullanarak temel profil oluştururken çıkış dosyası adı öneki belirtme özelliği eklendi. (I7b59f, b/260318655)

Hata Düzeltmeleri

  • Dosya çıkışı yazma işleminin güvenliğini artırın. Bu sayede, özellikle API 21 / 22'de çıkış dosyalarının sessizce yazılmaması/eklenmemesi önlenir. (If8c44, b/227510293)
  • Dosyanın doğru şekilde oluşturulup yerleştirilmesi için simpleperf izleme çıkışını düzeltin. Bu, genel olarak bir dosyanın gradle tarafından başarıyla çekilemediği sorunları da düzeltir. (I12a1c, b/259424099)
  • Profileinstaller çok eski olduğunda yazdırılan profileinstaller hata mesajı iyileştirildi. Bu mesajda artık desteklenmediği belirtilmek yerine API 31-33'te temel profilleri ölçmek için profileinstaller sürümünün (1.2.1) güncellenmesi gerektiği belirtiliyor. (Ia517f, b/253519888)
  • Hata mesajında birkaç kabuk komutu hatasını düzeltin. Başarısız perfetto yakalama ikili kurulumu ve iz yakalama hataları da dahil olmak üzere gerekli API'nin <=23 olduğunu yazdırın (Ib6b87, b/258863685).
  • Oluşturulan profil kurallarını, zaman içinde değişirken (kaynak kontrolüne profil kuralları eklenirken) değişiklik sayısını en aza indirecek şekilde otomatik olarak sıralayın. (Ie2509)
  • Android 13'ten (API düzeyi 33) önceki sürümlerde, root erişimi olmayan derlemelerde Expected no stderr from echo 3 > /proc/sys/vm/drop_caches mesajıyla kilitlenme sorunu düzeltildi (I6c245, b/259508183).

Bilinen Sorunlar - MacrobenchmarkScope.dropShaderCache(), henüz yayınlanmamış olan profileinstaller manifest dosyasında yayın kaydının eksik olması nedeniyle kilitlenebilir. (I5c728, b/258619948) profileinstaller:1.3.0-alpha02'deki sorunu geçici olarak çözmek için uygulamanızın (karşılaştırmanızın değil) AndroidManifest.xml dosyasına aşağıdakileri ekleyin:

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

Sürüm 1.2.0-alpha07

9 Kasım 2022

androidx.benchmark:benchmark-*:1.2.0-alpha07 iptal edilir. 1.2.0-alpha07 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Makro karşılaştırmalarda enerji ve gücü ölçmek için PowerMetric API'si ekler. (Ife601, b/220183779)
  • Gölgelendirici önbelleğinin gerçekten bırakılması için MacrobenchmarkScope.dropShaderCache() düzeltildi. Bu işlem, gölgelendiriciler artık her yinelemede tutarlı bir şekilde temizlendiğinden StartupMode.COLD karşılaştırma testlerinden yaklaşık 20 ms'lik gürültüyü kaldırır. Daha önce, Partial derleme işlemi, ısınma yinelemeleri kullanılarak yapıldığında yanlış şekilde hızlı sayılar bildiriyordu. Bunun nedeni, ısınma sırasında gölgelendirici önbelleğe almanın daha olası olmasıydı. Bu düzeltme için cihazın root edilmiş olması veya hedef 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 geçirilen toplam sürenin ölçülmesine olanak tanıyan TraceSectionMode("label", Mode.Sum) eklendi. Örneğin, TraceSectionMetric("inflate", Mode.Sum), bir makro karşılaştırma testinde enflasyon için harcanan toplam süreyle ilgili inflateMs metriğini raporlar. Ayrıca, hedef uygulamada forceEnableAppTracing kullanılarak TraceSectionMetric ve androidx.tracing.Trace'nin daha düşük API düzeyleriyle birlikte çalışması sağlandığından API 29 şartı kaldırıldı. (Id7b68, b/231455742)

Hata Düzeltmeleri

  • Tüm çıkışlar/hatalar doğrulanarak tüm dahili kabuk komutlarının güvenliği artırıldı. (I5984d, b/255402908, b/253094958)
  • Temel profil adb pull komutunda cihazı belirtin. Böylece birden fazla cihaz bağlıysa (en fazla bir emülatör) çekme komutu kolayca kopyalanabilir (I6ac6c, b/223359380).
  • Makro karşılaştırma testi APK'sı kendi kendine enstrümanlı olarak ayarlanmamışsa hata ekleyin. Bu hata, hedef uygulamanın işlemi içinde makro karşılaştırma yapılmasını engeller. İşlem sırasında makro karşılaştırma testi, uygulamayı derleyemez/sonlandıramaz/soğuk başlatamaz veya kendi izinlerini kontrol edemez (I4279b).
  • measureRepeated()'da, setupBlock işleminden sonra StartupMode.COLD komutunun hedef işlemi sonlandırmamasına neden olan sorun düzeltildi. Artık setupBlock uygulamayla etkileşimde bulunulduğunda uygulama işlemi çalışmaya devam etmeyecek ve geçersiz bir baştan başlatma ölçümü yapılmayacak. (I8ebb7)

Sürüm 1.2.0-alpha06

24 Ekim 2022

androidx.benchmark:benchmark-*:1.2.0-alpha06 iptal edilir. 1.2.0-alpha06 sürümü şu commit'leri içerir.

API Değişiklikleri

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

Hata Düzeltmeleri

  • API 33 ve sonraki sürümlerdeki SampledProfiling kilitlenme sorunu düzeltildi. (I40743, b/236109374)

Sürüm 1.2.0-alpha05

5 Ekim 2022

androidx.benchmark:benchmark-*:1.2.0-alpha05 iptal edilir. 1.2.0-alpha05 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Yakalanan karşılaştırma izleri için Studio sistem izi görüntüleyicideki kare dökümünü düzeltme (I3f3ae, b/239677443)
  • FrameTimingMetric, FrameOverrun'nin 29 yerine API 31 gerektirecek şekilde listelenmesi için düzeltildi (I716dd, b/220702554)
  • BaselineProfileRule içinde yinelemeyi ayarlayın ve hedef paket yüklenmemişse açıkça hata verin (MacrobenchmarkRule için zaten yapılmıştı). (Ic09a3, b/227991471)

Sürüm 1.2.0-alpha04

21 Eylül 2022

androidx.benchmark:benchmark-*:1.2.0-alpha04 iptal edilir. 1.2.0-alpha04 sürümü şu commit'leri içerir.

Yeni Özellikler

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

    Gradle komut satırında:

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

    build.gradle dosyasında:

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

Hata Düzeltmeleri

  • StartupTimingMetric artık ölçülen etkinliklerin MacrobenchmarkScope.startActivityAndWait() üzerinden başlatılmasını gerektirmiyor. Bu, metriğin örneğin bildirimler, Context.startActivity(), uygulama içi etkinliğe dayalı gezinme veya kabuk komutlarından başlatmaları alabileceği anlamına gelir. (Ia2de6, b/245414235)
  • Kare algılamanın katılığı azaltılarak startActivityAndWait'nın emülatörlerde başlatma işleminin tamamlanmasını beklerken zaman aşımına uğramasına neden olan hata düzeltildi. (Ibe2c6, b/244594339, b/228946895)

Sürüm 1.2.0-alpha03

7 Eylül 2022

androidx.benchmark:benchmark-*:1.2.0-alpha03 iptal edilir. 1.2.0-alpha03 sürümü şu commit'leri içerir.

Yeni Özellikler

  • BenchmarkState'nın BenchmarkRule / JUnit4'dan bağımsız olarak kullanılması için deneysel API'ler eklendi. (Id478f, b/228489614)

Hata Düzeltmeleri

  • startActivityAndWait için Leanback yedekleme özelliği eklendi. (01ed77, b/242899915)

Sürüm 1.2.0-alpha02

24 Ağustos 2022

androidx.benchmark:benchmark-*:1.2.0-alpha02 iptal edilir. 1.2.0-alpha02 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Temel profil oluşturma işlemi hariç olmak üzere, root edilmiş olsa bile MacrobenchmarkScope.killProcess() için varsayılan olarak am force stop kullanılır. Bu, isteğe bağlı bir boolean bağımsız değişkeniyle geçersiz kılınabilir. (02cce9, b/241214097)

Hata Düzeltmeleri

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

Sürüm 1.2.0-alpha01

27 Temmuz 2022

androidx.benchmark:benchmark-*:1.2.0-alpha01 iptal edilir. 1.2.0-alpha01 sürümü şu commit'leri içerir.

Yeni Özellikler

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

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

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

    Dilerseniz Gradle komut satırından da yapabilirsiniz:

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • Derlenen yöntemlerin, kök erişimi olmayan derlemelerde her makro karşılaştırma testi arasında doğru şekilde sıfırlanmamasına neden olan sorun düzeltildi. Bu işlem, her yinelemede APK'nın yeniden yüklenmesini gerektirir. Bu da her makro karşılaştırma testi için uygulama verilerini temizler. (I31c74, b/230665435)
  • API 21/22'de iz kaydı kilitlenmesi düzeltildi (If7fd6, b/227509388, b/227510293, b/227512788)
  • Başlangıç makro karşılaştırmalarında "Metrik okunamıyor" istisnasını düzeltmek için etkinlik başlatma tamamlanma algılamasını tamamen yenileyin. (Ia517c)

Sürüm 1.1.1

Sürüm 1.1.1

9 Kasım 2022

androidx.benchmark:benchmark-*:1.1.1 iptal edilir. 1.1.1 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Bazı Android 11 (API 30) ve sonraki sürümlerin yüklü olduğu cihazlarda meydana gelen android.system.ErrnoException: open failed: EACCES sorunu düzeltildi. Bu, 1.2.0-alpha01 adresindeki bir düzeltmenin seçilerek eklenmiş halidir. (aosp/2072249)

Sürüm 1.1.0

Sürüm 1.1.0

15 Haziran 2022

androidx.benchmark:benchmark-*:1.1.0 iptal edilir. 1.1.0 sürümü şu commit'leri içerir.

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

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

Sürüm 1.1.0-rc03

1 Haziran 2022

androidx.benchmark:benchmark-*:1.1.0-rc03 iptal edilir. 1.1.0-rc03 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

Sürüm 1.1.0-rc02

11 Mayıs 2022

androidx.benchmark:benchmark-*:1.1.0-rc02 iptal edilir. 1.1.0-rc02 sürümü şu commit'leri içerir.

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

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

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

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

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

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

    Dilerseniz Gradle komut satırından da yapabilirsiniz:

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

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

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

    Dilerseniz Gradle komut satırından da yapabilirsiniz:

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

Sürüm 1.1.0-rc01

20 Nisan 2022

androidx.benchmark:benchmark-*:1.1.0-rc01 iptal edilir. 1.1.0-rc01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

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

Sürüm 1.1.0-beta06

6 Nisan 2022

androidx.benchmark:benchmark-*:1.1.0-beta06 iptal edilir. 1.1.0-beta06 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • API 21/22'de iz kaydı kilitlenmesi düzeltildi (If7fd6, b/227509388)
  • Başlangıç makro karşılaştırmalarında "Metrik okunamıyor" istisnasını düzeltmek için etkinlik başlatma tamamlanma algılamasını tamamen yenileyin. (Ia517c)
  • CompilationMode.None() kullanıldığında Macrobenchmark'lar için başlangıç metriklerini düzeltin. Bu değişiklikten önce CompilationMode.Partial(), Compilation.None()'den daha yavaş görünüyordu. (611ac9).

Sürüm 1.1.0-beta05

23 Mart 2022

androidx.benchmark:benchmark-*:1.1.0-beta05 iptal edilir. 1.1.0-beta05 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

Sürüm 1.1.0-beta04

23 Şubat 2022

androidx.benchmark:benchmark-*:1.1.0-beta04 iptal edilir. Version 1.1.0-beta04 contains these commits.

Hata Düzeltmeleri

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

  • Q (API 29) ve sonraki sürümlerde termal kısıtlama algılama için PowerManager kullanın. Bu, termal kısıtlama algılamada yanlış pozitiflerin sıklığını önemli ölçüde azaltır (90 saniyelik soğuma süresinden sonra karşılaştırma testi yeniden denenir) ve kullanıcı derlemelerinde karşılaştırma testlerini önemli ölçüde hızlandırır. Ayrıca, saatler kilitlendiğinde bile (cihazın fiziksel ortamı için çok yüksek bir değere kilitlendiyse) frekans sınırlama algılama özelliği sunar. (I9c027, b/217497678, b/131755853)

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

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

  • Android 9'u (SDK 28) hedeflemek için temel profil kurallarını filtreleyin. aosp/1980331 b/216508418

  • Compilation.None() kullanırken profil yüklemeyi atlayın. Ayrıca, uygulama androidx.profileinstaller ve Android Gradle eklentisinin eski bir sürümünü kullandığında uyarılar bildirilir. aosp/1977029

Sürüm 1.1.0-beta03

9 Şubat 2022

androidx.benchmark:benchmark-*:1.1.0-beta03 iptal edilir. Version 1.1.0-beta03 contains these commits.

API Değişiklikleri

  • Ses yetersizliklerinin algılanmasına olanak tanımak için deneysel işaret altında makro karşılaştırma testi kitaplığına AudioUnderrunMetric eklendi (Ib5972)
  • BaselineProfileRule, profileBlock ile aynı işlevi gördüğü için artık setup engellemeyi kabul etmiyor. (Ic7dfe, b/215536447)

    Örneğin:

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

Hata Düzeltmeleri

  • Studio çıkışında bağlandığında mikrobenchmark profiler izlerinin sonraki çalıştırmalarda güncellenmemesine neden olan sorun düzeltildi (I5ae4d, b/214917025).
  • API 23'te (Ice380) derleme kabuğu komutlarını engelleme
  • Bunların zaman damgası değil, süre olduğunu netleştirmek ve önekleri eşleştirmek için FrameCpuTime -> FrameDurationCpu, FrameUiTime -> FrameDurationUi olarak yeniden adlandırıldı. (I0eba3, b/216337830)

Sürüm 1.1.0-beta02

26 Ocak 2022

androidx.benchmark:benchmark-*:1.1.0-beta02 iptal edilir. 1.1.0-beta02 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

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

Sürüm 1.1.0-beta01

12 Ocak 2022

androidx.benchmark:benchmark-*:1.1.0-beta01 iptal edilir. 1.1.0-beta01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Profiler bağımsız değişkeninin etkinleştirilmesinin yoksayılması sorunu düzeltildi. (I37373, b/210619998)
  • Kullanımdan kaldırılan CompliationModes kaldırıldı (I98186, b/213467659)
  • CompilationMode.Partial işlevinin temel profil bağımsız değişkeni, daha anlaşılır olması için enum olarak değiştirildi. (Id67ea)

Sürüm 1.1.0-alpha13

15 Aralık 2021

androidx.benchmark:benchmark-*:1.1.0-alpha13 iptal edilir. 1.1.0-alpha13 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Android Q'da (API 29+) mikro kıyaslama çıkışına düşük ek yük içeren Sistem İzleme'yi ekleyin. Sonuçları etkilememek için bu özelliğin şu anda özel izlemeyi (android.os.Trace 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 gelen kararsızlıkları teşhis etmek için yararlı olmalıdır. (I298be, b/205636583, b/145598917)
  • CompilationModes üç sınıfa ayrılır: Tam, Hiçbiri, Kısmi. Daha önce, derleme bağımsız değişkenlerine (artık uygulama ayrıntıları olarak ele alıyoruz) ve özelliklere göre tutarsız bir şekilde adlandırılıyordu. Bu sayede, platform sürümleri arasındaki denge unsurları, olası kombinasyonlar ve davranışlar daha net hale gelir. (I3d7bf, b/207132597)
  • Kurulum ve ölçüm artık her zaman sırayla çiftler halinde yapılır. Artık paket adını ve yinelemeyi sorgulayabilirsiniz (ancak yineleme, belirli ısınma senaryolarında null olabilir). (Id3b68, b/208357448, b/208369635)

Hata Düzeltmeleri

  • CompilationMode.Speed öğesinin yanlışlıkla None olarak değerlendirilmesi düzeltildi (I01137)

Sürüm 1.1.0-alpha12

17 Kasım 2021

androidx.benchmark:benchmark-*:1.1.0-alpha12 iptal edilir. 1.1.0-alpha12 sürümü şu commit'leri içerir.

Yeni Özellikler

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

Hata Düzeltmeleri

  • Kullanıcı arayüzünün test edilebilmesi için her yinelemede cihazı uyandırın. Bunun için kilit ekranının devre dışı bırakılması gerekir. (Ibfa28, b/180963442)
  • Emülatörlerde ve root erişimi olmayan cihazlarda StackSampling profilleme modundaki birden fazla kilitlenme düzeltildi (Icdbda, b/202719335).
  • Her yinelemenin sonundaki 0, 5 saniyelik uyku süresi kaldırıldı.Bu değişiklikle birlikte eksik metrikler görürseniz lütfen hata kaydı oluşturun. (Iff6aa)
  • Veri kaybı olasılığını azaltın ve izleme nedeniyle oluşan bellek yükünü düşürün (Id2544, b/199324831, b/204448861)
  • Compact sched depolama biçimine geçerek iz boyutunu yaklaşık% 40 küçültün. (Id5fb6, b/199324831)
  • Başlangıç metriklerinin uygulamaları, her zaman oluşturma iş parçacığının sonunda bitecek şekilde güncellendi. Bu, platform sürümlerinde daha tutarlı olacak ve uygulama içi ölçümlerle daha yakından eşlenecek. (Ic6b55)

Sürüm 1.1.0-alpha11

3 Kasım 2021

androidx.benchmark:benchmark-*:1.1.0-alpha11 iptal edilir. 1.1.0-alpha11 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Macrobenchmark artık minSdkVersion 23'ye sahip. (If2655)
  • Uygulamanın kritik kullanıcı yolculuğu için temel profiller oluşturabilen yeni bir deneysel BaselineProfileRule ekler. Ayrıntılı belgeler paylaşılacaktır. (Ibbefa, b/203692160)
  • Yöntemin tamamlanması/çözümlenmesinde belirsizliğe neden olduğundan, Java çağrıları için eklenen measureRepeated arayüzü varyantı kaldırıldı. Java arayanların, measureRepeated'dan Unit.Instance döndürmesi gerekecek. Bu durum rahatsız ediciyse lütfen hata bildiriminde bulunun. Bu konuyu gelecekteki bir sürümde yeniden değerlendirebiliriz. (Ifb23e, b/204331495)

Sürüm 1.1.0-alpha10

27 Ekim 2021

androidx.benchmark:benchmark-*:1.1.0-alpha10 iptal edilir. Version 1.1.0-alpha10 contains these commits.

API Değişiklikleri

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

Hata Düzeltmeleri

  • İzlemelerin yeterince erken başlamaması ve metrik verilerinin eksik olması sorunları düzeltildi. Bu güncellemenin, kitaplığın kendisinden kaynaklanan "Karşılaştırma sırasında herhangi bir metrik okunamadı" istisnalarını düzeltmesi bekleniyor. (I6dfcb, b/193827052, b/200302931)
  • FrameNegativeSlack, anlamını netleştirmek için FrameOverrun olarak yeniden adlandırıldı. Bu işlev, karenin zaman bütçesini ne kadar aştığını gösterir. (I6c2aa, b/203008701)

Sürüm 1.1.0-alpha09

13 Ekim 2021

androidx.benchmark:benchmark-*:1.1.0-alpha09 iptal edilir. Version 1.1.0-alpha09 contains these commits.

Hata Düzeltmeleri

  • API 31/S+ üzerinde kök erişimi olmadan çekirdek sayfa önbelleğinin bırakılması desteklenir. Bu, StartupMode.COLD başlatmalarının doğruluğunu artırır. (Iecfdb, b/200160030)

Sürüm 1.1.0-alpha08

29 Eylül 2021

androidx.benchmark:benchmark-*:1.1.0-alpha08 iptal edilir. Version 1.1.0-alpha08 contains these commits.

API Değişiklikleri

  • Kaydırma makro karşılaştırmalarının API 23'e kadar geriye dönük olarak çalıştırılmasını sağlama (If39c2, b/183129298)
  • Kullanıcı arayüzüne ve JSON çıkışına, yineleme başına birden fazla örneğin yüzdelik dilimlerine odaklanan yeni bir örneklenmiş metrik türü ekleyin. (I56247, b/199940612)
  • Karşılaştırma kitaplıklarında (Studio kullanıcı arayüzünde kısaltılmış) kayan nokta metriklerine geçiş yapın. (I69249, b/197008210)

Sürüm 1.1.0-alpha07

1 Eylül 2021

androidx.benchmark:benchmark-*:1.1.0-alpha07 iptal edilir. 1.1.0-alpha07 sürümü şu commit'leri içerir.

API Değişiklikleri

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

Hata Düzeltmeleri

  • ProfileInstaller düzeltmeleri, temel profilleri kullanan uygulamaların CompilationMode.BaselineProfile kullanarak MacroBenchmark'ları çalıştırmasını kolaylaştırır. (I42657, b/196074999) NOT: androidx.profileinstaller:profileinstaller:1.1.0-alpha04 veya daha yeni bir sürüme de güncellenmesi gerekir.
  • StartupMode.COLD ve 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 iptal edilir. 1.1.0-alpha06 sürümü şu commit'leri içerir.

API Değişiklikleri

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

Hata Düzeltmeleri

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

Bilinen Sorunlar

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

Sürüm 1.1.0-alpha05

4 Ağustos 2021

androidx.benchmark:benchmark-*:1.1.0-alpha05 iptal edilir. Version 1.1.0-alpha05 contains these commits.

1.1.0-alpha04, aralıklı olarak yaşanan kilitlenme nedeniyle yayınlanmadan önce iptal edildi. b/193827052

API Değişiklikleri

  • startActivityAndWait, am start aracılığıyla başlatmayı tetikleyecek şekilde değiştirildi. Bu değişiklik, her ölçüm yinelemesinin süresini yaklaşık 5 saniye kısaltıyor ancak artık intent parcelable'ları desteklemiyor. (I5a6f5, b/192009149

Hata Düzeltmeleri

  • Termal kısıtlama algılamanın agresifliğini azaltın ve kısıtlamalar sık sık algılanırsa temel çizgiyi yeniden hesaplayın. (I7327b)
  • FrameTimingMetric'in Android S beta sürümünde çalışması için düzeltmeler yapıldı (Ib60cc, b/193260119).
  • EmptyActivity kullanarak hedef uygulamayı zorla durdurulmuş durumdan çıkarın ve CompilationMode.BaselineProfile'ı daha iyi destekleyin. (Id7cac, b/192084204)
  • Platform standardına uygun olması için izleme dosyası uzantısı .perfetto-trace olarak değiştirildi. (I4c236, b/174663039)
  • StartupTimingMetric artık uygulamanızın oluşturma işlemini tamamlamasına kadar geçen süreyi ölçmek için "fullyDrawnMs" metriğini çıkış olarak veriyor. Uygulamanız için bu metriği tanımlamak üzere, ilk içeriğiniz hazır olduğunda (ör. ilk liste öğeleriniz veritabanından veya ağdan yüklendiğinde) Activity.reportFullyDrawn'ı çağırın. (reportFullyDrawn yöntemi, ComponentActivity'de derleme sürümü kontrolleri olmadan kullanılabilir). Testinizin, metriği yakalayacak kadar uzun süre çalışması gerektiğini unutmayın (startActivityAndWait, reportFullyDrawn'ın tamamlanmasını beklemez). (If1141, b/179176560)
  • İzlere kullanıcı arayüzü meta verileri ekleme maliyetini 50 ms'den fazla azaltma (Ic8390, b/193923003)
  • İzleme durdurulduğunda yoklama sıklığı önemli ölçüde artırıldı.Bu, örneğin başlangıç karşılaştırması çalışma süresini %30'dan fazla azaltabilir (Idfbc1, b/193723768).

Sürüm 1.1.0-alpha03

16 Haziran 2021

androidx.benchmark:benchmark-*:1.1.0-alpha03 iptal edilir. 1.1.0-alpha03 sürümü şu commit'leri içerir.

Yeni Özellikler

Hata Düzeltmeleri

  • Karşılaştırma hatalarını bastırmaya yönelik örnek Gradle kodu, .gradle.kts kullanıcılarını da destekleyen bir söz dizimiyle birlikte kullanımdan kaldırılmamış bir API'yi kullanacak şekilde güncellendi.

    Örnek:

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

Sürüm 1.1.0-alpha02

18 Mayıs 2021

Karşılaştırma sürümü 1.1.0-alpha02, karşılaştırmaya büyük bir bileşen olan Macrobenchmark'ı getiriyor. Benchmark, CPU döngülerini ölçmenize olanak tanımanın yanı sıra macrobenchmark, başlatma ve kaydırma gibi uygulama genelindeki etkileşimleri ölçmenize ve izleri yakalamanıza olanak tanır. Daha fazla bilgi için kitaplık belgelerine bakın.

androidx.benchmark:benchmark-*:1.1.0-alpha02 iptal edilir. 1.1.0-alpha02 sürümü şu commit'leri içerir.

Yeni Özellikler

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

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

Hata Düzeltmeleri

  • Android 12'de çıkış diziniyle ilgili kabuk izinleri sorununa geçici çözüm getirildi (Not: Etkilenen cihazlarda çıkış dosyalarını yakalamaya devam etmek için Android Gradle eklentisinin 7.0.0 canary sürümüne ve Android Studio'nun Arctic Fox (2020.3.1) sürümüne güncellenmesi gerekebilir). (Icb039)
  • BenchmarkPlugin'de yapılandırma önbelleğe almayı destekleme (6be1c1, b/159804788)
  • Basitleştirilmiş dosya çıkışı: Varsayılan olarak etkindir ve requestLegacyExternalStorage=true gerektirmeyen bir dizindedir (8b5a4d, b/172376362)
  • Kitaplık yazdırma logcat uyarılarının, JIT iş parçacığının bulunmadığı platform sürümlerinde bulunamamasıyla ilgili sorunu düzeltir. (I9cc63, b/161847393)
  • Okuma cihazının maksimum sıklığıyla ilgili düzeltme. (I55c7a)

Sürüm 1.1.0-alpha01

10 Haziran 2020

androidx.benchmark:benchmark-common:1.1.0-alpha01, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01 ve androidx.benchmark:benchmark-junit4:1.1.0-alpha01 yayınlandı. 1.1.0-alpha01 sürümü şu commit'leri içerir.

1.1 sürümündeki yeni özellikler

  • Ayırma metriği: Karşılaştırmalar artık ısınma ve zamanlamadan sonra ek bir aşama çalıştırarak ayırma sayılarını yakalıyor. Ayırmalar, platformun eski sürümlerinde performans sorunlarına neden olabilir (O'da 140 ns olan süre, M'de 8 ns'ye düşmüştür. Bu süre, saatler kilitliyken Nexus 5X'te ölçülmüştür). Bu metrik, Android Studio konsol çıkışında ve
  • Profil oluşturma desteği: Artık kodunuzun neden yavaş çalışıyor olabileceğini incelemek için bir karşılaştırma çalıştırmasıyla ilgili profil oluşturma verilerini yakalayabilirsiniz. Benchmark, ART'den yöntem izleme veya yöntem örnekleme yakalamayı destekler. Bu dosyalar, Android Studio'daki Profiler ile Dosya > Aç kullanılarak incelenebilir.
  • Benchmark Gradle eklentisi artık daha basit kurulum için varsayılan değerler sunuyor:
    • testBuildType, yerleşik kod kapsamına sahip bağımlılıkların kullanılmaması için varsayılan olarak yayınlanacak şekilde ayarlanır. Release buildType, varsayılan buildType olarak da yapılandırılır. Bu sayede Android Studio, bir projeyi ilk kez açarken doğru build varyantını otomatik olarak seçebilir. (b/138808399)
    • signingConfig.debug, varsayılan imzalama yapılandırması olarak kullanılır (b/153583269)

** Hata Düzeltmeleri **

  • Isınma geçişi ek yükünü önemli ölçüde azalttık. Bu ek yükte, her karşılaştırma için ilk ölçüm diğerlerinden yapay olarak daha yüksekti. Bu sorun, çok küçük karşılaştırma testlerinde (1 mikrosaniye veya daha kısa) daha belirgindi. (b/142058671)
  • Komut satırından çalıştırıldığında her karşılaştırma için yazdırılan InstrumentationResultParser hatası düzeltildi. (I64988, b/154248456)

Bilinen Sorunlar

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

Sürüm 1.0.0

Benchmark Version 1.0.0

20 Kasım 2019

androidx.benchmark:benchmark-common:1.0.0, androidx.benchmark:benchmark-gradle-plugin:1.0.0 ve androidx.benchmark:benchmark-junit4:1.0.0, 1.0.0-rc01 sürümüne kıyasla herhangi bir değişiklik yapılmadan yayınlandı. Version 1.0.0 contains these commits.

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

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

Derleme ve çalışma zamanı yapılandırma sorunlarını önler ve ölçümlerin doğru ve tutarlı olmasını sağlamak için cihaz performansını dengeler. Zaman içindeki kod performansını gözlemlemek ve gerilemeleri önlemek için karşılaştırma testlerini doğrudan Android Studio'da veya sürekli entegrasyonda çalıştırın.

Başlıca özellikler:

  • Saat sabitleme
  • İleti dizilerine otomatik öncelik verme
  • RecyclerView Örneği'nde olduğu gibi kullanıcı arayüzü performans testi desteği
  • JIT'ye duyarlı ısınma ve döngü
  • Sonraki işlem için JSON karşılaştırma testi çıktısı

Sürüm 1.0.0-rc01

23 Ekim 2019

androidx.benchmark:benchmark-common:1.0.0-rc01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01 ve androidx.benchmark:benchmark-junit4:1.0.0-rc01 yayınlandı. Sürüm 1.0.0-rc01 şu commit'leri içerir.

Yeni özellikler

  • Karşılaştırmalara systrace izleme özelliği eklendi

Hata düzeltmeleri

  • Önceliğin düşürülmesi nedeniyle JIT'nin ısınmadan önce tamamlanmamasıyla ilgili metrik kararsızlığı sorunu düzeltildi (b/140773023).
  • Android Gradle eklentisi 3.5 ve 3.6'da birleştirilmiş JSON çıkış dizini

Sürüm 1.0.0-beta01

9 Ekim 2019

androidx.benchmark:benchmark-common:1.0.0-beta01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01 ve androidx.benchmark:benchmark-junit4:1.0.0-beta01 yayınlandı. 1.0.0-beta01 sürümü şu commit'leri içerir.

Yeni özellikler

  • Bir karşılaştırma ölçütünden diğerine bellek sızıntısını önlemek için her ısınma işleminden önce çöp toplama işlemini çalıştırın (b/140895105).

Hata düzeltmeleri

  • androidx.annotation:android-experimental-lint bağımlılığı eklendi. Böylece, deneysel API kullanılmadığında Java kodu, Kotlin arayanlar için Kotlin deneysel ek açıklaması tarafından sağlananlara benzer şekilde lint hatalarını doğru şekilde üretecek.
  • Artık AGP'nin veri kopyalama işlemini ne zaman yapacağını öğrenmek için Android Gradle eklentisi 3.6'da additionalTestOutputDir enstrümantasyon bağımsız değişkeninin kullanımını doğru şekilde algılıyor.
  • -1 (b/141945670) öğesinin doğru şekilde yazdırılması için JSON'da algılanmayan saat frekansını düzeltin.

Sürüm 1.0.0-alpha06

18 Eylül 2019

androidx.benchmark:benchmark-common:1.0.0-alpha06, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06 ve androidx.benchmark:benchmark-junit4:1.0.0-alpha06 yayınlandı. 1.0.0-alpha06 sürümü şu commit'leri içerir.

Yeni özellikler

  • Test çalıştırıcısı için eski paketin yanlış kullanımına yönelik bir kontrol eklendi. Bu kontrol artık daha faydalı bir hata mesajı sunuyor.

API değişiklikleri

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

Sürüm 1.0.0-alpha05

5 Eylül 2019

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

API değişiklikleri

  • BenchmarkState.reportData API'si artık deneysel olarak işaretleniyor

Hata düzeltmeleri

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

Sürüm 1.0.0-alpha04

7 Ağustos 2019

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

Ayrıca, Benchmark kitaplığının Gradle olmadan nasıl kullanılacağıyla ilgili yeni belgeler eklendi. Bu belgelerde, farklı derleme sistemleriyle (ör. Bazel veya Buck) kullanımın yanı sıra CI'da çalıştırma hakkında bilgiler yer alıyor. Daha fazla bilgi için Gradle olmadan karşılaştırma oluşturma ve Sürekli entegrasyonda karşılaştırma çalıştırma başlıklı makaleleri inceleyin.

Yeni özellikler

  • Gradle eklentisi
    • Artık test kapsamını otomatik olarak devre dışı bırakır ve varsayılan olarak AndroidBenchmarkRunner ayarını yapar (b/138374050).
    • AGP 3.6 veya sonraki sürümler kullanılırken ve karşılaştırma testleri çalıştırılırken yeni AGP tabanlı veri kopyalama için destek eklendi.
  • JSON biçiminde eklemeler
    • Toplam çıktı karşılaştırma testi çalıştırma süresi (b/133147694)
    • Ad dizesi kullanan @Parameterized karşılaştırmalar (ör. @Parameters(name = "size={0},depth={1}")) artık JSON çıkışında (b/132578772) karşılaştırma başına parametre adlarını ve değerlerini çıkış olarak veriyor.
  • Prova modu (b/138785848)
    • Ölçüm almadan hataları/kilitlenmeleri kontrol etmek için her bir karşılaştırma testi döngüsünü yalnızca bir kez çalıştırmaya yönelik "deneme çalıştırması" modu eklendi. Bu özellik, örneğin, gönderim öncesinde karşılaştırma testlerini hızlı bir şekilde çalıştırarak bozuk olmadıklarını kontrol etmek için faydalı olabilir.

API değişiklikleri

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

Hata düzeltmeleri

  • Q cihazlarda harici depolama alanına yazarken oluşan hatalar, sorunun nasıl çözüleceğine dair önerilerle birlikte daha açıklayıcı mesajlar sağlar.
  • Ekran kapalıyken başarısız olmak yerine, kıyaslama çalıştırmaları sırasında ekranlar otomatik olarak açılır.

Harici katkılar

  • JSON çıkışını iyileştirmeye ve ekranın kapalı kalması sorununu düzeltmeye katkıda bulunan Sergey Zakharov'a teşekkür ederiz.

Sürüm 1.0.0-alpha03

2 Temmuz 2019

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

Yeni özellikler

  • Tam JSON raporunda, termal kısma nedeniyle uyku süresini karşılaştırma ölçütü başına gösterme

Hata düzeltmeleri

  • Gradle eklentisinin artık Android eklentilerinden ve Android bloğundan sonra uygulanması gerekmiyor.
  • Kapsamlı depolama kullanan Android 10 cihazlarda karşılaştırma raporları için destek eklenir.

Sürüm 1.0.0-alpha02

6 Haziran 2019

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

JSON şemasını API olarak değerlendirdiğimizi unutmayın. Diğer API'lerle aynı kararlılık kısıtlamalarını uygulamayı planlıyoruz: Beta sürümünde çok nadir istisnalar dışında kararlı, son sürümde düzeltilmiş, küçük sürümlerde yalnızca eklemeler, büyük sürümlerde ise değişiklikler/kaldırmalar.

API değişiklikleri

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

    • Gelecekte ek metrik gruplarını desteklemek için sonuç nesnesi yapısı yeniden düzenlendi (b/132713021)
    • Cihaz ve derleme bilgileri ile saatlerin kilitli olup olmadığı gibi test çalıştırması bağlam bilgileri, üst düzey nesneye (b/132711920) eklendi.
    • Süre metriği adlarında artık "ns" ifadesi yer alıyor (b/132714527)
    • Bildirilen metrik başına eklenen ek istatistikler (maksimum, ortalama, minimum) ve basitleştirilmiş "nanos" özet istatistiğinin kaldırılması (b/132713851)
  • XML çıkışı kaldırıldı (b/132714414)

  • BenchmarkState.reportData API'sinden termal kısma algılama özelliği kaldırıldı (b/132887006)

Hata düzeltmeleri

  • ./gradlew lockClocks simgesinin bazı yeni işletim sistemli cihazlarda sabitlenmemesi sorunu düzeltildi. (b/133424037)
  • Emülatör için kısıtlama algılama devre dışı bırakıldı (b/132880807)

Sürüm 1.0.0-alpha01

7 Mayıs 2019

androidx.benchmark:benchmark:1.0.0-alpha01 iptal edilir. Bu sürüme dahil edilen işlemeler burada bulunabilir.