Karşılaştırma

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

Bağımlılıkları bildirme

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

Makrobenchmark

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

Modern

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

Kotlin

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

Mikro Karşılaştırma

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

Modern

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

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

Kotlin

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

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

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

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

Modern

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

Kotlin

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

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

Modern

plugins {
  id 'androidx.benchmark'
}

Kotlin

plugins {
    id("androidx.benchmark")
}

Geri bildirim

Geri bildiriminiz Jetpack'i iyileştirmemize yardımcı olacaktır. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz varsa bize bildirin. Yeni bir kitaplık oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oy ekleyebilirsiniz.

Yeni sayı oluştur

Daha fazla bilgi için Sorun İzleyici dokümanlarına bakın.

Sürüm 1.3

Sürüm 1.3.0-beta02

10 Temmuz 2024

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

Hata Düzeltmeleri

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

Sürüm 1.3.0-beta01

12 Haziran 2024

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

API Değişiklikleri

  • Tutarlılık için MethodTracing.affectsMeasurementOnThisDevice, AFFECTS_MEASUREMENT_ON_THIS_DEVICE olarak yeniden adlandırıldı. (I1bdfa)
  • Mikro karşılaştırmalarda geçersiz kodların ortadan kaldırılmasını önlemek için deneysel BlackHole.consume() API'si eklendi. (If6812, b/286091643)
  • Mikrobenchmark, yöntem izlemenin ölçümleri etkilemesini önlemek için artık doğru şekilde hata verecek. Bu durum, yöntem izlemenin zorlandığı (araç bağımsız değişkenleri veya MicrobenchmarkConfig aracılığıyla) belirli cihazlarda ve yöntem izlemeden sonra ölçüm yapılmaya çalışıldığında ortaya çıkar. Etkilenen cihazlar bu parazitten etkilenen API 26-30 veya belirli ART ana hat modülü sürümlerini çalıştırıyordur ve çalışma zamanında ProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice aracılığıyla tespit edilebilir. (Iafb92, b/303660864)

Hata Düzeltmeleri

  • 9.0.0-alfa01'e yükseltilmiş maks. agp sürümü önerilir. (I5bbb0)
  • Karşılaştırma bağlamına derleme modu eklendi (If5612, b/325512900)
  • AIDL izlemeyi varsayılan olarak etkinleştir (API 28 gerektirir) (Ia0af2, b/341852305)
  • Karşılaştırma bağlamında, JSON çıkışına ek bilgiler eklendi:
    • context.artMainlineVersion - Resim ana hat modülünün tam sayı sürümü (cihazda mevcutsa -1)
    • context.build.id - Eşittir android.os.Build.ID
    • context.build.version.codename - Eşittir android.os.Build.VERSION.CODENAME
    • context.build.version.abbreviatedCodename - yayın öncesi kod adının ilk harfine karşılık gelir (sürüm derlemelerinde bile) (Ie5020)
  • androidx.benchmark.profiling.sampleDurationSeconds (Ib1d53) şartlarına uygun şekilde StackSampling hatasını düzeltir
  • Makro->yaygın bağımlılığı api() olarak değiştirin.Böylece kullanımı daha kolay olur (ör. PerfettoTrace ve PerfettoConfig). (Icdae3, b/341851833)
  • mergeArtProfile ve mergeStartupProfile görevlerinin her zaman temel profil oluşturmak için beklediğinden emin olun. (I623d6, b/343086054)
  • Varyantın etkinleştirilip etkinleştirilmeyeceğine karar verirken varyant etkinleştirme durumunu dikkate alın. (I5d19e, b/343249144)
  • Perfetto iz işlemcisi için varsayılan başlatma zaman aşımı artırıldı. (I87e8c, b/329145808)

Sürüm 1.3.0-alpha05

14 Mayıs 2024

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

Hata Düzeltmeleri

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

Sürüm 1.3.0-alpha04

1 Mayıs 2024

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

API Değişiklikleri

  • Tamamen özelleştirilmiş Perfetto iz kaydı için özel bir PerfettoConfig alan deneysel MacrobenchmarkRule#measureRepeated varyantı eklendi. Yanlış yapılandırılmış yapılandırmaların, yerleşik Metrik sınıflarının başarısız olmasına yol açabileceğini unutmayın. (Idfd3d, b/309841164, b/304038384)
  • PowerMetric.deviceSupportsPowerEnergy öğesinin adını PowerMetric.deviceSupportsHighPrecisionTracking olarak değiştirerek daha anlaşılır hale getirin (I5b82f)
  • Cihazın güç ölçümü özelliğine göre karşılaştırmaların değiştirilmesini veya atlanmasını sağlamak için PowerMetric.deviceBatteryHasMinimumCharge() ve PowerMetric.deviceSupportsPowerEnergy() eklendi. (I6a591, b/322121218)

Hata Düzeltmeleri

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

Sürüm 1.3.0-alpha03

17 Nisan 2024

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

Yeni Özellikler

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

