Microbenchmark'ı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ümasyon bağımsız değişkenlerini ayarlayabilirsiniz. Bağımsız değişkenleri değiştirmek için aşağıdakileri yapın:
- 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. - Enstrümantasyon bağımsız değişkenleri alanının yanındaki
Şekil 2. Enstrümantasyon bağımsız değişkenini düzenleyin.
simgesini tıklayarak enstrümantasyon bağımsız değişkenlerini düzenleyin.
Şekil 3. Enstrümantasyon bağımsız değişkenini ekleyin.
simgesini tıklayın ve gerekli 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 (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.profiling.mode StackSampling -w com.example.macrobenchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner
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.
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
androidx.benchmark.cpuEventCounter.enable (deneysel)
androidx.benchmark.cupEventCounter.events
içinde belirtilen CPU etkinliklerini sayar.
Kök erişimi gerekir.
- Bağımsız değişken türü: boole
- Varsayılan değer: false
androidx.benchmark.cpuEventCounter.events (deneysel)
Hangi CPU etkinliği türlerinin sayılacağını belirtir. Bu bağımsız değişkeni kullanmak için androidx.benchmark.cpuEventCounter.enable
, true
olarak ayarlanmalıdır.
- Argümant 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 kıyaslamalar çalıştırmanıza olanak tanır.
Bunun anlamı şudur:
- Yapılandırma hataları zorunlu kılınmaz (örneğin, emülatörlerde doğruluk testlerini düzenli olarak ç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 izler yakalanmaz
Bu, derleme ve ölçüm doğruluğu yerine test verimini ve karşılaştırma mantığını doğrulamak için optimizasyon yapar.
- Bağımsız değişken türü: boole
- Varsayılan olarak:
false
androidx.benchmark.iterations
Tutarlı bir çalışma miktarı elde etmenize yardımcı olmak için zamana dayalı hedef iterasyon sayılarını geçersiz kılar. Bu, genellikle yalnızca farklı uygulamalar veya çalıştırmalar karşılaştırılırken profil oluşturma izlemesi içinde tutarlı miktarda çalışma yapılmasını sağlamak için etkinleştirilen profil oluşturma ile kullanışlıdır. Diğer senaryolarda bu durum, ölçümlerin doğruluğunu veya kararlılığını düşürebilir.
- Bağımsız değişken türü: tam sayı
- 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 listener
instrumentation 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.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 olarak:
true
androidx.benchmark.profiling.mode
Karşılaştırmalar çalışırken izleme dosyalarının yakalanmasına izin verir. Mevcut seçenekler için Mikro karşılaştırma profili oluşturma bölümüne bakın.
Bazı Android OS sürümlerinin, sonraki ölçümlerin etkilenmeden yöntem izlemeyi desteklemediğini unutmayın. Mikro karşılaştırma, bunu önlemek için bir istisna atar. Bu nedenle, yöntem izlerini yalnızca güvenli olduğunda yakalamak için varsayılan bağımsız değişkeni kullanın. Sayı #316174880'a bakın.
- Bağımsız değişken türü: dize
- Mevcut seçenekler:
MethodTracing
StackSampling
None
- Varsayılan olarak:
MethodTracing
değerinin güvenli sürümü. Yalnızca cihaz ölçümleri etkilemeden yöntem izlemesi yapabiliyorsa yöntem izlemesi yakalar.
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
LOW-BATTERY
EMULATOR
CODE-COVERAGE
UNLOCKED
SIMPLEPERF
ACTIVITY-MISSING
- Varsayılan değer: boş liste
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Macrobenchmark enstrümantasyon bağımsız değişkenleri
- Mikro karşılaştırma profili oluşturma
- Temel profiller oluşturma {:#creating-profile-rules}