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:
- Düzenle'yi ve ardından yapılandırmayı tıklayarak çalıştırma yapılandırmasını düzenleyin.
1. şekil. Çalıştırma yapılandırmasını düzenleyin. Şekil 2. Enstrümantasyon bağımsız değişkenlerini düzenleyin.
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.
3.şekil Gerekli enstrümantasyon bağımsız değişkenini ekleyin.
Instrumentation Extra Params bölümünde Add'i (Ekle) tıklayarak 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 manifestindedebuggable=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çindebuggable=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ş
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir.
- Mikro karşılaştırma enstrümantasyon bağımsız değişkenleri
- Temel profiller oluşturma
- JankStats Kitaplığı