Karşılaştırma

Android Studio'da kodunuzun performansını doğru bir şekilde ölçün.
Son Güncelleme Kararlı Sürüm Serbest Bırakma Adayı Beta Sürümü Alfa Sürümü
20 Mart 2024 1.2.3 - - 1.3.0-alpha02

Bağımlılıkları bildirme

Karşılaştırma için bir bağımlılık eklemek üzere projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.

MakroKarşılaştırma

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

Modern

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

Kotlin

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

Mikro karşılaştırma

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

Modern

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

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

Kotlin

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

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

Microbenchmark kitaplığı, mikrobenchmark modülünüzle kullanabileceğiniz bir Gradle eklentisi de sağlar. Bu eklenti, modül için derleme yapılandırması varsayılanları belirler, karşılaştırma çıkış kopyasını ana makineye ayarlar ve ./gradlew lockClocks görevini sağlar.

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

Modern

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

Kotlin

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

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

Modern

plugins {
  id 'androidx.benchmark'
}

Kotlin

plugins {
    id("androidx.benchmark")
}

Geri bildirim

Geri bildiriminiz Jetpack'i daha iyi hale getirmemize yardımcı oluyor. Yeni sorunlar keşfederseniz veya bu kitaplığı nasıl geliştirebileceğimizle ilgili fikirleriniz varsa 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 sayı oluşturma

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

Sürüm 1.3

Sürüm 1.3.0-alpha02

20 Mart 2024

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

Yeni Özellikler

  • Gömülü ProGuard kuralları aracılığıyla mikrobench'te deneysel R8 desteği. Bu desteğin deneysel olduğunu ve kitaplık modülü testlerinin küçültülmesi için AGP 8.3 gerektiğini unutmayın. Karşılaştırma modülünüzün build.gradle ürününde R8 küçültme/optimizasyonunu etkinleştirmek için aşağıdakileri kullanın. Bu işlem, iş yüküne bağlı olarak önemli bir performans artışı sağlayacaktır. (I738a3, b/184378053)

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

Hata Düzeltmeleri

  • Yöntem izleme uyarısını mikrobench çıkışından ayrı bir satırda olacak şekilde düzeltir. (I0455c, b/328308833)

Sürüm 1.3.0-alpha01

21 Şubat 2024

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • Belirtilen yönetilen cihaz mevcut olmadığında referans profil gradle eklentisindeki hata mesajı iyileştirildi (Idea2b, b/313803289)
  • AGP 8.3.0-alpha15'ten (I1d2af, b/313992099) önceki AAR'deki kitaplık temel çizgisi profillerini dahil etmeyle ilgili düzeltme
  • Oluşturma görevinin sonundaki referans değer ve başlangıç profili çıkış URL'si düzeltildi (I802e5, b/313976958)
  • java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)] sorununu düzeltmeye çalışmak için veri kaynağı zaman aşımları düzenlendi (I8dc7d, b/323601788)
  • ProfileInstaller 1.3'ü içermeyen uygulamaları karşılaştırırken yaşanan geçici kilitlenmelere karşı gölgelendirici bırakma davranışını geçersiz kılmak için iki araç bağımsız değişkeni ekleyin:
    • androidx.benchmark.dropShaders.enable=true/false : Özellikle henüz profil yükleyici 1.3'ü kullanmayan uygulamaları karşılaştırırken, tüm gölgelendirici bırakma işlemlerini (StartupMode.Cold lansmanlarında yapılanlar dahil) atlamak için kullanılabilir
    • androidx.benchmark.dropShaders.throwOnFailure=true/false : Gölgelendirici bırakmaya çalışırken oluşabilecek hataları telafi etmek için kullanılabilir. Örneğin, profil yükleyici 1.3 (I4f573) yüklü olmayan uygulamaları karşılaştırırken kullanılabilir.
  • Birkaç saniyeden uzun sürmesi beklendiğinde kullanıcı arayüzü iş parçacığında yöntem izlemeyi ve aktarma sırasında temizleme yöntemi izlerini atlayın. (I6e768)
  • Dosyalar yazılırken veya işlenirken ortaya çıkabilecek kilitlenmeleri önlemek için dosya adları 200 karakterden uzun olduğunda ekleyin. (I4a5ab)
  • İzlemenin başındaki ve sonundaki sonlandırılmamış karelerin birlikte eşlenebilmesi sorununu düzeltir. Bu durum, yanlış bir şekilde çok uzun tek bir kare olarak rapor oluşturur. (I39353, b/322232828)
  • Kullanıcı derlemelerinde ART profillerini temizlemek için API 30-33'te bir paketi yeniden yüklerken API 30 ve sonraki sürümlerde --skip verification kullanın. Bu, bazı cihaz sınıflarında hatalara neden olan Play Protect uyarılarının atlanmasına yardımcı olur. (Ic9e36)
  • Sistem Kullanıcı Arayüzü veya Başlatıcı gibi bir sistem uygulaması değilken uygulamaları kapatmak için am force-stop kullanın. (I5e028)
  • Makrobenchmark, şu anda hedef uygulamanın bir ART profilini temizlemesi için 1 second beklemektedir (önceden 500 ms bekliyordu). (I85a50, b/316082056)
  • Kareler oluşturulmadığında FrameTimingMetric hatasını iyileştirin ve sorunun teşhis edilmesine yardımcı olmak için, metrik ayrıştırma işlemi başarısız olduğunda her zaman iz bağlantısı için çıkış oluşturun. (I956b9)
  • Özellikle belirli OEM cihazlarda, FrameTimingMetric ürününde kare kimliğini ayrıştıramayan kilitlenme düzeltildi. (Ia24bc, b/303823815, b/306235276)
  • FrameMetrics hesabındaki kontrollerin güvenlik düzeyi gevşetildi ve hata mesajlarına daha fazla ayrıntı eklendi. (iadede)

Sürüm 1.2

Sürüm 1.2.3

24 Ocak 2024

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

Hata Düzeltmeleri

  • AGP sürümü 8.3.0 veya üstü olduğunda Baseline Profile Gradle Eklentisi'nin istisnası kaldırıldı.
  • AGP 8.3.0-alpha15'ten önceki AAR'de kitaplık temel çizgisi profillerini dahil etmeyle ilgili düzeltme.

Sürüm 1.2.2

1 Aralık 2023

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

Temel Profiller

Sürüm 1.2.1

15 Kasım 2023

androidx.benchmark:benchmark-*:1.2.1 yayınlandı. 1.2.1 sürümü bu kayıtları içerir.

Yeni Özellikler

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

Sürüm 1.2.0

18 Ekim 2023

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

1.1.0'dan sonraki önemli değişiklikler

Temel Profiller

  • Yeni Baseline Profile Gradle Plugin, temel profilleri yakalamayı ve test ve derleme iş akışınıza dahil etmeyi otomatik hale getirir.
  • BaselineProfileRule.collect artık kararlı, önceki deneysel BaselineProfileRule.collectBaselineProfile API'nin basitleştirilmiş ve basitleştirilmiş bir sürümü.
    • packageName ürününü belirtip uygulamanızı çalıştırın
  • Temel profil oluşturan kitaplıklar için artık kodda (BaselineProfileRule.collect bağımsız değişkeni) veya daha basit bir şekilde gradle eklentisinde oluşturulan kuralları filtreleyebilirsiniz
  • Düzeltmeler