API Değişiklikleri

  • İfadeler (I71f7b) olduğunda, olası tüm kapsamı bozmadan gelecekteki genişletmeyi etkinleştirmek için TraceSectionMetric.Mode, mühürlü sınıf olarak değiştirildi (I71f7b)
  • TraceSectionMetric.Mode.Average ve .Count eklendi ve bağımsız değişkenler yeniden sıralandı. Böylece, daha yaygın olan bağımsız değişken (mod) bağımsız değişken listesinde daha önce yer alıyordu. Böylece parametre adlarının belirtilmesi ihtiyacı azaltıldı. (Ibf0b0, b/315830077, b/322167531)
  • Metric.getResult, döndürme türüyle eşleşecek şekilde getMeasurements olarak yeniden adlandırıldı (I42595)

Hata Düzeltmeleri

  • automaticGenerationDuringBuild kapalıyken karşılaştırmaların oluşturulan referans profilleri kullanmasını sağlamak için sorunları giderin (Ic144f, b/333024280)
  • nonMinified veya karşılaştırma derleme türünü özelleştirirken referans profil oluşturma ve karşılaştırmayı etkinleştirmek için BaselineProfile gradle eklentisi özelliği geçersiz kılma sorunlarını düzeltin. (Ib8f05, b/324837887)
  • Yavaş cihazlarda bile yöntem izlerinin tam olarak yakalanması ve geçerli olması için makro karşılaştırmada yöntem izlerinin boşaltılması düzeltildi. (I6349a, b/329904950)
  • İz başlangıcında eksik veri riskini azaltmak için Perfetto iz kaydında engellemeyi başlatmayı etkinleştirin. Yalnızca API 33 ve sonraki sürümlerde desteklenir. (Ie6e41, b/310760059)
  • Karşılaştırma modüllerinde Android Test Orchestrator kullanıldığında bir uyarı eklendi. Bu durum, modül başına çıkış JSON dosyalarının tekrar tekrar üzerine yazılmasına neden olacaktır. (Ia1af6, b/286899049)
  • Cihaz yerel ayarı (I3e921, b/313496656) yoksayılarak Studio çıktısında tutarlılık için binlik basamak ayırıcıları kullanın
  • TraceSectionMetric artık Trace.{begin|end}AsyncSection kullanılarak oluşturulan dilimleri destekliyor. (I91b32, b/300434906)
  • Tüm başlatma algılama hatalarına log.w / istisna etiketleri eklendi. Bu, mevcut davranışı değiştirmez (dolayısıyla bazı hatalar ortaya çıkar, bazılarıysa başlatmayı sessiz bir şekilde algılayamaz). Yalnızca daha anlaşılır hale gelir. Genellikle Log.w() başlangıç metriklerini raporlayıp raporlamayanlar, çerçeve dışı etkinliklerin eksik olduğu etkinliklerdir. Başlatma algılandığında, kare zamanlama bilgileri (UI/RT dilimlerinden) hariç olmak üzere istisnalar dikkate alınır. (Id240f, b/329145809)
  • Paraziti azaltmak için Macrobenchmark çalıştırmadan önce arka plan dexopt işlerini iptal edin. (I989ed)
  • Üretilen kare sayısının değişmesi (yeni animasyonlar eklendi, geçersiz kılma sorunları düzeltildi) nedeniyle ölçümlerin değiştiği senaryoların keşfedilmesine yardımcı olmak için FrameTimingMetric ürününe frameCount ölçümü eklendi. (I1e5aa)
  • Dokümanlarda sunulduğunda izleme için tercih edilen metriğin frameOverrunMs olduğu ve bunun nedeni netleştirildi. (I18749, b/329478323)

Sürüm 1.3.0-alpha02

20 Mart 2024

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

Yeni Özellikler

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

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

Hata Düzeltmeleri

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

Sürüm 1.3.0-alpha01

