Makro karşılaştırma enstrümantasyon bağımsız değişkenleri

Kitaplığın davranışını aşağıdaki enstrümasyon bağımsız değişkenleriyle yapılandırın. Bunları Gradle yapılandırmanıza ekleyebilir veya enstrümantasyonu komut satırından çalıştırırken doğrudan uygulayabilirsiniz. Bu bağımsız değişkenleri tüm Android Studio ve komut satırı test çalıştırmaları için ayarlamak üzere testInstrumentationRunnerArguments dosyasına ekleyin:

android {
    defaultConfig {
        // ...
        testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
    }
}

Android Studio'dan karşılaştırmaları çalıştırırken de enstrümantasyon bağımsız değişkenlerini ayarlayabilirsiniz. Bağımsız değişkenleri değiştirmek için aşağıdakileri yapın:

  1. Düzenle'yi, ardından yapılandırmayı tıklayarak çalıştırma yapılandırmasını düzenleyin.
    çalıştırma yapılandırmasını düzenleme
    Şekil 1. Çalıştırma yapılandırmasını düzenleyin.
  2. Diğer Enstrümantasyon bağımsız değişkenleri'ni tıklayarak enstrümantasyon bağımsız değişkenlerini düzenleyin.
    Enstrümantasyon bağımsız değişkenlerini düzenleme
    Şekil 2. Enstrümantasyon bağımsız değişkenlerini düzenleyin.
  3. Ekstrumentayon Ek Parametreleri bölümünde Ekle'yi tıklayarak gerekli enstrümantasyon bağımsız değişkenini ekleyin.
    Gerekli enstrümantasyon bağımsız değişkenini ekleyin
    Şekil 3. Gerekli enstrümantasyon bağımsız değişkenini ekleyin.

Makro karşılaştırmayı komut satırından çalıştırıyorsanız -P android.testInstrumentationRunnerArguments.[name of the argument] değerini kullanın:

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

am instrument komutunu doğrudan çağırıyorsanız (CI test ortamlarında bu durum söz konusu olabilir) bağımsız değişkeni -e ile am instrument'e iletin:

adb shell am instrument -e androidx.benchmark.enabledRules BaselineProfile -w com.example.macrobenchmark/androidx.test.runner.AndroidJUnitRunner

CI'de karşılaştırmaları yapılandırma hakkında daha fazla bilgi için CI'de karşılaştırma başlıklı makaleyi inceleyin.

androidx.benchmark.compilation.enabled

Karşılaştırmanın her iterasyonu arasında derlemeyi devre dışı bırakmanıza olanak tanır. Varsayılan olarak hedef uygulama, measureRepeated'e iletilen CompilationMode'a uymak için her karşılaştırma arasında yeniden yüklenir ve yeniden derlenir. Bu seçeneği devre dışı bırakarak, örneğin test paketini çalıştırmadan önce hedef uygulamayı bir kez tamamen derleyip tüm karşılaştırmaları bu tamamen derlenmiş hedefe göre çalıştırmak isterseniz hem yeniden yükleme hem de derlemeyi atlayabilirsiniz.

  • Bağımsız değişken türü: boole
  • Varsayılan olarak: true

androidx.benchmark.dryRunMode.enable

Düzgün çalıştıklarını doğrulamak için karşılaştırmaları tek bir döngüde çalıştırmanıza olanak tanır. Doğrulama kapsamında normal testlerle birlikte kullanabilirsiniz.

  • Bağımsız değişken türü: boole
  • Varsayılan olarak: false

androidx.benchmark.enabledRules

Yalnızca bir test türüne (Referans Profil oluşturma veya Makro Karşılaştırma testi) filtreleme çalıştırmasına izin verir. Virgülle ayrılmış listeler de desteklenir.

  • Bağımsız değişken türü: dize
  • Mevcut seçenekler:
    • Macrobenchmark
    • BaselineProfile
  • Varsayılan olarak: Belirtilmemiş

androidx.benchmark.junit4.SideEffectRunListener

Karşılaştırma çalışırken alakasız arka plan çalışmaları yürütülürse tutarsız karşılaştırma sonuçları alabilirsiniz.

Karşılaştırma sırasında arka plan çalışmasını devre dışı bırakmak için listenerinstrumentation bağımsız değişkeni türünü androidx.benchmark.junit4.SideEffectRunListener olarak ayarlayın.

  • Bağımsız değişken türü: dize
  • Mevcut seçenekler:
    • androidx.benchmark.junit4.SideEffectRunListener
  • Varsayılan olarak: belirtilmemiş