MakroKarşılaştırma

  • Derleme
    • Makrobenchmark artık her derleme için derleme durumunu doğru şekilde tamamen sıfırlıyor. Bu işlem için APK'nın Android 14'ten önce yeniden yüklenmesi gerekiyor. Bu nedenle, ölçülenin durumunu (kullanıcı girişi gibi) korumak istiyorsanız Android 14 ve sonraki sürümlerde karşılaştırma yapmanız önemle tavsiye edilir.
    • Bu sorunu çözmek için uygulama derlemesini ayrı olarak kontrol edebilir ve derlemeyi CompilationMode.Ignore() veya araçlama bağımsız değişkeniyle atlayabilirsiniz
  • Araç Bağımsız Değişkenleri

    • Daha hızlı doğrulama çalıştırmaları için (ör. karşılaştırma oluştururken veya gönderim öncesi sırasında) androidx.benchmark.dryRunMode.enable enstrümantasyon bağımsız değişkeni desteği (zaten mikro karşılaştırmada mevcuttur)
    • androidx.benchmark.profiling.mode=StackSampling ve MethodTracing için destek.
    • Çalışma zamanı filtreleme temel profili ile makro karşılaştırma kuralı testlerinin karşılaştırmasına izin vermek için androidx.benchmark.enabledRules eklendi
    • Trace-perfetto ile izlemeyi etkinleştirmek için androidx.benchmark.perfettoSdkTracing.enable argümanı eklendi (ör. Yeniden oluşturma izleme). StartupMode.COLD ile birlikte kullanıldığında, uygulama başlatılırken izleme kitaplığı yüklenip etkinleştirildiği için zamanlamanın önemli ölçüde etkileneceğini unutmayın.
  • Şartlar

    • Makrobenchmark, profil yakalama / sıfırlama ve gölgelendirici önbellek temizlemeyi etkinleştirmek için hedef uygulamada artık ProfileInstaller 1.3.0 veya sonraki bir sürümü gerektiriyor.
  • Yeni Deneysel Metrik API'leri

    • Uygulamanızdaki trace("") {} bloklarından basit zamanlamaları çıkarmanızı sağlayan deneysel TraceSectionMetric veya Perfetto TraceProcessor'un tam sorgu özelliğinden yararlanmak için TraceMetric eklendi.
    • Güç kullanım bilgilerini yakalamak için deneysel PowerMetric eklendi
    • Sayfa hatalarını saymak için deneysel MemoryCountersMetric eklendi
    • Sistem izlerinden (diğer adıyla Perfetto izleri) 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 çıkarırken veya yüklerken yaşanan kilitlenmeler düzeltildi.
    • FrameTimingMetric işlevinin tutarsız çerçeve kimliklerine sahip kareleri yoksayması (genellikle API 31 ve sonraki sürümlerde dalgalar sırasındaki kareler) düzeltildi (I747d2, b/279088460)
    • 64 MB'tan büyük izlerdeki ayrıştırma hataları düzeltildi (Ief831, b/269949822)
    • Cihaz (özellikle emülatör) işletim sistemi görüntüsü izleme veya derleme için doğru şekilde yapılandırılmadığında karşılaşılan hatalar açıklandı
    • Pil bulunmayan cihazlar için pil düzeyi kontrolünü atla (mikro ve makro)
    • Geçersiz çıkış dizinleri için daha açık hatalar ve daha güvenli varsayılanlar ile iyileştirilmiş dosya çıkışı
    • Gölgelendirici önbelleği sürekli olarak bırakılarak StartupMode.COLD kararlılığı iyileştirildi (MacrobenchmarkScope.dropShaderCache üzerinden de açığa çıkarılır)
    • startActivityAndWait için Leanback yedeği düzeltildi.

Mikro Karşılaştırma

  • Özellikler
    • Profil oluşturma, diğer metriklerden sonra ayrı bir aşamaya taşınmıştır. Bu sayede, bir test çalıştırmasında hem doğru zamanlama hem de profil oluşturma sonuçları görüntülenebilir.
  • Deneysel API'ler
    • Özel metrikleri tanımlamak, izleme ve profil oluşturmayı yapılandırmak için deneysel MicrobenchmarkConfig API'si eklendi. Yöntem izlerini yakalamak veya iz noktalarını yakalamak için kullanılabilir (ancak ek yük izlemeyi unutmayın).
    • BenchmarkState'i BenchmarkRule ürününden ayrı olarak kontrol etmek için, JUnit olmadan deneysel API'ler eklendi
    • Perfetto izlerinin, karşılaştırma API'lerinden ayrı olarak özel yapılandırmaya sahip şekilde yakalanmasını sağlamak için deneysel PerfettoTrace kaydı eklendi.
  • Düzeltmeler
    • Geçici çözümde, Android Studio karşılaştırma çıktısında başta beyaz alanlar eksik.
    • Android Studio karşılaştırma çıktısında uyarıların yazdırılamamasına yol açan sorun düzeltildi.
    • Android 13 (API 33) ve sonraki sürümlerdeki SampledProfiling kilitlenmesi düzeltildi.
    • IsolationActivity ve Perfetto izlemeyi atlayarak dryRunMode performansı büyük ölçüde iyileştirildi (eski OS sürümlerinde 10 kata kadar daha hızlı prova modu).

Sürüm 1.2.0-rc02

6 Ekim 2023

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

Hata Düzeltmeleri

  • BaselineProfile Eklenti dosyası kopyalama işleminin kesintiye uğramaması için Karşılaştırma dosyası çıkışını düzeltin. Dosyalar cihazdan oluşturulup kopyalanmıştır ancak gradle eklentisi tarafından görülmeyecek şekilde yeniden adlandırılmıştır. (I8dbcc, b/303034735, b/296453339)
  • Makrobenchmark modülünden hedef uygulamaya eklenirken tracing-perfetto yükleme hatası mesajları açıklandı.

Sürüm 1.2.0-rc01

20 Eylül 2023

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

Hata Düzeltmeleri

  • Bir Karşılaştırma'da Perfetto SDK izlemesi başlatılamadığında artık bir istisna (çözüm talimatlarıyla birlikte) bildirilir. (I6c878, b/286228781)
  • ART yöntemi izleme -> perfetto biçimine dönüştürülürken gerçekleşen OOM kilitlenmesi düzeltildi. (I106bd, b/296905344)
  • (Makrobenchmark) Studio test çıktısında bağlandığında yöntem izleme etiketi ve cihaz/ana makinede benzersiz olacak yöntem izleme dosya adları düzeltildi. Böylece birden fazla karşılaştırma çalıştırıldığında bunların üzerine yazılmayacak. (I08e65, b/285912360)
  • Referans profili kaydederken cihazın uyanık olmasını sağlar. (I503fc)

Sürüm 1.2.0-beta05

30 Ağustos 2023

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

Yeni Özellikler

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

Sürüm 1.2.0-beta04

23 Ağustos 2023

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

Yeni Özellikler

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

Hata Düzeltmeleri

  • Dosyaların yazma / taşıma ve çekme sırasında karşılaşılan (özellikle parametreleştirilmiş testlerdekiler) hataları, çıkış dosyası adlarında "=" ve ":" işaretlerini kaldırarak, çıktı dosyası adlarını daha fazla temizleyerek düzeltin. (I759d8)

