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.
    1. şekil. Ç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.
    3.şekil 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) am instrument bağımsız değişkenini -e ile 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.cupEventCounter.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 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 testleriyle ç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ğini ve karşılaştırma ölçütü mantığını doğrulamayı optimize eder.

  • Bağımsız değişken türü: boole
  • Varsayılan değer: 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.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 Profilini Oluşturma) başlıklı makaleye bakın.

Bazı Android OS sürümlerinde, sonraki ölçümler etkilenmeden yöntem izlemenin desteklenmediğini unutmayın. Microbenchmark bunu önlemek için bir istisna oluşturur. Bu nedenle, yalnızca güvenli olduğunda yöntem izlemelerini 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: 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ş