21 Şubat 2024

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • Belirtilen yönetilen cihaz olmadığında referans profil gradle eklentisinde iyileştirilmiş hata mesajı (Idea2b, b/313803289)
  • AGP 8.3.0-alpha15 öncesi kitaplık referans profillerinin AAR'ye eklenmesiyle ilgili düzeltme (I1d2af, b/313992099)
  • Oluşturma görevinin sonundaki referans ve başlangıç profili çıkış URL'si düzeltildi (I802e5, b/313976958)
  • java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)] (I8dc7d, b/323601788) sorununu düzeltmeye çalışmak için veri kaynağı zaman aşımları düzenlendi
  • ProfileInstaller 1.3 olmadan uygulamalar karşılaştırılırken geçici çözüm kilitlenmelerine yönelik olarak gölgelendirici bırakma davranışını geçersiz kılmak için iki araç bağımsız değişkeni ekleyin:
    • androidx.benchmark.dropShaders.enable=true/false : Özellikle profil yükleyici 1.3 sürümünü kullanmayan uygulamalar karşılaştırılırken (StartupMode.Cold lansmanlarında yapılanlar da dahil olmak üzere) tüm gölgelendirici atlamalarını atlamak için kullanılabilir.
    • androidx.benchmark.dropShaders.throwOnFailure=true/false : Gölgelendiricileri bırakmaya çalışırken karşılaşılan hataları telafi etmek için kullanılabilir (örneğin, Profileloader 1.3 (I4f573) olmadan uygulamaları karşılaştırırken)
  • Birkaç saniyeden uzun sürmesi bekleniyorsa kullanıcı arayüzü iş parçacıklarında yöntem izlemeyi atlayın ve fırlatma sırasında yöntem izlerini temizleyin. (I6e768)
  • Dosyaları yazarken veya sonradan işleme koyarken net olmayan kilitlenmeleri önlemek için dosya adları 200 karakterden uzun olduğunda silin. (I4a5ab)
  • İzin başındaki ve sonundaki sonlandırılmayan karelerin birlikte eşlenmesine neden olan sorun düzeltildi. Bu durum hatalı şekilde tek bir çok uzun kare olarak rapor ediliyor. (I39353, b/322232828)
  • Kullanıcı derlemelerindeki ART profillerini temizlemek için API 30-33 üzerinde bir paketi yeniden yüklerken API 30+ üzerinde --skip verification kullanın. Bu, bazı cihaz sınıflarında hatalara neden olan Play Protect uyarılarının atlanmasına yardımcı olur. (Ic9e36)
  • Sistem Arayüzü veya Başlatıcı gibi bir sistem uygulaması değilken uygulamaları kapatmak için am force-stop kullanın. (I5e028)
  • Macrobenchmark artık hedef uygulamanın bir ART profilini temizlemesi için 1 second'i bekliyor (daha önce 500 ms bekliyordu). (I85a50, b/316082056)
  • Çerçeveler oluşturulmadığında FrameTimingMetric hatasını iyileştirin ve sorunun teşhis edilmesine yardımcı olmak için metrik ayrıştırma işlemi başarısız olduğunda her zaman iz bağlantısını çıkarın. (I956b9)
  • FrameTimingMetric ürününün, özellikle belirli OEM cihazlarda çerçeve kimliğinin ayrıştırılamamasıyla ilgili kilitlenme düzeltildi. (Ia24bc, b/303823815, b/306235276)
  • FrameMetrics hizmetindeki kontrollerin güvenlik düzeyi gevşetildi ve hata mesajlarına daha fazla ayrıntı eklendi. (Iadede)

Sürüm 1.2

Sürüm 1.2.4

17 Nisan 2024

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

Hata Düzeltmeleri

  • Karşılaştırma varyantlarında ayarlanmayan referans profil srcset sorununu düzeltir. Ayrıca, döngüsel bağımlılığa neden olan kitaplıklardaki automaticGenerationDuringBuild sorununu da düzeltir. (I28ab7, b/333024280)
  • Sistem Arayüzü veya Başlatıcı gibi bir sistem uygulaması değilken uygulamaları kapatmak için am force-stop kullanın. Bu, işlem sonlandırma tamamen başarılı olmaması nedeniyle "$package paketinin baştan başlatmadan önce çalışmaması gerekir!" hatasıyla ilgili StartupMode.COLD karşılaştırmalarının kilitlenmesini düzeltir. (I5e028)

Sürüm 1.2.3

24 Ocak 2024

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

Hata Düzeltmeleri

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

Sürüm 1.2.2

1 Aralık 2023

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

Temel Profiller

Sürüm 1.2.1

15 Kasım 2023

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

Yeni Özellikler

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

Sürüm 1.2.0

18 Ekim 2023

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

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

Temel Profiller

  • Yeni Temel Profil Gradle Eklentisi, referans profilleri yakalamayı ve test ve derleme iş akışınıza dahil etmeyi otomatikleştirir.
  • BaselineProfileRule.collect artık kararlı ve önceki deneysel BaselineProfileRule.collectBaselineProfile API'nin basitleştirilmiş ve basitleştirilmiş bir sürümüdür
    • packageName belirtin ve uygulamanızı kullanın
  • Temel profil oluşturan kitaplıklar için artık kodda (BaselineProfileRule.collect bağımsız değişkeni) veya gradle eklentisinde oluşturulan kuralları filtreleyebilirsiniz
  • Düzeltmeler