Sürüm 1.2.0-beta03

9 Ağustos 2023

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • Yapı adı ve diğer referanslarla tutarlılık sağlamak için fullTracing.enable araç bağımsız değişkeni perfettoSdkTracing.enable olarak yeniden adlandırıldı. fullTracing.enable, yedek olarak çalışmaya devam eder. (I7cc00)
  • Karşılaştırma kitaplığı dahili iz noktaları (mikro karşılaştırma döngüsü/aşama izleme dahil) artık Studio sistem izleme görüntüleyicisinde gösterilecek ve Perfetto'da doğru süreç altında yer alacak. (I6b2e7, b/293510459)
  • API 31 ve sonraki sürümlerde makro karşılaştırmalı DEĞİL hatası kaldırıldı ve mühendis/kullanıcı hata ayıklaması root erişimli cihazlarda profillenebilir kontrol atlandı. (I2abac, b/291722507)
  • Dex Düzeni Optimizasyonları kullanılırken başlangıç profili kuralları da artık temel profil kuralları olarak kabul edilir. (aosp/2684246, b/293889189)

Sürüm 1.2.0-beta02

26 Temmuz 2023

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • Kısa süre önce API 26/28 ARM64 emülatörlerinde düzeltildiği gibi, işletim sistemi izleme için yanlış yapılandırıldığında makrobench'te hata bildirin. (I0a328, b/282191686)
  • Bazı emülatörler bu sorunu yakın zamanda düzelttiğinden, emülatörün güncellenmesini önermek için derleme sıfırlama hatasına ayrıntı eklendi. (I8c815, b/282191686)
  • androidx.test.uiautomator:uiautomator:2.2.0 öğesini implementation bağımlılığı yerine api yapın. (I1981e)

Sürüm 1.2.0-beta01

18 Temmuz 2023

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

Hata Düzeltmeleri

  • Studio'daki Karşılaştırma çıktısında bazen atlanan uyarılar ve Studio'da (Ia61d0, b/227205461, b/286306579, b/285912360) Karşılaştırma çıkışındaki geçici boşlukların önde gelen boşlukları düzeltildi
  • FrameTimingMetric için yapılan yorum düzeltildi. Alt metrik frameDurationCpuMs olarak adlandırılmıştır. (Ib097f, b/288830934).

Sürüm 1.2.0-alfa16

21 Haziran 2023

androidx.benchmark:benchmark-*:1.2.0-alpha16 yayınlandı. Sürüm 1.2.0-alpha16 bu kayıtları 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, değişiklik değil, ölçümden sonra sırayla gerçekleştirilir. Yakalanan Perfetto izine (varsa) artık MethodTracing iz bölümü de dahil ediliyor. (I9f657, b/285014599)
  • Mode.Sum ile TraceSectionMetric öğesine sayım ölçümü ekleyin. (Ic121a, b/264398606)

Sürüm 1.2.0-alfa15

7 Haziran 2023

androidx.benchmark:benchmark-*:1.2.0-alpha15 yayınlandı. Sürüm 1.2.0-alpha15 bu kayıtları 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şturma adımını atlamak için özellik eklendi. Kullanım: ./gradlew assemble -Pandroidx.baselineprofile.skipgeneration. (I37fda, b/283447020)

API Değişiklikleri

  • collectBaselineProfile API her zaman kararlı temel profiller oluşturur. collectStableBaselineProfile API kaldırıldığı için bunun yerine collectBaselineProfile kullanılmalıdır. (I17262, b/281078707)
  • Dokümanlarda varsayılan filtre davranışının daha net olması için BaselineProfileRule öğesinin filterPredicate bağımsız değişkeni, null olmayan bir değer olacak şekilde değiştirildi. Bu değer, eşdeğer bir varsayılan değerle değiştirildi. (I3816e)

Hata Düzeltmeleri

  • Çalışma zamanının büyük çoğunluğunu oluşturduğu için performansı önemli ölçüde artırmak amacıyla dryRunMode içinde IsolationActivity ve Perfetto izlemeyi devre dışı bırakın. (Ie4f7d)
  • Araç testi bağımsız değişkenleri androidx.benchmark.profiling.mode=StackSampling ve androidx.benchmark.profiling.sampleFrequency kullanılarak Makrobenchmark'larda çağrı yığını örnekleme desteği. (I1d13b, b/282188489)
  • Android U'da (API 34) gölgelendiriciler bırakılırken ve emülatörlerde yaşanan kilitlenme düzeltildi. (I031ca, b/274314544)

Sürüm 1.2.0-alfa14

3 Mayıs 2023

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

Hata Düzeltmeleri

  • Tutarsız kare kimliklerine sahip kareleri yoksayarak FrameTimingMetric düzeltildi. Bu durum, son platform sürümlerindeki (API 31+) bazı animasyonların, RenderThread animasyon yapılırken (ör. dalga sırasında) çok sayıda kareyi yoksaymasına neden olur. (I747d2, b/279088460)
  • 64 Mb'tan büyük izler için iz işlemcisi ayrıştırması düzeltildi. (Ief831, b/269949822)
  • Android U'da temel profil oluşturma işleminin, farklı pm dump-profiles komutu çıkışı nedeniyle başarısız olması düzeltildi. (Id1392, b/277645214)
  • Dizeleri doğru karşılaştırmak için GPU saat kilitleme komut dosyasını düzeltin (I53e54, b/213935715)

Sürüm 1.2.0-alfa13

5 Nisan 2023

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

API Değişiklikleri

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

Sürüm 1.2.0-alfa12

22 Mart 2023

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

Yeni Özellikler

  • Yeni temel profil gradle eklentisi alfa sürümde yayınlandı. Bu sayede, referans profil oluşturmak kolaylaştı ve geliştirici iş akışı basitleştirildi.

API Değişiklikleri

  • Hem Microbenchmark'ları hem de deneysel PerfettoTrace API'lerini içeren API 21 ve 22'deki Perfetto izleme desteği kaldırıldı. Bu sürümden önce bazı cihazlarda UiAutomation bağlantıları güvenilir değildi. (I78e8c)
  • İz içeriğinin ayrıştırılmasını etkinleştirmek amacıyla PerfettoTraceProcessor için herkese açık deneysel API eklendi. Bu, Perfetto iz verilerine dayalı tamamen özel metriklere yönelik bir adımdır. (I2659e, b/219851406)

Sürüm 1.2.0-alfa11

8 Mart 2023

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

Hata Düzeltmeleri

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

Sürüm 1.2.0-alfa10

22 Şubat 2023

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

Yeni Özellikler

  • Makrobenchmark, Android 14 ve sonraki sürümlerde yeni bir platform özelliği sayesinde artık hedef uygulamaları derleme durumunu sıfırlamak için yeniden yüklemez. Daha önce, root erişimli bir cihaza sahip olmak veya her karşılaştırma çalıştırılmadan önce kaldırılan tüm uygulama durumlarını (ör. kullanıcı girişi) ele almak gerekiyordu. (I9b08c, b/249143766)

