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

Kitaplığın davranışını aşağıdaki enstrümantasyon bağımsız değişkenleriyle yapılandırın. Bunları Gradle yapılandırmanıza ekleyebilir veya komut satırından enstrümantasyon ç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ırma testlerini çalıştırırken enstrümantasyon bağımsız değişkenlerini de ayarlayabilirsiniz. Bağımsız değişkenleri değiştirmek için aşağıdakileri yapın:

  1. Düzenle'yi ve 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
    1. şekil. Çalıştırma yapılandırmasını düzenleyin.
  2. Diğer'i ve ardından 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. Instrumentation Extra Params bölümünde Add'i (Ekle) tıklayarak gerekli enstrümantasyon bağımsız değişkenini ekleyin.
    Gerekli enstrümantasyon bağımsız değişkenini ekleyin.
    3.şekil Gerekli enstrümantasyon bağımsız değişkenini ekleyin.

Makrobenchmark'ı komut satırından çalıştırıyorsanız -P android.testInstrumentationRunnerArguments.[name of the argument] kullanın:

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

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

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

CI'da karşılaştırmaları yapılandırma hakkında daha fazla bilgi için bkz. CI'da karşılaştırma

androidx.benchmark.compilation.enabled

Karşılaştırmanın her yinelemesi arasında derlemeyi devre dışı bırakmanıza olanak tanır. Varsayılan olarak, CompilationMode değerine iletilen measureRepeated değerine uymak için hedef uygulama her karşılaştırma arasında yeniden yüklenir ve yeniden derlenir. Bu seçeneği devre dışı bırakmak, örneğin hedef uygulamayı test paketini çalıştırmadan önce bir kez tamamen derlemek ve tüm karşılaştırmaları tamamen derlenmiş bu hedefe göre çalıştırmak istiyorsanız hem yeniden yüklemeyi hem de derlemeyi atlamanıza olanak tanır.

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

androidx.benchmark.dryRunMode.enable

Doğru çalışıp çalışmadıklarını doğrulamak için tek bir döngüde karşılaştırma yapmanıza olanak tanır. Doğrulama kapsamında normal testlerle birlikte kullanabilirsiniz.

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

androidx.benchmark.enabledRules

Yalnızca bir test türüne (temel profil oluşturma veya makro karşılaştırma testi) göre filtreleme yapmanıza olanak tanır. Virgülle ayrılmış listeler de desteklenir.

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

androidx.benchmark.fullTracing.enable

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

Karşılaştırmalardan kompozisyon izleme verilerini yakalayabilmek için projenizi ayarlamanız gerekir. Daha fazla bilgi için Jetpack Macrobenchmark ile izleme yakalama başlıklı makaleyi inceleyin.

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

androidx.benchmark.killExistingPerfettoRecordings

Benchmark, varsayılan olarak yeni bir izleme başlatırken girişimi azaltmak için mevcut Perfetto (Sistem İzleme) kayıtlarını sonlandırır. Bu davranışı devre dışı bırakmak için false değerini iletin.

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

androidx.benchmark.profiling.mode

Karşılaştırma testleri çalıştırılırken izleme dosyalarının yakalanmasına izin verir. Kullanılabilir seçenekler, Microbenchmark kitaplığındaki seçeneklerle aynıdır. Daha fazla bilgi için Profile a Microbenchmark (Mikrobenchmark'ı profilleme) bölümündeki açıklamaları inceleyin.

  • Bağımsız değişken türü: dize
  • Mevcut seçenekler:
    • MethodTracing
    • StackSampling
    • None
  • Varsayılan değer: 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ü: boolean
  • Varsayılan değer: true

androidx.benchmark.suppressErrors

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

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

    • DEBUGGABLE

      DEBUGGABLE hatası, hedef paketin manifestinde 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 düşürür. Bu hatayı önlemek için debuggable=false ile karşılaştırma testleri yapın. Hata ayıklanabilir bağımsız değişken, yürütme hızını etkileyerek karşılaştırma iyileştirmelerinin gerçek kullanıcı deneyimine yansımamasına veya yayın performansının gerilemesine neden olabilir.

    • LOW-BATTERY

      Pil seviyesi düşük olduğunda cihazlar, kalan pili korumak için genellikle performansı düşürür. Örneğin, büyük çekirdekleri devre dışı bırakır. Bu durum, cihazlar prize takılıyken bile meydana gelir. Bu hatayı yalnızca uygulamayı bilerek daha düşük performansla profillendiriyorsanız bastırın.

    • 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ördeki karşılaştırma testlerindeki iyileştirmeler gerçek kullanıcı deneyimine yansımayabilir 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 bastırın.

    • NOT-PROFILEABLE

      Hedef paket $packageName, <profileable shell=true> olmadan çalışıyor. Profileable, Android 10 ve 11'de Macrobenchmark'ın hedef süreçten ayrıntılı izleme bilgileri (ör. uygulamada veya kitaplıklarda tanımlanan sistem izleme bölümleri) yakalamasına olanak tanımak için gereklidir. Bu hatayı çok dikkatli bir şekilde bastırın.

    • METHOD-TRACING-ENABLED

      Karşılaştırılan uygulama için Macrobenchmark çalıştırmasında yöntem izleme etkinleştirilmiş olmalıdır. Bu durum, sanal makinenin normalden daha yavaş çalışmasına neden olur. Bu nedenle, izleme dosyalarındaki metrikleri yalnızca göreceli olarak değerlendirin. Örneğin, ilk çalıştırmanın ikinci çalıştırmaya kıyasla ne kadar hızlı olduğunu karşılaştırın. Bu hatanın bastırılması, farklı yöntem izleme seçeneklerine sahip derlemelerin karşılaştırmaları yapıldığında yanlış sonuçlara yol açabilir.

  • Varsayılan değer: 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

işleyici

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

Karşılaştırma sırasında arka planda çalışmayı devre dışı bırakmak için listener enstrümantasyon bağımsız değişken 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ş