Kitaplığı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ümantasyon 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, ardından yapılandırmayı tıklayarak çalıştırma yapılandırmasını düzenleyin.
- Diğer Enstrümantasyon bağımsız değişkenleri'ni tıklayarak enstrümantasyon bağımsız değişkenlerini düzenleyin.
- Ekstrumentayon Ek Parametreleri bölümünde Ekle'yi tıklayarak gerekli enstrümantasyon bağımsız değişkenini ekleyin.
Makro karşılaştırmayı komut satırından çalıştırıyorsanız -P
android.testInstrumentationRunnerArguments.[name of the argument]
değerini kullanın:
./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
am instrument
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.enabledRules BaselineProfile -w com.example.macrobenchmark/androidx.test.runner.AndroidJUnitRunner
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.
androidx.benchmark.compilation.enabled
Karşılaştırmanın her iterasyonu arasında derlemeyi devre dışı bırakmanıza olanak tanır. Varsayılan olarak hedef uygulama, measureRepeated
'e iletilen CompilationMode
'a uymak için her karşılaştırma arasında yeniden yüklenir ve yeniden derlenir. Bu seçeneği devre dışı bırakarak, örneğin test paketini çalıştırmadan önce hedef uygulamayı bir kez tamamen derleyip tüm karşılaştırmaları bu tamamen derlenmiş hedefe göre çalıştırmak isterseniz hem yeniden yükleme hem de derlemeyi atlayabilirsiniz.
- Bağımsız değişken türü: boole
- Varsayılan olarak:
true
androidx.benchmark.dryRunMode.enable
Düzgün çalıştıklarını doğrulamak için karşılaştırmaları tek bir döngüde çalıştırmanıza olanak tanır. Doğrulama kapsamında normal testlerle birlikte kullanabilirsiniz.
- Bağımsız değişken türü: boole
- Varsayılan olarak:
false
androidx.benchmark.enabledRules
Yalnızca bir test türüne (Referans Profil oluşturma veya Makro Karşılaştırma testi) filtreleme çalıştırmasına izin verir. Virgülle ayrılmış listeler de desteklenir.
- Bağımsız değişken türü: dize
- Mevcut seçenekler:
Macrobenchmark
BaselineProfile
- 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.fullTracing.enable
Jetpack Compose kompozisyon izleme gibi androidx.tracing.perfetto
izleme noktalarını etkinleştirir.
Karşılaştırmalardan bileşim izlemeyi yakalayabilmek için projenizi ayarlamanız gerekir. Daha fazla bilgi için Jetpack Macrobenchmark ile izleme yapma başlıklı makaleyi inceleyin.
- Bağımsız değişken türü: boole
- Varsayılan olarak:
false
androidx.benchmark.profiling.mode
Karşılaştırmalar çalışırken izleme dosyalarının yakalanmasına izin verir. Kullanılabilir seçenekler, mikro karşılaştırma kitaplığındaki seçeneklerle aynıdır. Daha fazla bilgi için Mikro karşılaştırma profili oluşturma başlıklı makaledeki açıklamaları inceleyin.
- Bağımsız değişken türü: dize
- Mevcut seçenekler:
MethodTracing
StackSampling
None
- Varsayılan olarak:
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ü: boole
- Varsayılan olarak:
true
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
DEBUGGABLE
hatası, hedef paketin manifest dosyasındadebuggable=true
ile çalıştığını gösterir. Bu durum, hata ayıklama özelliklerini desteklemek için çalışma zamanı performansını önemli ölçüde azaltır. Bu hatayı önlemek içindebuggable=false
ile karşılaştırmalı testler çalıştırın. Hata ayıklama yapılabilir bağımsız değişkeni, yürütme hızını, karşılaştırma iyileştirmelerinin gerçek kullanıcı deneyimine aktarılmayacağı veya sürüm performansının düşeceği şekilde etkiler.LOW-BATTERY
Pil seviyesi düşük olduğunda cihazlar genellikle kalan pili korumak için performansı düşürür (ör. büyük çekirdekleri devre dışı bırakarak). Bu durum, cihazlar prize takılıyken bile ortaya çıkar. Bu hatayı yalnızca uygulamayı performansı düşürülmüş şekilde profillemek için bilerek bastırabilirsiniz.
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ör karşılaştırmalarındaki iyileştirmeler gerçek kullanıcı deneyimine aktarılmayabilir 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 gizleyebilirsiniz.NOT-PROFILEABLE
Hedef paket
$packageName
,<profileable shell=true>
olmadan çalışıyor. Macrobenchmark'in hedef işlemden ayrıntılı izleme bilgilerini (ör. uygulamada veya kitaplıklarda tanımlanan sistem izleme bölümleri) yakalamasına izin vermek için Android 10 ve 11'de profillenebilir özelliğinin etkinleştirilmesi gerekir. Bu hatayı çok dikkatli bir şekilde gizleyebilirsiniz.METHOD-TRACING-ENABLED
Karşılaştırılan uygulama için çalıştırılan makro karşılaştırmada yöntem izleme etkindir. Bu, sanal makinenin normalden daha yavaş çalışmasına neden olur. Bu nedenle, izleme dosyalarındaki metrikleri yalnızca göreceli olarak değerlendirin (ör. ilk çalıştırmanın ikinci çalıştırmaya kıyasla ne kadar hızlı olduğunu karşılaştırın). Bu hatayı bastırmanız, farklı yöntem izleme seçeneklerine sahip derlemelerin karşılaştırmalarını karşılaştırmanız durumunda yanlış sonuçlara neden olabilir.
Varsayılan olarak: 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
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ığı