Hata Düzeltmeleri

  • Derlemenin atlanması nedeniyle, DryRunMode öğesinin artık boş profille kilitlenmesini önleyecek şekilde düzeltme yapıldı. Bunun yerine, tek bir iterasyon yapar ve bir şeyin yakalandığından emin olmak için profili çıkarır. (I2f05d, b/266403227)
  • Eski API düzeylerinde güç istatistikleri varlığı kontrol edilirken PowerMetric kilitlenmesi düzeltildi. (5faaf9, b/268253898)

Sürüm 1.2.0-alpha09

11 Ocak 2023

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

Hata Düzeltmeleri

  • Tüm karşılaştırmaları / referans profil oluşturmayı devre dışı bırakmak için None ila androidx.benchmark.enabledRules araç bağımsız değişkeninin geçirilmesi etkinleştirildi. (I3d7fd, b/258671856)
  • Uygulama modüllerinde PerfettoTrace yakalamayı düzeltin (ör. kendi kendine enstrümantasyon içermeyen test APK'ları) (I12cfc)
  • Studio çıkışında referans profil adb pull bağımsız değişkeni sırası (I958d1, b/261781624) düzeltildi
  • Arm emulator api 33, artık bir makro karşılaştırma çalıştırmaya çalışırken olduğu gibi doğru şekilde tanınıyor ve uyarıyı doğru bir şekilde yazdıracak. (69133b,b/262209591)
  • Makrobenchmark'ta (fe4114, b/232448937) pil bulunmayan cihazlarda pil seviyesi kontrolünü atla

Sürüm 1.2.0-alpha08

7 Aralık 2022

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

API Değişiklikleri

  • Test davranışını ve performansını incelemek amacıyla test kapsamında Perfetto izlerini (Sistem İzleri olarak da bilinir) yakalamak için PerfettoTrace.record {} ve PerfettoTraceRule adlı deneysel yeni API'ler eklendi. (I3ba16)
  • BaselineProfileRule artık paket önekleri listesi yerine bir filtre koşulunu kabul ediyor. Bu, teste filtreleme üzerinde tam denetim sağlar. (I93240)
  • Temel profil N yinelemede kararlı hale gelene kadar bekleyen deneysel bir API (BaselineProfileRule.collectStableBaselineProfile) ekleyin. (I923f3)
  • BaselineProfileRule kullanarak referans profil oluştururken çıkış dosyası adı öneki belirtme özelliği ekleyin. (I7b59f, b/260318655)

Hata Düzeltmeleri

  • Özellikle API 21 / 22'de çıkış dosyalarının sessizce yazılmamasını/eklenmemesini sağlayacak dosya çıkışı yazma güvenliğini iyileştirin. (If8c44, b/227510293)
  • Dosyayı doğru şekilde oluşturup yerleştirmek için simpleperf izleme çıkışını düzeltin. Bu, bir dosyanın gradle tarafından başarısız bir şekilde çekilmesiyle ilgili sorunları daha genel olarak düzeltecektir. (I12a1c, b/259424099)
  • Profil yükleyici çok eski olduğunda yazdırılan "profil yükleyiciyi iyileştir" hata mesajı. Bu, artık API 31 ile 33 arasındaki temel profilleri ölçmek için profil yükleyici sürümünü (1.2.1) güncellemenizi gerektirir. (Ia517f, b/253519888)
  • "Yazdırma gerekli API <=23" mesajındaki birkaç kabuk komutu hatasını düzeltme (ör. başarısız performans ikili program kurulumu ve izleme yakalama hataları dahil) (Ib6b87, b/258863685)
  • Oluşturulan profil kurallarını, zamanla değiştikçe değişiklik sayısını en aza indirmek için otomatik olarak sıralayın (profil kurallarını kaynak kontrolüne geçirirken). (Ie2509)
  • Android 13'ün (API 33) altındaki rootlanmamış derlemelerde Expected no stderr from echo 3 > /proc/sys/vm/drop_caches iletisiyle (I6c245, b/259508183) kilitlenme düzeltildi

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

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

Sürüm 1.2.0-alpha07

9 Kasım 2022

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

API Değişiklikleri

  • Makrobenchmark'larda enerji ve gücü ölçmek için PowerMetric API'sini ekler. (Ife601, b/220183779)
  • MacrobenchmarkScope.dropShaderCache() değeri, gölgelendirici önbelleğini gerçekten bırakacak şekilde düzeltildi. Gölgelendiriciler artık her iterasyonda tutarlı bir şekilde temizlendiği için bu işlem, StartupMode.COLD karşılaştırmalarından yaklaşık 20 ms'lik gürültüyü kaldırır. Önceden, ısınma yinelemelerini kullanan Partial derlemesi, ısınma sırasında gölgelendirici önbelleğe alma işleminin gerçekleşme olasılığı daha yüksek olduğundan hatalı bir şekilde hızlı sayılar raporluyordu. Bu düzeltme, root erişimli cihaz veya hedef uygulamada profileinstaller:1.3.0-alpha02 kullanılmasını gerektirir. 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 iz bölümünde harcanan toplam sürenin ölçülmesine olanak tanıyan TraceSectionMode("label", Mode.Sum) özelliği eklendi. Örneğin TraceSectionMetric("inflate", Mode.Sum), enflasyona harcanan bir makro karşılaştırmada toplam süre için bir inflateMs metriği bildirir. Ayrıca TraceSectionMetric, hedef uygulamada forceEnableAppTracing kullanımıyla daha düşük API seviyelerine dönmek için androidx.tracing.Trace ile birlikte çalıştığından API 29 gereksinimi de kaldırılmıştır. (Id7b68, b/231455742)

Hata Düzeltmeleri

  • Tüm çıkış/hatalar doğrulanarak tüm dahili kabuk komutlarının güvenliği iyileştirildi. (I5984d, b/255402908, b/253094958)
  • Cihazı temel profil adb pull komutunda belirtin. Böylece pull komutu, birden fazla cihaz bağlıysa (en fazla bir emülatör) kopyalanabilir (I6ac6c, b/223359380)
  • Makrobenchmark testi apk, kendi kendine enstrümantasyon olarak ayarlanmadıysa hata ekleyin. Bu hata, hedef uygulamanın işlemi içinden makro karşılaştırmayı engeller. İşlem sırasında makrobench, uygulamayı derleyemez/sonlandıramaz/baştan başlatamaz veya kendi izinlerini kontrol edemez (I4279b)
  • measureRepeated() özelliğinde, setupBlock sonrasında StartupMode.COLD öğesinin hedef işlemi sonlandırmaması sorunu giderildi. Uygulamayla etkileşimde bulunan setupBlock, uygulama işlemini çalışır durumda bırakmaz ve geçersiz bir baştan başlatma ölçümü. (I8ebb7)

Sürüm 1.2.0-alpha06

24 Ekim 2022

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

API Değişiklikleri

  • BaselineProfileRule artık Android 13'te (API 33) root gerektirmiyor ve artık deneysel değil. (Ie0a7d, b/250083467, b/253094958)
    • Bu değişiklik, root olmayan cihazlarda bir uygulamadaki profillerin diske boşaltılma biçimini de düzeltir ancak hedef uygulamanın profil yükleyici bağımlılığının güncellenmesini gerektirir.
    • BaselineProfileRule veya CompilationMode.Partial(warmupIterations) uygulamasını rootlanmamış bir cihazda kullanmak için hedef uygulamanızı da androidx.profileinstaller.profileinstaller:1.3.0-alpha01 kullanacak şekilde güncellemeniz gerekir. Bu, derlenebilmesi/çıkarılabilmesi için profilin diske doğru şekilde boşaltılmasını sağlar.

Hata Düzeltmeleri

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

Sürüm 1.2.0-alpha05

5 Ekim 2022

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

Hata Düzeltmeleri

  • Karşılaştırma tarafından yakalanan izler için Studio sistem izleme görüntüleyicideki kare dökümünü düzeltin (I3f3ae, b/239677443)
  • FrameOverrun öğesini 29 yerine API 31 gerektirecek şekilde listelemek için FrameTimingMetric politikasını düzeltin (I716dd, b/220702554)
  • Yinelemeyi BaselineProfileRule içinde ayarlayın ve hedef paket yüklü değilse (MakrobenchmarkRule için önceden yapılmışsa) bunu açıkça belirtin. (Ic09a3, b/227991471)

Sürüm 1.2.0-alpha04

21 Eylül 2022

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

Yeni Özellikler

  • Daha hızlı yerel geliştirme yapmak ve uygulama otomasyonunu doğrulamak (ör. gönderim öncesinde) için makro karşılaştırmaya (zaten mikroda mevcuttur) dryRunMode.enable enstrümantasyon argümanı desteği ekleyin. Bu, yinelemeleri 1'e geçersiz kılar, derlemeyi atlar, tüm yapılandırma hatalarını gizler 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 işlevinin, ölçülen Etkinliklerin MacrobenchmarkScope.startActivityAndWait() üzerinden başlatılmasını artık gerektirmemesi düzeltildi. 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 güvenlik düzeyini azaltarak emülatörlerde başlatmanın tamamlanmasını beklemeye çalışırken startActivityAndWait ürününün zaman aşımına uğramasına neden olan hata düzeltildi. (Ibe2c6, b/244594339, b/228946895)

Sürüm 1.2.0-alpha03

7 Eylül 2022

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

Yeni Özellikler

  • BenchmarkState kullanımı için BenchmarkRule / JUnit4 değerinden ayrı olarak bağımsız olarak kullanılan deneysel API'ler eklendi. (Id478f, b/228489614)

Hata Düzeltmeleri

Sürüm 1.2.0-alpha02

24 Ağustos 2022

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

API Değişiklikleri

  • Temel Profil oluşturma sırasında, root erişimli olsa bile MacrobenchmarkScope.killProcess() için varsayılan olarak am force stop değerine ayarlanır. Bu, isteğe bağlı bir boole bağımsız değişkeniyle geçersiz kılınabilir. (02cce9, b/241214097)

Hata Düzeltmeleri

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

Sürüm 1.2.0-alpha01

27 Temmuz 2022

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

Yeni Özellikler

  • Perfetto SDK izlemeyi ortaya çıkaran bir uygulamada Perfetto SDK izlemeyi etkinleştirme araçları sağlayan yeni izleme-perfetto-ortak bileşeni (I2cc7f)
  • Makro karşılaştırma çalıştırmalarının yalnızca karşılaştırmalara göre filtrelenmesi veya yalnızca referans profil oluşturulması için androidx.benchmark.enabledRules enstrümantasyon bağımsız değişkeni eklendi. Yalnızca bir tür test çalıştırmak için (örneğin, bir emülatörde yalnızca BaselineProfiles oluştururken) "Makrobenchmark" veya "BaselineProfile" testini geçin. Virgülle ayrılmış liste de Desteklenir. (I756b7, b/230371561)

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

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

    Veya Gradle komut satırından:

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • Köklenmemiş derlemelerdeki her makro karşılaştırmaları arasında derlenen yöntemlerin doğru şekilde sıfırlanmamasına neden olan sorun düzeltildi. Maalesef bu işlem apk'nin her iterasyonunda yeniden yüklenmesini gerektirir. Bu işlem, her makro karşılaştırmanın uygulama verilerini siler. (I31c74, b/230665435)
  • API 21/22'deki iz kaydı kilitlenmesi düzeltildi (If7fd6, b/227509388, b/227510293, b/227512788)
  • Başlangıç makro karşılaştırmalarındaki "Hiçbir metrik okunamadı" istisnasını düzeltmek için etkinlik başlatma tamamlanma algılamasını revize edin. (Ia517c)

Sürüm 1.1.1

Sürüm 1.1.1

9 Kasım 2022

androidx.benchmark:benchmark-*:1.1.1 yayınlandı. 1.1.1 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • Bazı Android11 (API 30) ve sonraki sürümlerin yüklü olduğu cihazlarda meydana gelen android.system.ErrnoException: open failed: EACCES sorunlarını giderir. Bu, 1.2.0-alpha01 tarafından özenle seçilmiş bir düzeltmedir. (aosp/2072249)

Sürüm 1.1.0

Sürüm 1.1.0

15 Haziran 2022

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

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

1.0.0'dan sonraki önemli değişiklikler

Sürüm 1.1.0-rc03

1 Haziran 2022

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

Hata Düzeltmeleri

  • Hedef paketi her karşılaştırma yinelemesinde yeniden yüklemekten kaçının. ( aosp/2093027, b/231976084)

  • pressHome() üzerinden 300ms gecikmeyi kaldırın. (aosp/2086030, b/231322975)

  • Gelişmiş seçeneklerde kullanılan Kabuk komutlarını optimize ederek Makrobenchmark yineleme hızını iyileştirin. (aosp/2086023, b/231323582)

  • Makrobenchmarks ile Temel Profiller oluştururken Yönetilen Gradle Cihazları için destek. (aosp/2062228, b/228926421)

Sürüm 1.1.0-rc02

11 Mayıs 2022

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

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

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

  • Uygulama derlemesinin, makro karşılaştırmalar arasında doğru şekilde sıfırlanmamasına ve rootlanmamış derlemelerde hiç sıfırlanmamasına neden olan sorun düzeltildi. Bu, birden fazla test çalıştırmanın, CompilationMode ürününün ölçümler üzerinde çok az etkisi olması veya hiç etkisi olmamasıyla sonuçlanacağı çoğu durumu düzeltir. Bu sorunu geçici olarak çözmek için hedef uygulama, her test yöntemini tam olarak yeniden yüklüyor ve böylece her makro karşılaştırma arasındaki uygulama verileri temizlenecek. (I31c74, b/230665435)

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

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

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

    Veya Gradle komut satırından:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
    
  • androidx.benchmark.enabledRules enstrümantasyon argümanı eklenerek, makro karşılaştırmalar ile referans profil oluşturma testleri arasında bir modülün paylaşılması mümkün hale getirildi. Yalnızca bir test türü çalıştırmak için (ör. bir emülatörde BaselineProfiles oluştururken) "Makrobenchmark" veya "BaselineProfile" testini geçin. (I756b7, b/230371561)

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

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

    Veya Gradle komut satırından:

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

Sürüm 1.1.0-rc01

20 Nisan 2022

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

Hata Düzeltmeleri

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

Sürüm 1.1.0-beta06

6 Nisan 2022

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

Hata Düzeltmeleri

  • API 21/22'deki iz kaydı kilitlenmesi düzeltildi (If7fd6, b/227509388)
  • Başlangıç makro karşılaştırmalarındaki "Hiçbir metrik okunamadı" istisnasını düzeltmek için etkinlik başlatma tamamlanma algılamasını revize edin. (Ia517c)
  • CompilationMode.None() kullanıldığında Makrobenchmarks için başlangıç metriklerini düzeltin. Bu değişiklikten önce CompilationMode.Partial(), Compilation.None() adlı cihaza göre daha yavaş görünüyordu. (611ac9).

Sürüm 1.1.0-beta05

23 Mart 2022

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

Hata Düzeltmeleri

Sürüm 1.1.0-beta04

23 Şubat 2022

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

Hata Düzeltmeleri

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

  • Q (API 29) ve sonraki sürümlerde termal kısıtlama algılama için PowerManager kullanın. Bu sayede, termal kısıtlama algılamada yanlış pozitif durum sıklığı önemli ölçüde azaltılır (90 saniyelik bekleme süresinden sonra karşılaştırma denemesi) ve kullanıcı derlemelerindeki karşılaştırmalar önemli ölçüde hızlanır. Ayrıca saatler kilitli olduğunda bile gaz gazı algılama özelliği sağlar (cihazın fiziksel ortamına göre çok yukarıda kilitlenmişlerse). (I9c027, b/217497678, b/131755853)

  • Denetlemeyi basitleştirmek için Simpleperf örneklenmiş profil çıkarmayı yalnızca measureRepeated iş parçacığına filtreleyin (Ic3e12, b/217501939)

  • Çok işlemli uygulamalardaki adlandırılmış kullanıcı arayüzü alt işlemlerinden elde edilen metrikler için destek (Ice6c0, b/215988434)

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

  • Compilation.None() kullanılırken Profil Yükleme işlemini atla. Ayrıca, uygulama androidx.profileinstaller'in eski bir sürümünü ve Android Gradle Eklentisini kullandığında uyarı bildiriminde bulunun. aosp/1977029

Sürüm 1.1.0-beta03

9 Şubat 2022

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

API Değişiklikleri

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

    Örneğin,

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

Hata Düzeltmeleri

  • Studio çıkışına bağlantı verildiğinde, mikrobench profil aracı izlerinin sonraki çalıştırmalarda güncellenmemesi sorunu düzeltildi (I5ae4d, b/214917025)
  • API 23'te (Ice380) derleme kabuk komutlarını engelle
  • Bunların zaman damgası değil süre olduğunu ve önekleri eşleştireceğini netleştirmek için FrameCpuTime -> FrameDurationCpu, FrameUiTime -> FrameDurationUi yeniden adlandırıldı. (I0eba3, b/216337830)

Sürüm 1.1.0-beta02

26 Ocak 2022

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

Hata Düzeltmeleri

  • Mikro karşılaştırma Yığın Örnekleme / Yöntem İzleme Profil sonuçları artık diğer profil oluşturma çıkışlarına benzer şekilde Studio çıkışına bağlanmıştır ve ayırma metriğini engellemez. (Idcb65, b/214440748, b/214253245)
  • BaselineProfileRule, oluşturulan BaselineProfile metin dosyasını almak için artık logcat'te ve Studio çıkışında adb pull komutunu yazdırıyor. (f08811)

Sürüm 1.1.0-beta01

12 Ocak 2022

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

Hata Düzeltmeleri

  • Profil oluşturucu bağımsız değişkenini etkinleştirmenin yoksayılmasını düzeltir. (I37373, b/210619998)
  • Kullanımdan kaldırılan CompliationModes (I98186, b/213467659) kaldırıldı
  • Daha net olması için CompilationMode.Partial olan referans profil bağımsız değişkeni değeri enum olarak değiştirildi. (Id67ea)

Sürüm 1.1.0-alfa13

15 Aralık 2021

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

API Değişiklikleri

  • Android Q'da (API 29+) mikrobench çıkışına düşük genel yük Sistem İzleme ekleyin. Bunun, sonuçları etkilememesi için şu anda özel izlemeyi (android.os.Trace veya androidx.tracing Jetpack API'leri üzerinden) yakalamadığını unutmayın. Bu izleme, özellikle karşılaştırma dışındaki kaynaklardan gelen kararsızlıkların teşhis edilmesinde faydalı olmalıdır. (I298be, b/205636583, b/145598917)
  • CompilationModes konusunu üç sınıfa ayırın: Tam, Hiçbiri, Kısmi. Önceden, 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ılmışlardı. Bu, platform sürümlerindeki dengeleri, olası kombinasyonları ve davranışları daha net hale getirir. (I3d7bf, b/207132597)
  • Artık kurulum ve ölçümler her zaman çiftler halinde sırayla yapılıyor. Artık paket adını ve yinelemeyi sorgulayabilirsiniz (ancak bazı ısınma senaryolarında yineleme null olabilir). (Id3b68, b/208357448, b/208369635)

