Argumen instrumentasi Microbenchmark

Mengonfigurasi perilaku Microbenchmark 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 dan memilih konfigurasi yang ingin Anda edit.
    Gambar 1. Edit konfigurasi run
  2. Edit argumen instrumentasi dengan mengklik di samping kolom Instrumentation arguments.
    Gambar 2. Edit argumen instrumentasi.
  3. Klik dan tambahkan argumen instrumentasi yang diperlukan.
    Gambar 3. Tambahkan argumen instrumentasi.

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

./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.profiling.mode=StackSampling

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

adb shell am instrument -e androidx.benchmark.profiling.mode StackSampling -w com.example.macrobenchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner

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

additionalTestOutputDir

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

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

androidx.benchmark.cpuEventCounter.enable (eksperimental)

Menghitung peristiwa CPU yang ditentukan di androidx.benchmark.cupEventCounter.events. Memerlukan akses root.

  • Jenis argumen: boolean
  • Default: salah

androidx.benchmark.cpuEventCounter.events (eksperimental)

Menentukan jenis peristiwa CPU yang akan dihitung. Untuk menggunakan argumen ini, androidx.benchmark.cpuEventCounter.enable harus ditetapkan ke true.

  • Jenis argumen: daftar string yang dipisahkan koma
  • Opsi yang tersedia:
    • Instructions
    • CPUCycles
    • L1DReferences
    • L1DMisses
    • BranchInstructions
    • BranchMisses
    • L1IReferences
    • L1IMisses
  • Default: Instructions, CpuCycles, BranchMisses

androidx.benchmark.dryRunMode.enable

Memungkinkan Anda menjalankan benchmark dalam satu loop untuk memastikan bahwa benchmark berfungsi dengan benar.

Ini artinya:

  • Error konfigurasi tidak diterapkan (misalnya, untuk memudahkan pengujian kebenaran reguler pada emulator)
  • Benchmark hanya menjalankan satu loop, tanpa pemanasan
  • Pengukuran dan rekaman aktivitas tidak diambil untuk mengurangi runtime

Hal ini mengoptimalkan throughput pengujian dan memvalidasi logika benchmark berdasarkan akurasi build dan pengukuran.

  • Jenis argumen: boolean
  • Default: false

androidx.benchmark.iterations

Mengganti jumlah iterasi target berdasarkan waktu untuk memastikan jumlah pekerjaan yang konsisten. Hal ini biasanya hanya berguna dengan mengaktifkan pembuatan profil untuk membantu memastikan kuantitas pekerjaan yang konsisten dilakukan dalam rekaman aktivitas pembuatan profil saat membandingkan berbagai implementasi atau eksekusi. Dalam skenario lain, hal ini mungkin mengurangi akurasi atau stabilitas pengukuran.

  • Jenis argumen: integer
  • 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.output.enable

Mengaktifkan penulisan file JSON hasil ke penyimpanan eksternal.

  • Jenis argumen: boolean
  • Default: true

androidx.benchmark.profiling.mode

Memungkinkan pengambilan file rekaman aktivitas saat menjalankan benchmark. Lihat opsi yang tersedia di Membuat Profil Microbenchmark.

Perhatikan bahwa beberapa versi Android OS tidak mendukung pelacakan metode tanpa pengukuran berikutnya terpengaruh. Microbenchmark menampilkan pengecualian untuk mencegah hal ini, jadi gunakan argumen default untuk merekam rekaman aktivitas metode hanya jika aman untuk melakukannya. Lihat Masalah #316174880.

  • Jenis argumen: string
  • Opsi yang tersedia:
    • MethodTracing
    • StackSampling
    • None
  • Setelan default: Versi MethodTracing yang aman yang hanya merekam pelacakan metode jika perangkat dapat melakukannya tanpa memengaruhi pengukuran.

androidx.benchmark.suppressErrors

Menerima daftar error yang dipisahkan koma agar diubah menjadi peringatan.

  • Jenis argumen: daftar string
  • Opsi yang tersedia:
    • DEBUGGABLE
    • LOW-BATTERY
    • EMULATOR
    • CODE-COVERAGE
    • UNLOCKED
    • SIMPLEPERF
    • ACTIVITY-MISSING
  • Default: daftar kosong