อาร์กิวเมนต์ของเครื่องมือวัดประสิทธิภาพระดับไมโคร

กำหนดค่าลักษณะการทำงานของ Microbenchmark ด้วยอาร์กิวเมนต์การวัดต่อไปนี้ คุณจะเพิ่มการตั้งค่าเหล่านี้ลงในการกำหนดค่า Gradle หรือใช้การตั้งค่าโดยตรงเมื่อเรียกใช้การตรวจสอบจากบรรทัดคำสั่งก็ได้ หากต้องการตั้งค่าอาร์กิวเมนต์เหล่านี้ สำหรับการทดสอบทั้งหมดใน Android Studio และการทดสอบที่เรียกใช้จากบรรทัดคำสั่ง ให้เพิ่มอาร์กิวเมนต์ลงใน testInstrumentationRunnerArguments

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

นอกจากนี้ คุณยังตั้งค่าอาร์กิวเมนต์การวัดประสิทธิภาพเมื่อเรียกใช้การเปรียบเทียบจาก Android Studio ได้ด้วย หากต้องการเปลี่ยนอาร์กิวเมนต์ ให้ทำดังนี้

  1. แก้ไขการกำหนดค่าการเรียกใช้โดยคลิกแก้ไข แล้วเลือกการกำหนดค่าที่ต้องการแก้ไข
    รูปที่ 1 แก้ไขการกำหนดค่าการเรียกใช้
  2. แก้ไขอาร์กิวเมนต์การวัดโดยคลิก ข้างช่องอาร์กิวเมนต์ การวัด
    รูปที่ 2 แก้ไขอาร์กิวเมนต์การวัด
  3. คลิก แล้วเพิ่มอาร์กิวเมนต์การวัดผลที่จำเป็น
    รูปที่ 3 เพิ่มอาร์กิวเมนต์การวัด

หากเรียกใช้การทดสอบประสิทธิภาพจากบรรทัดคำสั่ง ให้ใช้ -P android.testInstrumentationRunnerArguments.[name of the argument]

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

หากเรียกใช้คำสั่งเครื่องมือโดยตรง (ซึ่งอาจเป็นกรณีในสภาพแวดล้อมการทดสอบ CI ) ให้ส่งอาร์กิวเมนต์ไปยัง am instrument ด้วย -e ดังนี้

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าการเปรียบเทียบใน CI ได้ที่ การเปรียบเทียบใน CI

androidx.benchmark.cpuEventCounter.enable (ทดลอง)

นับเหตุการณ์ CPU ที่ระบุใน androidx.benchmark.cupEventCounter.events ต้องมีสิทธิ์เข้าถึงระดับรูท

  • ประเภทอาร์กิวเมนต์: บูลีน
  • ค่าเริ่มต้นคือ false

androidx.benchmark.cpuEventCounter.events (ทดลอง)

ระบุประเภทเหตุการณ์ CPU ที่จะนับ หากต้องการใช้อาร์กิวเมนต์นี้ ต้องตั้งค่า androidx.benchmark.cpuEventCounter.enable เป็น true

  • ประเภทอาร์กิวเมนต์: รายการสตริงที่คั่นด้วยคอมมา
  • ตัวเลือกที่มี
    • Instructions
    • CPUCycles
    • L1DReferences
    • L1DMisses
    • BranchInstructions
    • BranchMisses
    • L1IReferences
    • L1IMisses
  • ค่าเริ่มต้น: Instructions, CpuCycles, BranchMisses

androidx.benchmark.dryRunMode.enable

ช่วยให้คุณเรียกใช้การเปรียบเทียบในลูปเดียวเพื่อยืนยันว่าทำงานได้อย่างถูกต้อง

ซึ่งหมายความว่า

  • ข้อผิดพลาดในการกำหนดค่าจะไม่ได้รับการบังคับใช้ (เช่น เพื่อให้เรียกใช้การทดสอบความถูกต้องปกติในโปรแกรมจำลองได้ง่ายขึ้น)
  • การเปรียบเทียบจะทำงานเพียงลูปเดียวโดยไม่มีการวอร์มอัป
  • ระบบจะไม่บันทึกการวัดและร่องรอยเพื่อลดเวลาในการรันไทม์