Hata Düzeltmeleri

  • Yanlış bir şekilde None olarak değerlendirilen CompilationMode.Speed düzeltildi (I01137)

Sürüm 1.1.0-alfa12

17 Kasım 2021

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

Yeni Özellikler

  • İze dayalı özel zamanlama ölçümleri için deneysel TraceSectionMetric özelliğini ekleyin. (I99db1, b/204572664)

Hata Düzeltmeleri

  • Kullanıcı arayüzünün test edilebildiğinden emin olmak için her iterasyonda cihazı uyandırın. Kilit ekranının devre dışı bırakılması gerekir. (Ibfa28, b/180963442)
  • Emülatörlerde ve rootlanmamış cihazlarda StackSampling profil oluşturma modunda birden fazla kilitlenmeyi düzeltir (Icdbda, b/202719335)
  • Her iterasyonun sonunda 0, 5 saniyelik uyku modu kaldırıldı.Bu değişiklikle birlikte bazı metriklerin eksik olduğunu görürseniz lütfen hata bildiriminde bulunun. (Iff6aa)
  • Veri kaybı olasılığını ve izlemeden kaynaklanan bellek ek yükünü azaltın (Id2544, b/199324831, b/204448861)
  • Kompakt planlanmış depolama biçimine geçerek iz boyutunu yaklaşık% 40 azaltın. (Id5fb6, b/199324831)
  • Başlangıç metriklerinin uygulamaları, her zaman oluşturma iş parçacığının sonunda sona erecek şekilde güncellendi. Bu yöntem, platform sürümleri arasında daha tutarlı olacak ve uygulama içi ölçümlerle daha uyumlu olacaktır. (Ic6b55)

