Mikro karşılaştırma enstrümantasyonu bağımsız değişkenleri

Aşağıdaki enstrümantasyon bağımsız değişkenleriyle mikro karşılaştırmanın davranışını 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 tıklayıp düzenlemek istediğiniz yapılandırmayı seçerek çalıştırma yapılandırmasını düzenleyin.
    Şekil 1. Çalıştırma yapılandırmasını düzenleyin.
  2. Instrumentation arguments (Enstrümantasyon bağımsız değişkenleri) alanının yanındaki simgesini tıklayarak enstrümantasyon bağımsız değişkenlerini düzenleyin.
    Şekil 2. Enstrümantasyon bağımsız değişkenini düzenleyin.
  3. simgesini tıklayın ve gerekli enstrümantasyon bağımsız değişkenini ekleyin.
    Şekil 3. Enstrümantasyon bağımsız değişkenini ekleyin.

Karşılaştırmayı 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.profiling.mode=StackSampling

Bir enstrüman 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.profiling.mode StackSampling -w com.example.macrobenchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner

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.cpuEventCounter.enable (deneysel)

androidx.benchmark.cpuEventCounter.events içinde belirtilen CPU etkinliklerini sayar. Kök erişimi gerektirir.

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

androidx.benchmark.cpuEventCounter.events (deneysel)

Hangi CPU etkinliklerinin sayılacağını belirtir. Bu bağımsız değişkeni kullanmak için androidx.benchmark.cpuEventCounter.enable, true olarak ayarlanmalıdır.

  • Bağımsız değişken türü: Virgülle ayrılmış dize listesi
  • Mevcut seçenekler:
    • Instructions
    • CPUCycles
    • L1DReferences
    • L1DMisses
    • BranchInstructions
    • BranchMisses
    • L1IReferences
    • L1IMisses
  • Varsayılan olarak: Instructions, CpuCycles, BranchMisses

androidx.benchmark.dryRunMode.enable

Düzgün çalıştıklarını doğrulamak için tek bir döngüde karşılaştırma yapmanıza olanak tanır.

Bunun anlamı şudur:

  • Yapılandırma hataları zorunlu kılınmaz (örneğin, emülatörlerde normal doğruluk testleri çalıştırmayı kolaylaştırmak için)
  • Karşılaştırma, ısınma olmadan yalnızca tek bir döngü çalıştırır.
  • Çalışma süresini azaltmak için ölçümler ve izlemeler yakalanmaz.

Bu, derleme ve ölçüm doğruluğundan ziyade test verimliliği ve karşılaştırma ölçütü mantığını doğrulama için optimizasyon yapar.

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

androidx.benchmark.iterations

Kaç ölçümün gerçekleşeceğini yapılandırır. Bu, yürütülen döngü sayısını doğrudan tanımlamaz. Çünkü her ölçüm genellikle ısınma sırasında çalışma süresine göre dinamik olarak tanımlanan birçok döngü çalıştırır.

  • Bağımsız değişken türü: Tam sayı
  • Varsayılan değer: 50

androidx.benchmark.killExistingPerfettoRecordings

Microbenchmark, varsayılan olarak yeni bir izleme başlatırken paraziti 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.output.enable

Sonuç JSON dosyasının harici depolamaya yazılmasını sağlar.

  • 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 için Profile a Microbenchmark (Mikro karşılaştırma testi profili oluşturma) başlıklı makaleye bakın.

Bazı Android OS sürümlerinin, sonraki ölçümler etkilenmeden yöntem izlemeyi desteklemediğini unutmayın. Microbenchmark bunu önlemek için bir istisna oluşturur. Bu nedenle, yalnızca güvenli olduğunda yöntem izlerini yakalamak için varsayılan bağımsız değişkeni kullanın. 316174880 numaralı soruna bakın.

  • Bağımsız değişken türü: dize
  • Mevcut seçenekler:
    • MethodTracing
    • StackSampling
    • None
  • Varsayılan olarak: Yalnızca cihaz ölçümleri etkilemeden yapabiliyorsa yöntem izlemeyi yakalayan MethodTracing'nin güvenli sürümü.

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
  • Mevcut seçenekler:
    • DEBUGGABLE
    • LOW-BATTERY
    • EMULATOR
    • CODE-COVERAGE
    • UNLOCKED
    • SIMPLEPERF
    • ACTIVITY-MISSING
  • Varsayılan olarak: boş bir 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ü: Dosya yolu 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ş