androidx.benchmark.fullTracing.enable

Jetpack Compose kompozisyon izleme gibi androidx.tracing.perfetto izleme noktalarını etkinleştirir.

Karşılaştırmalardan bileşim izlemeyi yakalayabilmek için projenizi ayarlamanız gerekir. Daha fazla bilgi için Jetpack Macrobenchmark ile izleme yapma başlıklı makaleyi inceleyin.

  • Bağımsız değişken türü: boole
  • Varsayılan olarak: false

androidx.benchmark.profiling.mode

Karşılaştırmalar çalışırken izleme dosyalarının yakalanmasına izin verir. Kullanılabilir seçenekler, mikro karşılaştırma kitaplığındaki seçeneklerle aynıdır. Daha fazla bilgi için Mikro karşılaştırma profili oluşturma başlıklı makaledeki açıklamaları inceleyin.

  • Bağımsız değişken türü: dize
  • Mevcut seçenekler:
    • MethodTracing
    • StackSampling
    • None
  • Varsayılan olarak: None

androidx.benchmark.startupProfiles.enable

Karşılaştırma sırasında başlangıç profillerinin oluşturulmasını devre dışı bırakmanıza olanak tanır.

  • Bağımsız değişken türü: boole
  • Varsayılan olarak: true

androidx.benchmark.suppressErrors

Uyarıya dönüştürülecek hataların virgülle ayrılmış listesini kabul eder.

  • Bağımsız değişken türü: dize listesi
  • Mevcut seçenekler:

    • DEBUGGABLE

      DEBUGGABLE hatası, hedef paketin manifest dosyasında debuggable=true ile çalıştığını gösterir. Bu durum, hata ayıklama özelliklerini desteklemek için çalışma zamanı performansını önemli ölçüde azaltır. Bu hatayı önlemek için debuggable=false ile karşılaştırmalı testler çalıştırın. Hata ayıklama yapılabilir bağımsız değişkeni, yürütme hızını, karşılaştırma iyileştirmelerinin gerçek kullanıcı deneyimine aktarılmayacağı veya sürüm performansının düşeceği şekilde etkiler.

    • LOW-BATTERY

      Pil seviyesi düşük olduğunda cihazlar genellikle kalan pili korumak için performansı düşürür (ör. büyük çekirdekleri devre dışı bırakarak). Bu durum, cihazlar prize takılıyken bile ortaya çıkar. Bu hatayı yalnızca uygulamayı performansı düşürülmüş şekilde profillemek için bilerek bastırabilirsiniz.

    • EMULATOR

      EMULATOR hatası, karşılaştırmanın gerçek kullanıcı cihazlarını temsil etmeyen bir emülatörde çalıştığını gösterir. Emülatör karşılaştırmalarındaki iyileştirmeler gerçek kullanıcı deneyimine aktarılmayabilir veya gerçek cihaz performansını düşürebilir. Bunun yerine karşılaştırma yapmak için fiziksel bir cihaz kullanmalısınız. Bu hatayı çok dikkatli bir şekilde gizleyebilirsiniz.

    • NOT-PROFILEABLE

      Hedef paket $packageName, <profileable shell=true> olmadan çalışıyor. Macrobenchmark'in hedef işlemden ayrıntılı izleme bilgilerini (ör. uygulamada veya kitaplıklarda tanımlanan sistem izleme bölümleri) yakalamasına izin vermek için Android 10 ve 11'de profillenebilir özelliğinin etkinleştirilmesi gerekir. Bu hatayı çok dikkatli bir şekilde gizleyebilirsiniz.

    • METHOD-TRACING-ENABLED

      Karşılaştırılan uygulama için çalıştırılan makro karşılaştırmada yöntem izleme etkindir. Bu, sanal makinenin normalden daha yavaş çalışmasına neden olur. Bu nedenle, izleme dosyalarındaki metrikleri yalnızca göreceli olarak değerlendirin (ör. ilk çalıştırmanın ikinci çalıştırmaya kıyasla ne kadar hızlı olduğunu karşılaştırın). Bu hatayı bastırmanız, farklı yöntem izleme seçeneklerine sahip derlemelerin karşılaştırmalarını karşılaştırmanız durumunda yanlış sonuçlara neden olabilir.

  • Varsayılan olarak: boş liste

additionalTestOutputDir

JSON karşılaştırma raporlarının ve profil oluşturma sonuçlarının cihazda nereye kaydedileceğini yapılandırır.

  • Bağımsız değişken türü: yol dizesi
  • Varsayılan olarak: test APK'sının harici dizini