Sürüm 1.1.0-alfa11

3 Kasım 2021

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

API Değişiklikleri

  • Makrobenchmark'ın minSdkVersion değeri şu anda 23. (If2655)
  • Uygulamanın kritik kullanıcı yolculuğu için temel profiller oluşturabilecek yeni bir deneme amaçlı BaselineProfileRule ekler. Ayrıntılı dokümanlar aşağıda verilmiştir. (İbbefa, b/203692160)
  • Yöntemin tamamlanması/çözünürlüğünde belirsizliğe neden olduğu için Java çağrılarını yapan kişi için eklenen measureTekrared arayüz varyantını kaldırır. Java çağrılarını yapan kullanıcıların yine measurementRepeated öğesinden Unit.Instance değerini döndürmesi gerekir. Bu bir sorun ise lütfen hata bildiriminde bulunun. Bunu gelecekteki bir sürümde tekrar gözden geçirebiliriz. (Ifb23e, b/204331495)

Sürüm 1.1.0-alfa10

27 Ekim 2021

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

API Değişiklikleri

  • Backport StartupTimingMetric'i API 23'e geri döndüreceksiniz. Ayrıca bu yeni uygulama, ilgili içerik oluşturulana kadar beklemek için reportFullyDrawn() işlevini daha iyi işler. (If3ac9, b/183129298)
  • Java arayanları için birden fazla MakrobenchmarkScope yöntemine JvmOverloads eklendi. (I644fe, b/184546459)
  • Java dilinde deyimsel kullanım için Consumer<MacrobenchmarkScope> kullanan alternatif MakrobenchmarkRule.measureRepeated işlevi sağlayın. (If74ab, b/184546459)

