Bu sayfada, Microbenchmark kitaplığı.
Microbenchmark kitaplığı, entegrasyona olanak sağlayan bir Gradle eklentisi kullanarak diğer derleme sistemlerinde de kullanabilirsiniz: Bazel veya Buck.
Enstrümantasyon
Enstrümantal koşucu olarak AndroidBenchmarkRunner
veya bir alt sınıfı kullanın
test manifestindeki araç blokunda belirterek bunu belirtmeniz gerekir:
<manifest package="com.example.library.test" ...> <instrumentation android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner" /> ... </manifest>
Doğru ölçümler elde etmek için karşılaştırmaların hata ayıklaması mümkün olmamalıdır. Şu durumda:
hata ayıklama bayrağı doğru ayarlanmazsa kitaplık hata verir
daha fazla sonuç sunabilir. Şu süre içinde bu ayarı açmanız gerekebilir:
Android Studio profil araçlarıyla kullanım için yerel çalıştırmalar,
debuggable=true
Mikrobenchmark'ları, kendi kendini enstrümantasyon yöntemini kullanarak iki şekilde oluşturabilirsiniz. APK veya başka bir APK'nın enstrümantasyonunu kullanan bir test APK'sı içeren uygulamalar.
Kendi kendine enstrümantasyon kullanan APK'lar
Kendi kendini enstrümantasyonlu APK ile (Gradle tarafından bir androidTest
için çıktı olarak)
com.android.library
dizininden hata ayıklanabilir tek bir
APK'nın Android manifesti:
<manifest package="com.example.library.test" ...> <instrumentation android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner" android:targetPackage="com.example.library.test"/> <application android:debuggable="false"/> </manifest>
Test APK'sı tarafından sağlanan uygulama APK'sı
Derlemeniz, Gradle çıkışı olarak iki APK (uygulama APK'sı ve test APK'sı) oluşturuyorsa
com.android.app
paketindeki androidTest
dizini. Uygulama APK'sını
debuggable=false
. Test APK'sının hata ayıklama işareti Android OS tarafından yoksayılır.
<!-- Test manifest. --> <manifest package="com.example.android.app.test" ...> <instrumentation android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner" android:targetPackage="com.example.android.app"/> <!-- This debuggable is ignored by the OS. --> </manifest> <!-- App being tested. --> <manifest package="com.example.android.app" ...> <application android:debuggable="false"/> </manifest>
Android Studio ve Gradle, uygulama modülü APK'sının mikro karşılaştırmasını desteklemez. Bunun nedeni, her bir test dizinini destekleyen ek bir test dizininin APK'nın hata ayıklanamayan, optimize edilmiş veya küçültülmüş bir varyantına bağlıdır ancak Bu sayede, karşılaştırmalardan gelen aramaları uygulama koduna bölerek sadeleştirmeden yararlanabilirsiniz.
Derleme
Testleri çalıştırmadan önce şu komutu kullanın:
adb shell cmd package compile -f -m speed com.example.benchmark
Küçültme ve optimizasyon
Karşılaştırmalarınızda küçültme ve optimizasyondan yararlanmanızı öneririz. performans elde edebilirsiniz. Örneğin kod için Karşılaştırma örnek proje.
Kod kapsamı
Kapsamı devre dışı bırakılmış ve herhangi bir kitaplık olmadan karşılaştırmalar çalıştırmanızı öneririz veya JaCoCo gibi araçlar tarafından DEX tarafından yönetilir.
Bu nedenle, karşılaştırmaları diğerlerinden bir kaynak kümesi olarak enstrümantasyon testlerini yayınladık ve bunları yayın bağımlılıklarıyla ayrı ayrı derledik. Bu Böylece hem kapsam dahilinde hem de kapsam olmadan testleri birden fazla kez derlemek zorunda kalmazsınız.
Karşılaştırmanızın temel aldığı kitaplıkların, özellikle de şu kitaplıklarda hata ayıklayın yerel olarak oluşturulmuş, kapsam etkinleştirilmiş şekilde oluşturulabilir.
Testlerinizi yapın
Testlerinizi komut satırından çalıştırabilir ve çalıştırılacak sınıfları belirtebilirsiniz aşağıdaki örnekte gösterildiği gibi:
adb shell am instrument -w com.example.benchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner
Microbenchmark kitaplığını, çalışma zamanında Gradle olmadan yapılandırmak için bkz. Mikrobenchmark araç bağımsız değişkenleri.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Mikro Karşılaştırma yazma
- Temel Profiller Oluşturma {:#create-profile-rules}