Makrobenchmark

  • Derleme
    • Macrobenchmark artık her derleme için derleme durumunu doğru bir şekilde sıfırlıyor. Bunun için Android 14'ten önce APK'nın yeniden yüklenmesi gerekir. Bu nedenle, ölçülen durumun durumunu (kullanıcı girişi gibi) korumak istiyorsanız Android 14 ve sonraki sürümlerde karşılaştırma yapmanızı kesinlikle öneririz.
    • Uygulama derlemesini ayrı olarak kontrol ederek ve CompilationMode.Ignore() ya da araçlar bağımsız değişkeni ile derlemeyi atlayarak da bu sorunu çözebilirsiniz
  • Araç Bağımsız Değişkenleri

    • Doğrulamanın daha hızlı çalışması için (ör. karşılaştırma oluşturulurken veya gönderim öncesi) androidx.benchmark.dryRunMode.enable araç bağımsız değişkeni desteği (zaten mikrobenchmark'ta mevcuttur)
    • androidx.benchmark.profiling.mode=StackSampling ve MethodTracing için destek.
    • Çalışma zamanı filtreleme temel profili ile makrobenchmark kural testlerinin karşılaştırmasına izin vermek için androidx.benchmark.enabledRules eklendi
    • İzleme-perfetto ile izlemeyi etkinleştirmek için androidx.benchmark.perfettoSdkTracing.enable bağımsız değişkeni eklendi (ör. yeniden düzenleme izleme oluştur). StartupMode.COLD ile kullanıldığında, izleme kitaplığı yüklenip uygulama başlatılırken etkinleştirildiğinden zamanlamanın önemli ölçüde etkileneceğini unutmayın.
  • Gereksinimler

    • Macrobenchmark'ta profil yakalama / sıfırlama ve gölgelendirici önbelleği temizlemenin etkinleştirilmesi için hedef uygulamada ProfileInstaller 1.3.0 veya üzeri bir sürüm gerekiyor.
  • Yeni Deneysel Metrik API'leri

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

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

Mikro Karşılaştırma

  • Özellikler
    • Profil oluşturma, diğer metriklerden sonra ayrı bir aşamaya taşındı. Böylece bir test çalıştırmasında hem doğru zamanlama hem de profil oluşturma sonuçları gösterilebilir.
  • Deneysel API'ler
    • Özel metrikleri tanımlamak, izleme ve profil oluşturmayı yapılandırmak için deneysel MicrobenchmarkConfig API'si eklendi. Yöntem izlerini veya izleme noktalarını yakalamak için kullanılabilir (ancak ek yükü izlemeye dikkat edin).
    • BenchmarkState hizmetini BenchmarkRule öğesinden ayrı olarak (JUnit olmadan) kontrol etmek için deneysel API'ler eklendi
    • Perfetto izlerinin, karşılaştırma API'lerinden ayrı olarak özel yapılandırmayla yakalanmasını sağlamak için deneysel PerfettoTrace kaydı eklendi.
  • Düzeltmeler
    • Geçici çözüm, Android Studio karşılaştırma çıktısında baştaki boşluklar eksik.
    • Android Studio karşılaştırma çıktısında uyarıların yazdırılamamasına neden olabilecek sorun düzeltildi.
    • Android 13 (API 33) ve sonraki sürümlerde SampledProfiling kilitlenmesi düzeltildi.
    • IsolationActivity ve Perfetto izlemeyi atlayarak dryRunMode performansı büyük ölçüde iyileştirildi (eski işletim sistemi sürümlerinde 10 kata kadar daha hızlı prova modu).

Sürüm 1.2.0-rc02

6 Ekim 2023

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

Hata Düzeltmeleri

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

Sürüm 1.2.0-rc01

20 Eylül 2023

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

Hata Düzeltmeleri

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

Sürüm 1.2.0-beta05

30 Ağustos 2023

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

Yeni Özellikler

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

Sürüm 1.2.0-beta04

23 Ağustos 2023

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

Yeni Özellikler

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

Hata Düzeltmeleri

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

Sürüm 1.2.0-beta03

9 Ağustos 2023

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • Yapı adı ve diğer referanslarla tutarlılık sağlamak için fullTracing.enable araç bağımsız değişkeni perfettoSdkTracing.enable olarak yeniden adlandırıldı. fullTracing.enable yedek olarak çalışmaya devam edecek. (I7cc00)
  • Karşılaştırma kitaplığının dahili izleme noktaları (mikrobenchmark döngü/faz izleme dahil) artık Studio sistem izleme görüntüleyicide gösterilecek ve Perfetto'da doğru sürecin altına iç içe yerleştirilecektir. (I6b2e7, b/293510459)
  • API 31 ve sonraki sürümlerde makrobenchmark NOT-PROFILEABLE hatası kaldırıldı. Ayrıca, mühendislik/userdebug rootlanmış cihazlarda profil oluşturma kontrolü atlandı. (I2abac, b/291722507)
  • Dex Düzen Optimizasyonları kullanılırken başlangıç profili kuralları da artık temel profil kuralları olarak kabul edilmektedir. (aosp/2684246, b/293889189)

Sürüm 1.2.0-beta02

26 Temmuz 2023

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

API Değişiklikleri

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

Hata Düzeltmeleri

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

Sürüm 1.2.0-beta01

18 Temmuz 2023

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

Hata Düzeltmeleri

  • Studio'daki Karşılaştırma çıktısında bazen engellenen uyarıları ve Studio'da görünmeyen Karşılaştırma çıkışında bulunan boşluklarla ilgili geçici çözümü düzeltme (Ia61d0, b/227205461, b/286306579, b/285912360)
  • FrameTimingMetric ile ilgili yorum düzeltildi. Alt metrik frameDurationCpuMs olarak adlandırılmıştır. (Ib097f, b/288830934).

Sürüm 1.2.0-alpha16

21 Haziran 2023

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • androidx.benchmark.profiling.mode = MethodTracing için Macrobenchmark desteği. (I7ad37, b/285912360)
  • Mikrobenchmark profili oluşturma işlemi ayrı bir aşamaya taşındı. Böylece bu profil, ölçümden sonra yerini almak yerine sırayla gerçekleştirilir. MethodTracing iz bölümleri de artık (varsa) yakalanan Perfetto izine dahil ediliyor. (I9f657, b/285014599)
  • Mode.Sum ile TraceSectionMetric için sayı ölçümü ekleyin. (Ic121a, b/264398606)

Sürüm 1.2.0-alpha15

7 Haziran 2023

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

Yeni Özellikler

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • Çalışma süresinin çoğu olduğundan performansı önemli ölçüde artırmak için dryRunMode ürününde IsolationActivity ve Perfetto izlemeyi devre dışı bırakın. (Ie4f7d)
  • Macrobenchmark'larda androidx.benchmark.profiling.mode=StackSampling ve androidx.benchmark.profiling.sampleFrequency araç testi bağımsız değişkenlerini kullanarak çağrı yığını örnekleme desteği. (I1d13b, b/282188489)
  • Android U (API 34) ve emülatörlerde gölgelendirici bırakılırken oluşan kilitlenmeler düzeltildi. (I031ca, b/274314544)

Sürüm 1.2.0-alpha14

3 Mayıs 2023

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

Hata Düzeltmeleri

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

Sürüm 1.2.0-alpha13

5 Nisan 2023

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

API Değişiklikleri

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

Sürüm 1.2.0-alpha12

22 Mart 2023

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

Yeni Özellikler

  • Yeni referans profil gradle eklentisi alfa sürümünde kullanıma sunulmuştur. Bu eklenti, referans profil oluşturmayı ve geliştirici iş akışını basitleştirmeyi kolaylaştırır.

API Değişiklikleri

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

Sürüm 1.2.0-alpha11

8 Mart 2023

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

Hata Düzeltmeleri

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

Sürüm 1.2.0-alpha10

22 Şubat 2023

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

Yeni Özellikler

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

Hata Düzeltmeleri

  • Derlemenin atlanması nedeniyle artık boş profille kilitlenmemesi için DryRunMode sorununu düzeltin. Bunun yerine, tek bir yineleme çalıştırır ve bir öğenin yakalandığından emin olmak için profili ayıklar. (I2f05d, b/266403227)
  • Eski API düzeylerinde powerstats varlığı kontrol edilirken PowerMetric kilitlenmesi düzeltildi. (5faaf9, b/268253898)

Sürüm 1.2.0-alpha09

11 Ocak 2023

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

Hata Düzeltmeleri

  • Tüm karşılaştırmaları / temel profil oluşturma özelliğini devre dışı bırakmak için None öğesini androidx.benchmark.enabledRules araç bağımsız değişkenine iletme etkinleştirildi. (I3d7fd, b/258671856)
  • Uygulama modüllerinde (ör. kendi kendini ayarlayan olmayan test APK'ları) PerfettoTrace yakalamasını düzeltin (I12cfc)
  • Studio çıkışında sabit temel profil adb pull bağımsız değişkeni sırası (I958d1, b/261781624)
  • Makrobenchmark çalıştırmaya çalışırken Arm emulator api 33 artık doğru şekilde tanınıyor ve uyarıyı doğru şekilde yazdırıyor. (69133b,b/262209591)
  • Macrobenchmark'ta pili olmayan cihazlarda pil seviyesi kontrolünü atla (fe4114, b/232448937)

Sürüm 1.2.0-alpha08

7 Aralık 2022

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

API Değişiklikleri

  • Test davranışını ve performansını incelemek için Perfetto izlerini (Sistem İzlemeleri olarak da bilinir) yakalamak amacıyla, deneme amaçlı yeni PerfettoTrace.record {} ve PerfettoTraceRule API'leri eklendi. (I3ba16)
  • BaselineProfileRule artık paket önekleri listesi yerine bir filtre koşulu kabul ediyor. Bu, teste filtreleme üzerinde tam kontrol sağlar. (I93240)
  • Temel profilin N yineleme için kararlı olmasını bekleyen deneysel bir API BaselineProfileRule.collectStableBaselineProfile ekleyin. (I923f3)
  • BaselineProfileRule kullanarak referans profilleri oluştururken çıkış dosyası adı öneki belirtme özelliğini ekleyin. (I7b59f, b/260318655)

Hata Düzeltmeleri

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

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

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

Sürüm 1.2.0-alpha07

9 Kasım 2022

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • Tüm çıkışları/hataları doğrulayarak tüm dahili kabuk komutlarının güvenliği iyileştirildi. (I5984d, b/255402908, b/253094958)
  • Temel profil adb pull komutunda cihazı belirtin. Böylece, birden fazla cihaz bağlandığında (bir emülatöre kadar) pull komutu kolayca kopyalanabilir (I6ac6c, b/223359380)
  • Makrobenchmark test apk'si, kendi kendini ayarlayan bir şekilde ayarlanmadıysa hata ekleyin. Bu hata, makro karşılaştırmanın hedef uygulama işlemi içinden yapılmasını engeller. makrobench, işlem sırasında uygulamayı derleyemez/kaldıramaz/başlatamaz veya kendi izinlerini kontrol edemez (I4279b)
  • measureRepeated() öğesinde StartupMode.COLD öğesinin, setupBlock tarihinden sonra hedef işlemi sonlandırmamasına yol açan sorun düzeltildi. Artık setupBlock uygulamayla etkileşim kurulduğunda uygulama işlemi çalışmaya devam etmez ve geçersiz bir baştan başlatma ölçümü yapılır. (I8ebb7)

Sürüm 1.2.0-alpha06

24 Ekim 2022

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

API Değişiklikleri

  • BaselineProfileRule, artık Android 13'te (API 33) root erişimi gerektirmez ve artık deneysel değildir. (Ie0a7d, b/250083467, b/253094958)
    • Bu değişiklik, bir uygulamadaki profillerin rootlanmamış cihazlardaki diske nasıl aktarıldığını da düzeltir. Ancak hedef uygulamanın profil yükleyici bağımlılığının güncellenmesi gerekir.
    • Rootlanmamış bir cihazda BaselineProfileRule veya CompilationMode.Partial(warmupIterations) kullanmak için hedef uygulamanızı androidx.profileinstaller.profileinstaller:1.3.0-alpha01 kullanacak şekilde güncellemeniz de gerekir. Bu işlem, profilin derlenebilmesi/çıkarılabilmesi için diske doğru şekilde temizlenmesini sağlar.

Hata Düzeltmeleri

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

Sürüm 1.2.0-alpha05

5 Ekim 2022

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

Hata Düzeltmeleri

  • Yakalanan karşılaştırmalı izler için Studio sistem izleme görüntüleyicideki kare dökümünü düzeltin (I3f3ae, b/239677443)
  • FrameOverrun öğesini 29 yerine API 31 gerektiriyor olarak listelemek için FrameTimingMetric politikasını düzeltin (I716dd, b/220702554)
  • İterasyonu BaselineProfileRule dilinde ayarlayın ve hedef paket yüklü değilse açıkça belirtin (MacrobenchmarkRule için zaten yapıldı). (Ic09a3, b/227991471)

Sürüm 1.2.0-alpha04

21 Eylül 2022

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

Yeni Özellikler

  • Daha hızlı yerel geliştirme ve uygulama otomasyonunu doğrulama (ör. gönderim öncesi) için makrobenchmark'a (zaten mikro düzeyde mevcuttur) dryRunMode.enable araç bağımsız değişkeni için destek ekleyin. Bu ayar, yinelemeleri 1 olarak geçersiz kılar, derlemeyi atlar, tüm yapılandırma hatalarını engeller ve ölçüm .json dosyası çıkışını devre dışı bırakır. (Ib51b4, b/175149857)

    Gradle komut satırında:

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

    Build.gradle dosyasında:

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

Hata Düzeltmeleri

  • StartupTimingMetric, ölçülen Etkinliklerin artık MacrobenchmarkScope.startActivityAndWait() aracılığıyla başlatılmasını gerektirmeyecek şekilde düzeltildi. Bu durum, metriğin bildirimler, Context.startActivity(), uygulama içi etkinliğe dayalı gezinme veya kabuk komutlarından yararlanma gibi başlatmaları algılayabileceği anlamına gelir. (Ia2de6, b/245414235)
  • Çerçeve algılamanın güvenlik düzeyini azaltarak startActivityAndWait ürününün emülatörlerde başlatmanın tamamlanmasını beklemeye çalışırken zaman aşımına uğradığı hata düzeltildi. (Ibe2c6, b/244594339, b/228946895)

Sürüm 1.2.0-alpha03

7 Eylül 2022

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

Yeni Özellikler

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

Hata Düzeltmeleri

Sürüm 1.2.0-alpha02

24 Ağustos 2022

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

API Değişiklikleri

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

Hata Düzeltmeleri

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

Sürüm 1.2.0-alpha01

27 Temmuz 2022

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

Yeni Özellikler

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

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

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

    Alternatif olarak Gradle komut satırından:

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

API Değişiklikleri

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

Hata Düzeltmeleri

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

Sürüm 1.1.1

Sürüm 1.1.1

9 Kasım 2022

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

Hata Düzeltmeleri

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

Sürüm 1.1.0

Sürüm 1.1.0

15 Haziran 2022

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

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

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

Sürüm 1.1.0-rc03

1 Haziran 2022

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

Hata Düzeltmeleri

Sürüm 1.1.0-rc02

11 Mayıs 2022

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

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

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

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

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

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

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

    Alternatif olarak Gradle komut satırından:

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

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

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

    Alternatif olarak Gradle komut satırından:

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

Sürüm 1.1.0-rc01

20 Nisan 2022

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

Hata Düzeltmeleri

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

Sürüm 1.1.0-beta06

6 Nisan 2022

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

Hata Düzeltmeleri

  • API 21/22'de izleme kaydı kilitlenmesini düzeltme (If7fd6, b/227509388)
  • Başlangıç makro karşılaştırmalarındaki "Hiçbir metrik okunamıyor" istisnası sorununu düzeltmek için etkinlik başlatma tamamlama algılamasını gözden geçirin. (Ia517c)
  • CompilationMode.None() kullanıldığında Macrobenchmarks için başlangıç metriklerini düzeltin. Bu değişiklikten önce CompilationMode.Partial(), Compilation.None() değerinden daha yavaş görünüyordu. (611ac9).

Sürüm 1.1.0-beta05

23 Mart 2022

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

Hata Düzeltmeleri

Sürüm 1.1.0-beta04

23 Şubat 2022

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

Hata Düzeltmeleri

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

  • Q (API 29) ve sonraki sürümlerde termal kısıtlama algılaması için PowerManager kullanın. Bu, termal kısıtlama algılamada yanlış pozitiflerin sıklığını önemli ölçüde azaltır (90 saniye bekleme süresinden sonra karşılaştırmayı yeniden deneme) ve kullanıcı derlemelerinde karşılaştırmaları önemli ölçüde hızlandırır. Ayrıca, saatler kilitli olduğunda bile (cihazın fiziksel ortamına göre çok yüksek bir düzeyde kilitlendiğinde) kısıtlama algılaması da sağlar. (I9c027, b/217497678, b/131755853)

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

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

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

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

Sürüm 1.1.0-beta03

9 Şubat 2022

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

API Değişiklikleri

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

    Örneğin,

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

Hata Düzeltmeleri

  • Studio çıkışında (I5ae4d, b/214917025) bağlantı verildiğinde, mikrobench profil aracı izlerinin sonraki çalıştırmalarda güncellenememesi sorunu düzeltildi
  • API 23'te (Ice380) derleme kabuğu komutlarını önleme
  • Bunları zaman damgası yerine süre olarak belirtmek ve ön ekleri eşleştirmek için FrameCpuTime -> FrameDurationCpu, FrameUiTime -> FrameDurationUi olarak yeniden adlandırıldı. (I0eba3, b/216337830)

Sürüm 1.1.0-beta02

26 Ocak 2022

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

Hata Düzeltmeleri

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

Sürüm 1.1.0-beta01

12 Ocak 2022

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

Hata Düzeltmeleri

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

Sürüm 1.1.0-alpha13

15 Aralık 2021

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

API Değişiklikleri

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

Hata Düzeltmeleri

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

Sürüm 1.1.0-alpha12

17 Kasım 2021

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

Yeni Özellikler

  • Özel iz tabanlı zamanlama ölçümleri için deneysel TraceSectionMetric metriklerini ekleyin. (I99db1, b/204572664)

Hata Düzeltmeleri

  • Kullanıcı arayüzünün test edilebilmesi için cihazı her yinelemede uyandırın. Kilit ekranının devre dışı olması gerekir. (Ibfa28, b/180963442)
  • Emülatörlerde ve rootlanmamış cihazlarda (Icdbda, b/202719335) StackSampling profil oluşturma modundaki birden fazla kilitlenmeyi düzeltir
  • Her iterasyonun sonunda 0, 5 saniyelik uyku süresi kaldırıldı.Bu değişiklikle birlikte eksik metrikler görürseniz lütfen hata bildiriminde bulunun. (Iff6aa)
  • Verilerin düşmesi olasılığını ve izleme nedeniyle oluşan bellek ek yükünü azaltın (Id2544, b/199324831, b/204448861)
  • Kompakt planlı depolama biçimine geçerek iz boyutunu yaklaşık% 40 azaltın. (Id5fb6, b/199324831)
  • Başlangıç metriklerinin uygulamaları, daima oluşturma iş parçacığı sonunda sona erecek şekilde güncellendi. Bu yöntem, platform sürümlerinde daha tutarlı olacak ve uygulama içi ölçümlerle daha uyumlu olacaktır. (Ic6b55)

Sürüm 1.1.0-alpha11

3 Kasım 2021

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

API Değişiklikleri

  • Macrobenchmark'ta artık minSdkVersion olarak 23 var. (If2655)
  • Uygulamanın kritik kullanıcı yolculuğu için temel profiller oluşturabilen yeni bir deneysel BaselineProfileRule ekler. İlerleyen zamanlarda ayrıntılı belgeler mevcuttur. (Ibbefa, b/203692160)
  • Yöntemin tamamlanması/çözümlenmesinde belirsizliğe neden olması nedeniyle Java çağrılarını kullananlar için eklenenmeasureDuplicateed arayüz varyantını kaldırır. Java arayanlarının tekrar MeasurementRecipiented'den Unit.Instance döndürmesi gerekir. Bu durum bir rahatsızlık verdiyse lütfen hata bildirin. Gelecek sürümlerde bu konuyu tekrar ziyaret edebiliriz. (Ifb23e, b/204331495)

Sürüm 1.1.0-alpha10

27 Ekim 2021

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

API Değişiklikleri

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

Hata Düzeltmeleri

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

Sürüm 1.1.0-alpha09

13 Ekim 2021

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

Hata Düzeltmeleri

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

Sürüm 1.1.0-alpha08

29 Eylül 2021

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

API Değişiklikleri

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

Sürüm 1.1.0-alpha07

1 Eylül 2021

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

API Değişiklikleri

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

Hata Düzeltmeleri

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

Sürüm 1.1.0-alpha06

18 Ağustos 2021

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

API Değişiklikleri

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

Hata Düzeltmeleri

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

Bilinen Sorunlar

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

Sürüm 1.1.0-alpha05

4 Ağustos 2021

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

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

API Değişiklikleri

  • am start aracılığıyla başlatmayı çağırmak için startActivityAndPending anahtar kelimesi değiştirildi. Bu sayede, amaçlanan ayrıştırıcılar artık desteklenmemek üzere her ölçüm yinelemesinin süresi yaklaşık 5 saniye kısalmıştır. (I5a6f5, b/192009149

Hata Düzeltmeleri

  • Termal gaz algılamanın agresifliğini azaltın ve kısıtlamalar sık sık algılanırsa referans değerini yeniden hesaplayın. (I7327b)
  • FrameTimingMetric'i, Android S beta sürümünde (Ib60cc, b/193260119) çalışacak şekilde düzeltir
  • CompilationMode.BaselineProfile özelliğini daha iyi desteklemek amacıyla hedef uygulamayı zorla durdurulmuş durumdan çıkarmak için EmptyActivity kullanın. (Id7cac, b/192084204)
  • İzleme dosyası uzantısı, platform standardıyla eşleşecek şekilde .perfetto-trace olarak değiştirildi. (I4c236, b/174663039)
  • StartupTimingMetric, uygulamanızın oluşturulması tamamlanana kadar geçen süreyi ölçmek için "fullDrawnMs" metriğini gösteriyor. Uygulamanızda bu metriği tanımlamak için, ilk liste öğeleriniz veritabanından veya ağdan yüklenmesi gibi ilk içeriğiniz hazır olduğunda Activity.reportFullyDrawn işlevini çağırın. (reportFullyDrawn yöntemi, ComponentActivity'de derleme sürümü kontrolü olmadan kullanılabilir). Testinizin metriği yakalayacak kadar uzun süre çalışması gerektiğini unutmayın (startActivityAnd Wait, reportFullyDrawn'ı beklemez). (If1141, b/179176560)
  • İzlere Ui meta verileri ekleme maliyetini 50+ ms kadar azaltın (Ic8390, b/193923003)
  • İzleme durdurulurken yoklama sıklığı önemli ölçüde artırıldı.Bu durum, örneğin başlangıç karşılaştırma çalışma zamanını %30+ oranında azaltabilir (Idfbc1, b/193723768).

Sürüm 1.1.0-alpha03

16 Haziran 2021

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

Yeni Özellikler

Hata Düzeltmeleri

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

    Örnek:

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

Sürüm 1.1.0-alpha02

18 Mayıs 2021

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

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

Yeni Özellikler

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

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

Hata Düzeltmeleri

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

Sürüm 1.1.0-alpha01

10 Haziran 2020

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

1.1'deki Yeni Özellikler

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

** Hata Düzeltmeleri **

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

Bilinen Sorunlar

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

Sürüm 1.0.0

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

20 Kasım 2019

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

1.0.0'ın temel özellikleri

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

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

Önemli özellikler şunlardır:

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

Sürüm 1.0.0-rc01

23 Ekim 2019

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

Yeni özellikler

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

Hata düzeltmeleri

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

Sürüm 1.0.0-beta01

9 Ekim 2019

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

Yeni özellikler

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

Hata düzeltmeleri

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

Sürüm 1.0.0-alpha06

18 Eylül 2019

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

Yeni özellikler

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

API değişiklikleri

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

Sürüm 1.0.0-alpha05

5 Eylül 2019

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

API değişiklikleri

  • BenchmarkState.reportData API deneysel olarak işaretlendi

Hata düzeltmeleri

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

Sürüm 1.0.0-alpha04

7 Ağustos 2019

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

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

Yeni özellikler

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

API değişiklikleri

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

Hata düzeltmeleri

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

Harici katkılar

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

Sürüm 1.0.0-alpha03

2 Temmuz 2019

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

Yeni özellikler

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

Hata düzeltmeleri

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

Sürüm 1.0.0-alpha02

6 Haziran 2019

androidx.benchmark:1.0.0-alpha02 ve androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02 serbest bırakıldı. Bu sürümdeki taahhütleri burada bulabilirsiniz.

JSON şemasını bir API olarak ele aldığımızı unutmayın. Diğer API'lerle aynı kararlılık kısıtlamalarını uygulamayı planlıyoruz: Beta sürümde bir kez kararlı (çok nadir istisnalar mevcuttur) ve yalnızca ana sürümlerdeki küçük sürümlerdeki eklemeler ve değişiklikler/kaldırmalarla birlikte son sürümde düzeltildi.

API değişiklikleri

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

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

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

Hata düzeltmeleri

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

Sürüm 1.0.0-alpha01

7 Mayıs 2019

androidx.benchmark:benchmark:1.0.0-alpha01 yayınlandı. Bu sürümdeki taahhütlere buradan ulaşabilirsiniz.