Hata Düzeltmeleri

  • Yeterince erken başlamayan ve metrik verilerinin eksik olduğu izler için düzeltme uygulandı. Bunun, kitaplığın kendisinden kaynaklanan "Karşılaştırma sırasında hiçbir metrik okunamadı" istisnalarını düzeltmesi beklenir. (I6dfcb, b/193827052, b/200302931)
  • FrameNegatifSlack, anlamını (karenin zaman bütçesini ne kadar aştığını) netleştirmek için FrameOverrun olarak yeniden adlandırıldı. (I6c2aa, b/203008701)

Sürüm 1.1.0-alpha09

13 Ekim 2021

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

Hata Düzeltmeleri

  • API 31/S+ sürümünde, Kernel sayfa önbelleğinin kök olmadan bırakılması desteği (StartupMode.COLD başlatmaların doğruluğunu artırır). (Iecfdb, b/200160030)

Sürüm 1.1.0-alpha08

29 Eylül 2021

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

API Değişiklikleri

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

Sürüm 1.1.0-alpha07

1 Eylül 2021

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

API Değişiklikleri

  • Gelecekte desteklenmesi amaçlanan en düşük API düzeyini yansıtmak için minimum API 21'e yükseltildi. Şu anda 29 (I440d6, b/183129298) olmak üzere gerekli API'lar aracılığıyla aktarılmaya devam eden mevcut minimum API desteği

Hata Düzeltmeleri

  • Referans profilleri kullanan uygulamaların CompilationMode.BaselineProfile kullanarak MakroKarşılaştırmaları çalıştırmasını kolaylaştırmak için ProfileInstaller sorunlarını giderir. (I42657, b/196074999) NOT: androidx.profileinstaller:profileinstaller:1.1.0-alpha04 veya sonraki bir sürüme de güncellenmesi gerekir.
  • StartupMode.COLD + CompilationMode.None karşılaştırmaları artık daha istikrarlı. (I770cd, b/196074999)

Sürüm 1.1.0-alpha06

18 Ağustos 2021

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

API Değişiklikleri

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

Hata Düzeltmeleri

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

Bilinen Sorunlar

  • CompilationMode.BaselineProfile ile ilgili çalışmalar devam ediyor. Bir profilin şimdilik 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 yayınlandı. Sürüm 1.1.0-alpha05 bu kayıtları içerir.

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

