Topik ini menjelaskan cara mengonfigurasi sistem build non-Gradle saat menggunakan library Microbenchmark.
Meskipun library Microbenchmark mengirimkan plugin Gradle untuk langsung diintegrasikan dengan plugin Android Gradle, Anda juga dapat menggunakannya dalam sistem build lain, seperti Bazel atau Buck.
Instrumentasi
Gunakan AndroidBenchmarkRunner
atau subclass sebagai runner instrumentasi
dengan menentukannya dalam blok instrumentasi manifes pengujian:
<manifest package="com.example.library.test" ...> <instrumentation android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner" /> ... </manifest>
Untuk mendapatkan pengukuran yang akurat, benchmark tidak boleh dapat di-debug. Jika Anda
tidak menetapkan tanda yang dapat di-debug dengan benar, library akan menampilkan error, bukan
melaporkan hasil yang tidak valid. Anda mungkin perlu mengubah setelan ini selama
operasi lokal untuk digunakan dengan profiler Android Studio, yang memerlukan
debuggable=true
.
Anda dapat mem-build Microbenchmark untuk berjalan dengan dua cara: dalam APK yang melakukan instrumentasi sendiri, atau dengan satu APK pengujian yang menginstrumentasikan APK lain.
APK yang melakukan instrumentasi sendiri
Dengan APK yang melakukan instrumentasi sendiri—sebagai output Gradle untuk direktori androidTest
dari com.android.library
—Anda harus menonaktifkan fungsi yang dapat di-debug dalam manifes
Android APK tunggal:
<manifest package="com.example.library.test" ...> <instrumentation android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner" android:targetPackage="com.example.library.test"/> <application android:debuggable="false"/> </manifest>
APK aplikasi yang diinstrumentasi oleh APK pengujian
Jika build Anda menghasilkan dua APK, yaitu APK aplikasi dan APK pengujian, sebagai output Gradle untuk
direktori androidTest
dari paket com.android.app
, Anda harus menetapkan APK aplikasi ke
debuggable=false
. Flag yang dapat di-debug dalam APK pengujian diabaikan oleh Android OS.
<!-- 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 dan Gradle tidak mendukung microbenchmark APK modul aplikasi. Hal ini disebabkan oleh kompleksitas dukungan direktori pengujian tambahan yang bergantung pada varian APK yang tidak dapat di-debug, dioptimalkan, atau diminifikasi, tetapi tanpa minifikasi yang mengganggu panggilan dari benchmark ke kode aplikasi.
Kompilasi
Sebaiknya kompilasi APK microbenchmark sebelum menjalankan pengujian, menggunakan perintah berikut:
adb shell cmd package compile -f -m speed com.example.benchmark
Minifikasi dan pengoptimalan
Sebaiknya, gunakan minifikasi dan pengoptimalan untuk benchmark Anda guna mendapatkan performa yang siap untuk dirilis. Untuk kode contoh, lihat Contoh project benchmark.
Cakupan kode
Sebaiknya, jalankan benchmark dengan cakupan dinonaktifkan dan tanpa gangguan library atau DEX oleh alat seperti JaCoCo.
Karena alasan ini, sebaiknya isolasi benchmark sebagai set sumber dari uji instrumentasi lainnya dan build secara terpisah dengan dependensi rilis. Dengan demikian, Anda tidak perlu membuat pengujian lebih dari sekali, baik dengan maupun tanpa cakupan.
Varian debug library yang menjadi dependensi benchmark Anda, terutama yang dibangun secara lokal, mungkin dibangun dengan mengaktifkan cakupan.
Jalankan pengujian Anda
Anda dapat menjalankan pengujian dari command line dan menentukan class yang akan dijalankan, seperti yang ditunjukkan dalam contoh berikut:
adb shell am instrument -w com.example.benchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner
Untuk mengonfigurasi library Microbenchmark pada runtime tanpa Gradle, lihat Argumen Instrumentasi Microbenchmark.
Direkomendasikan untuk Anda
- Catatan: teks link ditampilkan saat JavaScript nonaktif
- Menulis Microbenchmark
- Membuat Profil Dasar Pengukuran {:#creating-profile-rules}