Argumen instrumentasi macrobenchmark

Mengonfigurasi perilaku library dengan argumen instrumentasi berikut. Anda dapat menambahkannya ke konfigurasi Gradle atau menerapkannya langsung saat menjalankan instrumentasi dari command line. Untuk menetapkan argumen ini bagi semua pengujian Android Studio dan command line yang berjalan, tambahkan argumen tersebut ke testInstrumentationRunnerArguments:

android {
    defaultConfig {
        // ...
        testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
    }
}

Anda juga dapat menyiapkan argumen instrumentasi saat menjalankan tolok ukur dari Android Studio. Untuk mengubah argumen, lakukan hal berikut:

  1. Edit konfigurasi run dengan mengklik Edit, lalu mengklik konfigurasi.
    edit konfigurasi run
    Gambar 1. Edit konfigurasi run
  2. Edit argumen instrumentasi dengan mengklik Lainnya oleh Instrumentation arguments.
    edit argumen instrumentasi
    Gambar 2. Mengedit argumen instrumentasi.
  3. Tambahkan argumen instrumentasi yang diperlukan dengan mengklik Add di bagian Instrumentation Extra Params.
    tambahkan argumen instrumentasi yang diperlukan
    Gambar 3. Tambahkan argumen instrumentasi yang diperlukan.

Jika Anda menjalankan macrobenchmark dari command line, gunakan -P android.testInstrumentationRunnerArguments.[name of the argument]:

./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile

Jika Anda memanggil perintah am instrument secara langsung (yang mungkin terjadi di lingkungan pengujian CI), teruskan argumen ke am instrument dengan -e:

adb shell am instrument -e androidx.benchmark.enabledRules BaselineProfile -w com.example.macrobenchmark/androidx.test.runner.AndroidJUnitRunner

Untuk informasi selengkapnya tentang cara mengonfigurasi benchmark di CI, lihat Benchmark dalam CI

androidx.benchmark.compilation.enabled

Memungkinkan Anda menonaktifkan kompilasi di antara setiap iterasi benchmark. Secara default, aplikasi target diinstal ulang dan dikompilasi ulang di antara setiap benchmark, agar sesuai dengan CompilationMode yang diteruskan ke measureRepeated. Menonaktifkan ini memungkinkan Anda melewati penginstalan ulang dan kompilasi jika, misalnya, Anda ingin mengompilasi aplikasi target sepenuhnya satu kali sebelum menjalankan rangkaian pengujian, dan menjalankan semua tolok ukur terhadap target yang dikompilasi sepenuhnya.

  • Jenis argumen: boolean
  • Default: true

androidx.benchmark.dryRunMode.enable

Memungkinkan Anda menjalankan benchmark dalam satu loop untuk memverifikasi apakah benchmark berfungsi dengan benar atau tidak. Anda dapat menggunakannya dengan pengujian reguler sebagai bagian dari verifikasi.

  • Jenis argumen: boolean
  • Default: false

androidx.benchmark.enabledRules

Memungkinkan pemfilteran berjalan hanya ke satu jenis pengujian pembuatan Profil Dasar Pengukuran atau pengujian Macrobenchmark. Daftar yang dipisahkan koma juga didukung.

  • Jenis argumen: string
  • Opsi yang tersedia:
    • Macrobenchmark
    • BaselineProfile
  • Default: Tidak ditentukan

androidx.benchmark.junit4.SideEffectRunListener

Anda mungkin mendapatkan hasil benchmark yang tidak konsisten jika pekerjaan latar belakang yang tidak terkait dijalankan saat benchmark berjalan.

Untuk menonaktifkan pekerjaan latar belakang selama benchmark, tetapkan jenis argumen instrumentasi listener ke androidx.benchmark.junit4.SideEffectRunListener.

  • Jenis argumen: string
  • Opsi yang tersedia:
    • androidx.benchmark.junit4.SideEffectRunListener
  • Default: Tidak ditentukan