API Değişiklikleri

  • Başlatmayı am start aracılığıyla çağırmak için startActivityAnd Wait, her ölçüm yinelemesinin süresini yaklaşık 5 saniye azaltarak, amaç ayrıştırılabilir öğeleri artık desteklemeyecek şekilde değiştirilmiştir. (I5a6f5, b/192009149

Hata Düzeltmeleri

  • Termal kısıtlama algılamanın agresifliğini azaltın ve sık sık algılanırsa referans değeri hesaplayın. (I7327b)
  • FrameTimingMetric'i Android S beta'da çalışacak şekilde düzeltiyor (Ib60cc, b/193260119)
  • CompilationMode.BaselineProfile özelliğini daha iyi desteklemek amacıyla, hedef uygulamayı zorla durdurulmuş durumdan çıkarmak için bir EmptyActivity kullanın. (Id7cac, b/192084204)
  • İzleme dosyası uzantısı, platform standardıyla eşleşmesi için .perfetto-trace olarak değiştirildi. (I4c236, b/174663039)
  • StartupTimingMetric artık uygulamanızın oluşturulması tamamlanana kadar geçen süreyi ölçmek için "fullDrawnMs" metriğini üretiyor. Uygulamanız için bu metriği tanımlamak üzere, ilk içeriğiniz hazır olduğunda (ör. ilk liste öğeleriniz DB veya ağdan yüklendiğinde) Activity.reportFullyDrawn öğesini ç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 (startActivityAnd Wait, reportFullyDrawn için beklemez). (If1141, b/179176560)
  • Ui meta verilerini izlere ekleme maliyetini 50 ms'den fazla azaltın (Ic8390, b/193923003)
  • İzleme durdurulurken yoklama sıklığı önemli ölçüde arttı. Bu durum, örneğin başlangıç karşılaştırma çalışma zamanını %30'un üzerinde azaltabilir (Idfbc1, b/193723768)

Sürüm 1.1.0-alpha03

16 Haziran 2021

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

Yeni Özellikler

Hata Düzeltmeleri

  • Karşılaştırma hatalarının engellenmesi için örnek Gradle kodu, .gradle.kts kullanıcılarını da destekleyen bir söz dizimine sahip, kullanımdan kaldırılmamış 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 getiriyor: Makrobenchmark. macrobenchmark, CPU döngülerini ölçmenize olanak tanıyan karşılaştırmanın yanı sıra başlatma ve kaydırma gibi tüm uygulama etkileşimlerini ölçmenize ve izleri yakalamanıza olanak tanır. Daha fazla bilgi için kitaplık dokümanlarına bakın.

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

Yeni Özellikler

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

  • Başlatma, kaydırma/animasyon performansı metriklerini uygulamanızdan yerel olarak veya CI içinde kaydedin
  • Android Studio içinden izleri yakalayın ve denetleyin

Hata Düzeltmeleri

  • Android 12'deki çıkış diziniyle ilgili geçici kabuk izinleri sorunu (Not: Etkilenen cihazlarda çıkış dosyaları yakalamaya devam etmek için Android Gradle Eklentisi'nin 7.0.0 canary ve Android Studio'nun Arctic Fox'a (2020.3.1) güncellenmesi gerekebilir. (Icb039)
  • Comparison Plugin'de yapılandırmayı önbelleğe alma desteği (6be1c1, b/159804788)
  • Basitleştirilmiş dosya çıkışı: requestLegacyExternalStorage=true gerektirmeyen bir dizinde varsayılan olarak etkindir (8b5a4d, b/172376362)
  • Mevcut olmayan platform sürümlerinde JIT iş parçacığının bulunamamasıyla ilgili kitaplık yazdırma logcat uyarılarını düzeltir. (I9cc63, b/161847393)
  • Okuma cihazı maksimum sıklığı için düzeltme uygulandı. (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ı. Sürüm 1.1.0-alpha01 bu kayıtları içerir.

1.1'deki Yeni Özellikler

  • Ayırma Metriği - Karşılaştırmalar artık, hazırlık ve zamanlamadan sonra ek bir aşamada çalışarak ayırma sayılarını yakalıyor. Ayırmalar, platformun eski sürümlerinde performans sorunlarına neden olabilir (O'da 140 ns, M'de 8ns'e karşılık gelmektedir. Saatler kilitli olan Nexus5X'te ölçülmüştür). Bu metrik, Android Studio konsolu çıkışının yanı sıra
  • Profil oluşturma desteği: Kodunuzun neden yavaş çalışıyor olabileceğini incelemek için artık karşılaştırma çalıştırması için profil oluşturma verilerini yakalayabilirsiniz. Karşılaştırma, ART'tan yöntem izlemeyi veya yöntem örneklemeyi destekler. Bu dosyalar, Android Studio'daki Dosya > Aç seçeneği kullanılarak Profiler ile incelenebilir.
  • Comparison Gradle eklentisi artık daha basit kurulum için varsayılanlar sağlıyor:
    • testBuildType, kod kapsamının yerleşik olduğu bağımlılıkları kullanmaktan kaçınmak için varsayılan olarak kullanıma sunulacak şekilde ayarlanmıştır. buildType sürümü, varsayılan buildType olarak da yapılandırılmıştır. Bu sayede, Android Studio bir projeyi ilk kez açarken otomatik olarak doğru derleme varyantını seçebilir. (b/138808399)
    • signingConfig.debug, varsayılan imzalama yapılandırması olarak kullanılır (b/153583269)

** Hata Düzeltmeleri **

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

Bilinen Sorunlar

  • Komut satırı ve Karşılaştırma'nın 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 giderebilirsiniz.
  • Karşılaştırma raporu, "android" veya "download" ile biten bir applicationId'ye sahip uygulamanın yüklü olduğu cihazlardan rapor alamaz (büyük/küçük harfe duyarlı değildir). Bu sorunla karşılaşan kullanıcıların Android Gradle Eklentisi'ni 4.2-alpha01 veya sonraki bir sürüme yükseltmeleri gerekir.

Sürüm 1.0.0

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

20 Kasım 2019

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

1.0.0'ın temel özellikleri

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

Bu çözüm, derleme ve çalışma zamanı yapılandırması sorunlarını önler, ö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 regresyonları önlemek için karşılaştırmaları doğrudan Android Studio'da veya Sürekli Entegrasyon'da çalıştırın.

Başlıca özellikler şunlardır:

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

Sürüm 1.0.0-rc01

23 Ekim 2019

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

Yeni özellikler

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

Hata düzeltmeleri

  • JIT'in önceliklendirme nedeniyle hazırlıktan önce tamamlanmaması sorunu düzeltildi (b/140773023)
  • Android Gradle Plugin 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ü bu kayıtları içerir.

Yeni özellikler

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

Hata düzeltmeleri

  • androidx.annotation:android-experimental-lint bağımlılığı eklendi. Böylece, Kotlin arayanları için Kotlin deneysel ek açıklaması tarafından sağlanana benzer şekilde, deneysel API kullanılmadığında Java kodunun doğru şekilde lint hataları üretmesi sağlandı.
  • Artık Android Gradle Plugin 3.6'da çıkış için additionalTestOutputDir araçları bağımsız değişkeninin kullanımını doğru bir şekilde algılayarak AGP'nin veri kopyasını ne zaman işleyeceğini biliyor.
  • -1 öğesini doğru şekilde yazdırmak için JSON'daki algılanmayan saat frekansı düzeltildi (b/141945670).

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ı. Sürüm 1.0.0-alpha06 bu kayıtları içerir.

Yeni özellikler

  • Test çalıştırıcı için eski paketin yanlış kullanılıp kullanılmadığına dair bir kontrol eklendi. Bu sayede artık daha faydalı bir hata mesajı sağlandı.

API değişiklikleri

  • ExperimentalAnnotationReport deneysel ek açıklaması artık doğru şekilde herkese açık. Deneysel BenchmarkState#report API'nin kullanımı için artık bu ek açıklama gerekir

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ümdeki kaydetmeleri burada bulabilirsiniz.

API değişiklikleri

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

Hata düzeltmeleri

  • cut veya expr kabuk yardımcı programları eksik olan cihazlarda başarısız olan saat kilidi komut dosyası için düzeltme yapıldı.
  • ./gradlew lockClocks göreviyle ilgili, su yardımcı programının -c işaretini desteklemeyen eski bir sürümüne sahip rootlanmış cihazlarda takılı kalması sorunu giderildi.

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ümdeki kaydetmeleri burada bulabilirsiniz.

Karşılaştırma kitaplığının Gradle olmadan hem farklı derleme sistemleriyle (ör. Bazel veya Buck) hem de CI'da çalışırken nasıl kullanılacağına dair yeni dokümanlar da eklendi. Daha fazla bilgi için Gradle olmadan karşılaştırmalar oluşturma ve Sürekli Entegrasyon'da karşılaştırmaları çalıştırma bölümlerine bakın.

Yeni özellikler

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

API değişiklikleri

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

Hata düzeltmeleri

  • Q cihazlarda harici depolama alanına yazarken oluşan hatalar, sorunun nasıl çözüleceğine ilişkin önerilerle birlikte daha açıklayıcı mesajlar sağlar
  • Ekranlar, karşılaştırma çalıştırmaları sırasında otomatik olarak açılır, ekran kapalıyken hata verir

Harici katkılar

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

Sürüm 1.0.0-alpha03

2 Temmuz 2019

androidx.benchmark:benchmark:1.0.0-alpha03 ve androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03 yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.

Yeni özellikler

  • Tam JSON raporunda, karşılaştırmaya göre termal kısıtlamadan dolayı uyku süresini açığa çıkarın

Hata düzeltmeleri

  • Android eklentileri ve Android engellemesinden sonra Gradle eklentisinin uygulanmasına gerek kalmaz
  • Kapsamlı depolamayı kullanan Android 10 cihazlarda karşılaştırma raporları için destek eklendi

Sürüm 1.0.0-alpha02

6 Haziran 2019

androidx.benchmark:1.0.0-alpha02 ve androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02 yayınlandı. Bu sürümdeki taahhütleri 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 bir kez kararlı (çok nadir istisnalar dışında), son sürümde ise yalnızca küçük sürümlerdeki eklemeler ve ana sürümlerdeki değişiklikler/kaldırmalar olacak şekilde sabittir.

API değişiklikleri

  • JSON şeması gözden geçirildi. JSON şemasında yapılacak diğer değişiklikler muhtemelen eklemelerle sınırlı olacaktır:

    • Sonuç nesnesi yapısı, gelecekte ek metrik gruplarını destekleyecek şekilde yeniden düzenlendi (b/132713021)
    • Üst düzey nesneye cihaz, derleme bilgisi ve saatlerin kilitli olup olmadığı gibi test çalıştırma bağlam bilgileri eklendi (b/132711920)
    • Zaman metriği adlarının adlarında artık "ns" ifadesi bulunmaktadır (b/132714527)
    • Bildirilen metrik başına eklenen ek istatistikler (maksimum, ortanca değer, minimum) ve kaldırılan basitleştirilmiş "nano" özet istatistiği (b/132713851)
  • XML çıkışı kaldırıldı (b/132714414)

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

Hata düzeltmeleri

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

Sürüm 1.0.0-alpha01

7 Mayıs 2019

androidx.benchmark:benchmark:1.0.0-alpha01 yayınlandı. Bu sürümde yer alan kaydetme işlemlerine buradan ulaşabilirsiniz.