ซึ่งจะเพิ่มประสิทธิภาพสำหรับปริมาณการทดสอบและตรวจสอบตรรกะการเปรียบเทียบผ่านการสร้าง และความถูกต้องของการวัด

  • ประเภทอาร์กิวเมนต์: บูลีน
  • ค่าเริ่มต้นคือ false

androidx.benchmark.killExistingPerfettoRecordings

โดยค่าเริ่มต้น Benchmark จะหยุดการบันทึก Perfetto (การติดตามระบบ) ที่มีอยู่เมื่อ เริ่มการติดตามใหม่เพื่อลดการรบกวน หากต้องการปิดใช้ลักษณะการทำงานนี้ ให้ส่ง false

  • ประเภทอาร์กิวเมนต์: บูลีน
  • ค่าเริ่มต้นคือ true

androidx.benchmark.output.enable

เปิดใช้การเขียนไฟล์ JSON ผลลัพธ์ไปยังที่จัดเก็บข้อมูลภายนอก

  • ประเภทอาร์กิวเมนต์: บูลีน
  • ค่าเริ่มต้นคือ true

androidx.benchmark.profiling.mode

อนุญาตให้บันทึกไฟล์การติดตามขณะเรียกใช้การทดสอบประสิทธิภาพ ดูตัวเลือกที่มีได้ที่สร้างโปรไฟล์ Microbenchmark

โปรดทราบว่า Android OS บางเวอร์ชันไม่รองรับการติดตามเมธอดโดยไม่ส่งผลกระทบต่อการวัดผลในภายหลัง Microbenchmark จะส่งข้อยกเว้น เพื่อป้องกันปัญหานี้ ดังนั้นให้อาร์กิวเมนต์เริ่มต้นเพื่อบันทึกการติดตามเมธอดเฉพาะเมื่อ ทำได้อย่างปลอดภัย ดูปัญหา #316174880

  • ประเภทอาร์กิวเมนต์: สตริง
  • ตัวเลือกที่มี
    • MethodTracing
    • StackSampling
    • None
  • ค่าเริ่มต้น: เวอร์ชันที่ปลอดภัยของ MethodTracing ซึ่งจะบันทึกเฉพาะร่องรอยของเมธอดหากอุปกรณ์ทำได้โดยไม่ส่งผลต่อการวัด

androidx.benchmark.suppressErrors

ยอมรับรายการข้อผิดพลาดที่คั่นด้วยคอมมาเพื่อเปลี่ยนเป็นคำเตือน

  • ประเภทอาร์กิวเมนต์: รายการสตริง
  • ตัวเลือกที่มี
    • DEBUGGABLE
    • LOW-BATTERY
    • EMULATOR
    • CODE-COVERAGE
    • UNLOCKED
    • SIMPLEPERF
    • ACTIVITY-MISSING
  • ค่าเริ่มต้นคือ รายการที่ว่างเปล่า

additionalTestOutputDir

กำหนดค่าตำแหน่งที่จะบันทึกรายงานการเปรียบเทียบ JSON และผลลัพธ์การจัดทำโปรไฟล์ในอุปกรณ์

  • ประเภทอาร์กิวเมนต์: สตริงเส้นทางของไฟล์
  • ค่าเริ่มต้นคือ ไดเรกทอรีภายนอกของ APK สำหรับทดสอบ

ผู้ฟัง

คุณอาจได้รับผลการเปรียบเทียบที่ไม่สอดคล้องกันหากมีการเรียกใช้งานเบื้องหลังที่ไม่เกี่ยวข้องขณะที่การเปรียบเทียบกำลังทำงาน

หากต้องการปิดใช้การทำงานเบื้องหลังระหว่างการเปรียบเทียบ ให้ตั้งค่าlistener ประเภทอาร์กิวเมนต์ของเครื่องมือเป็น androidx.benchmark.junit4.SideEffectRunListener

  • ประเภทอาร์กิวเมนต์: สตริง
  • ตัวเลือกที่มี
    • androidx.benchmark.junit4.SideEffectRunListener
  • ค่าเริ่มต้น: ไม่ได้ระบุ