Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Menjalankan benchmark dalam Continuous Integration

Menjalankan pengujian dalam CI biasa dilakukan tanpa Gradle atau secara lokal jika Anda menggunakan sistem build yang berbeda. Topik ini menjelaskan cara mengonfigurasi library Benchmark pada waktu proses tanpa Gradle.

Untuk mempelajari manfaat Benchmark dalam CI dan cara menggunakan data benchmark untuk mendeteksi regresi, lihat Mengatasi Regresi dengan Benchmark dalam CI di blog Developer Android.

Hasil

Benchmark menghasilkan file JSON dengan hasil dan metadata dari pengujian. File JSON ini ditulis ke penyimpanan eksternal perangkat. Anda harus mengambil file dari perangkat pada setiap pengujian.

Output dinonaktifkan secara default, tetapi Anda dapat mengaktifkannya menggunakan argumen instrumentasi berikut, yang diteruskan ke perintah am instrument:

    -e androidx.benchmark.output.enable true
    

Secara default, laporan disimpan di perangkat dalam direktori download untuk penyimpanan eksternal aplikasi yang diuji, yang dapat ditemukan dengan kueri berikut:

    adb shell content query --uri content://media/external/file --projection _data --where "\"_data LIKE '%Android'\""
    

Anda dapat mengonfigurasi jalur Benchmark melakukan operasi tulis menggunakan argumen instrumentasi berikut:

    -e additionalTestOutputDir "device_path_you_can_write_to"
    

Penyimpanan dan Android 10

Jika, seperti di Android Gradle, data output sulit diambil dari perangkat sebelum pengujian di-uninstal, Anda dapat meneruskan argumen instrumentasi berikut. Pada perangkat yang menjalankan Android 10 dan yang lebih tinggi, argumen ini memungkinkan file tetap disimpan setelah di-uninstal:

    -e no-isolated-storage 1
    

Jika Anda juga menargetkan API 29 dan yang lebih tinggi, Anda juga harus mengizinkan opsi penyimpanan lama secara eksplisit dalam manifes benchmark:

    <application android:requestLegacyExternalStorage="true" ... >
    

Lihat Menonaktifkan tampilan terfilter untuk mengetahui informasi selengkapnya tentang cara menonaktifkan penyimpanan terbatas.

Mengunci frekuensi CPU

Plugin Gradle Benchmark menyediakan perintah ./gradlew lockClocks untuk mengunci frekuensi CPU perangkat yang telah di-root. Hal ini berguna untuk memastikan stabilitas saat Anda memiliki akses ke perangkat yang telah di-root, seperti build "userdebug". Anda dapat mengulanginya menggunakan skrip shell lockClocks.sh, yang tersedia di sumber library.

Anda dapat menjalankan skrip tersebut secara langsung dari host Linux atau Mac, atau Anda dapat mengirimnya ke perangkat dengan beberapa perintah adb:

    adb push path/lockClocks.sh /data/local/tmp/lockClocks.sh
    adb shell /data/local/tmp/lockClocks.sh
    adb shell rm /data/local/tmp/lockClocks.sh
    

Jika Anda menjalankan skrip shell secara langsung pada host, host akan mengirimkan perintah ini ke perangkat yang tersambung.

Argumen instrumentasi

Anda dapat mengonfigurasi perilaku library dengan argumen instrumentasi berikut:

androidx.benchmark.startupMode.enable

  • Mengonfigurasi ulang perilaku berulang untuk mendukung kode benchmark selama startup
  • Menonaktifkan pengulangan pemanasan
  • Melakukan 10 pengukuran
  • Menonaktifkan rata-rata pengulangan, yang mengurangi overhead di benchmark mikro
  • Default-nya adalah false

androidx.benchmark.output.enable

  • Mengaktifkan penulisan file JSON hasil ke penyimpanan eksternal
  • Default-nya adalah false

androidx.benchmark.suppressErrors

  • Daftar error yang dipisahkan koma, seperti DEBUGGABLE,LOW-BATTERY, yang akan diubah menjadi peringatan
  • Default-nya adalah daftar kosong

additionalTestOutputDir

  • Mengonfigurasi tempat penyimpanan laporan benchmark JSON lengkap di perangkat
  • Default-nya adalah direktori download eksternal untuk APK pengujian