androidx.benchmark.fullTracing.enable

Mengaktifkan tracepoint androidx.tracing.perfetto seperti pelacakan komposisi Jetpack Compose.

Anda perlu menyiapkan project agar dapat merekam aktivitas komposisi dari benchmark. Untuk mengetahui informasi selengkapnya, lihat Merekam aktivitas dengan Jetpack Macrobenchmark.

  • Jenis argumen: boolean
  • Default: false

androidx.benchmark.profiling.mode

Memungkinkan pengambilan file rekaman aktivitas saat menjalankan benchmark. Opsi yang tersedia sama dengan opsi untuk library Microbenchmark—untuk informasi selengkapnya, lihat deskripsi di Membuat Profil Microbenchmark.

  • Jenis argumen: string
  • Opsi yang tersedia:
    • MethodTracing
    • StackSampling
    • None
  • Default: None

androidx.benchmark.startupProfiles.enable

Memungkinkan Anda menonaktifkan pembuatan profil startup selama benchmark.

  • Jenis argumen: boolean
  • Default: true

androidx.benchmark.suppressErrors

Menerima daftar error yang dipisahkan koma untuk diubah menjadi peringatan.

  • Jenis argumen: daftar string
  • Opsi yang tersedia:

    • DEBUGGABLE

      Error DEBUGGABLE menunjukkan bahwa paket target berjalan dengan debuggable=true dalam manifesnya, sehingga secara drastis mengurangi performa runtime untuk mendukung fitur proses debug. Untuk menghindari error ini, jalankan benchmark dengan debuggable=false. Argumen yang dapat di-debug memengaruhi kecepatan eksekusi dengan cara yang berarti peningkatan benchmark mungkin tidak membawa ke pengalaman pengguna sebenarnya atau mungkin mengalami penurunan performa rilis.

    • LOW-BATTERY

      Jika daya baterai rendah, perangkat sering kali mengurangi performa untuk menghemat sisa baterai, misalnya dengan menonaktifkan core besar. Hal ini akan terjadi meskipun perangkat dicolokkan. Hanya sembunyikan error ini jika Anda sengaja membuat profil aplikasi dengan performa yang lebih rendah.

    • EMULATOR

      Error EMULATOR memberi tahu Anda bahwa benchmark sedang berjalan di emulator, yang tidak mewakili perangkat pengguna sungguhan. Peningkatan benchmark emulator mungkin tidak berguna bagi pengalaman pengguna yang sebenarnya atau mungkin mengalami regresi performa perangkat yang sebenarnya. Sebagai gantinya, Anda harus menggunakan perangkat fisik untuk membuat tolok ukur. Sembunyikan error ini dengan sangat hati-hati.

    • NOT-PROFILEABLE

      Paket target $packageName berjalan tanpa <profileable shell=true>. Profileable diperlukan di Android 10 dan 11 agar Macrobenchmark merekam informasi rekaman aktivitas yang mendetail dari proses target, seperti bagian pelacakan sistem yang ditentukan dalam aplikasi atau library. Sembunyikan error ini dengan sangat hati-hati.

    • METHOD-TRACING-ENABLED

      Proses Macrobenchmark untuk aplikasi yang sedang diukur mengak'tifkan pelacakan metode. Hal ini menyebabkan VM berjalan lebih lambat dari biasanya. Jadi, hanya pertimbangkan metrik dari file rekaman aktivitas dalam istilah relatif—misalnya, membandingkan seberapa cepat proses pertama dengan proses kedua. Menyembunyikan error ini dapat memberikan hasil yang tidak akurat jika Anda membandingkan benchmark untuk membangun dengan opsi pelacakan metode yang berbeda.

  • Default: daftar kosong

additionalTestOutputDir

Mengonfigurasi tempat laporan benchmark JSON dan hasil profiling akan disimpan di perangkat.

  • Jenis argumen: string jalur
  • Default: direktori eksternal APK pengujian