กําหนดค่าลักษณะการทํางานของ Microbenchmark ด้วยอาร์กิวเมนต์เครื่องมือวัดผลต่อไปนี้ คุณสามารถเพิ่มรายการเหล่านี้ลงในการกำหนดค่า Gradle หรือนำไปใช้โดยตรงเมื่อเรียกใช้เครื่องมือวัดประสิทธิภาพจากบรรทัดคำสั่งก็ได้ หากต้องการตั้งค่าอาร์กิวเมนต์เหล่านี้สำหรับการทดสอบด้วย Android Studio และการทดสอบบรรทัดคำสั่งทั้งหมด ให้เพิ่มลงใน testInstrumentationRunnerArguments
android {
defaultConfig {
// ...
testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
}
}
นอกจากนี้ คุณยังตั้งค่าอาร์กิวเมนต์เครื่องมือวัดประสิทธิภาพได้เมื่อเรียกใช้การเปรียบเทียบประสิทธิภาพจาก Android Studio หากต้องการเปลี่ยนอาร์กิวเมนต์ ให้ทําดังนี้
- แก้ไขการกําหนดค่าการเรียกใช้โดยคลิกแก้ไข แล้วเลือกการกําหนดค่าที่ต้องการแก้ไข
รูปที่ 1 แก้ไขการกําหนดค่าการเรียกใช้ - แก้ไขอาร์กิวเมนต์ของเครื่องมือวัดผลโดยคลิก
รูปที่ 2 แก้ไขอาร์กิวเมนต์เครื่องมือวัด
ข้างช่องอาร์กิวเมนต์ของเครื่องมือวัดผล
- คลิก
รูปที่ 3 เพิ่มอาร์กิวเมนต์เครื่องมือวัด
แล้วเพิ่มอาร์กิวเมนต์เครื่องมือวัดที่จำเป็น
หากเรียกใช้การทดสอบประสิทธิภาพจากบรรทัดคำสั่ง ให้ใช้ -P
android.testInstrumentationRunnerArguments.[name of the argument]
ดังนี้
./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.profiling.mode=StackSampling
หากคุณเรียกใช้คําสั่ง am instrument โดยตรง (ซึ่งอาจเกิดขึ้นในสภาพแวดล้อมการทดสอบ CI) ให้ส่งอาร์กิวเมนต์ไปยัง am instrument
ด้วย -e
ดังนี้
adb shell am instrument -e androidx.benchmark.profiling.mode StackSampling -w com.example.macrobenchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner
ดูข้อมูลเพิ่มเติมเกี่ยวกับการกําหนดค่าการเปรียบเทียบใน CI ได้ที่การเปรียบเทียบใน CI
additionalTestOutputDir
กําหนดค่าตําแหน่งที่จะบันทึกรายงานการเปรียบเทียบประสิทธิภาพ JSON และผลลัพธ์การโปรไฟล์ในอุปกรณ์
- ประเภทอาร์กิวเมนต์: สตริงเส้นทางไฟล์
- ค่าเริ่มต้น: ไดเรกทอรีภายนอกของ APK การทดสอบ
androidx.benchmark.cpuEventCounter.enable (ทดลอง)
นับเหตุการณ์ CPU ที่ระบุใน androidx.benchmark.cupEventCounter.events
ต้องใช้สิทธิ์เข้าถึงระดับรูท
- ประเภทอาร์กิวเมนต์: บูลีน
- ค่าเริ่มต้น: เท็จ
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.iterations
ลบล้างจํานวนการวนซ้ำเป้าหมายที่ทำงานตามเวลาเพื่อช่วยในการตรวจสอบปริมาณงานที่สอดคล้องกัน โดยปกติแล้ว ตัวเลือกนี้จะมีประโยชน์เฉพาะเมื่อเปิดใช้การโปรไฟล์เท่านั้น เพื่อช่วยตรวจสอบว่ามีการทํางานในปริมาณที่สอดคล้องกันภายในการติดตามการโปรไฟล์เมื่อเปรียบเทียบการติดตั้งใช้งานหรือการเรียกใช้ที่แตกต่างกัน ในสถานการณ์อื่นๆ การดำเนินการนี้อาจลดความแม่นยำหรือความเสถียรของการวัด
- ประเภทอาร์กิวเมนต์: จํานวนเต็ม
- ค่าเริ่มต้น: ไม่ระบุ
androidx.benchmark.junit4.SideEffectRunListener
คุณอาจได้รับผลลัพธ์การเปรียบเทียบที่ไม่สอดคล้องกันหากมีการดำเนินการงานเบื้องหลังที่ไม่เกี่ยวข้องขณะที่การเปรียบเทียบกำลังทำงานอยู่
หากต้องการปิดใช้การทํางานในเบื้องหลังระหว่างการเปรียบเทียบ ให้ตั้งค่าlistener
ประเภทอาร์กิวเมนต์เครื่องมือวัดเป็น
androidx.benchmark.junit4.SideEffectRunListener
- ประเภทอาร์กิวเมนต์: สตริง
- ตัวเลือกที่มี ได้แก่
androidx.benchmark.junit4.SideEffectRunListener
- ค่าเริ่มต้น: ไม่ระบุ
androidx.benchmark.output.enable
เปิดใช้การเขียนไฟล์ JSON ผลลัพธ์ไปยังที่จัดเก็บข้อมูลภายนอก
- ประเภทอาร์กิวเมนต์: บูลีน
- ค่าเริ่มต้น:
true
androidx.benchmark.profiling.mode
อนุญาตให้บันทึกไฟล์การติดตามขณะทำการทดสอบประสิทธิภาพ ดูตัวเลือกที่มีได้ในโปรไฟล์การทดสอบประสิทธิภาพระดับไมโคร
โปรดทราบว่าระบบปฏิบัติการ Android บางเวอร์ชันไม่รองรับการติดตามเมธอดโดยไม่ส่งผลกระทบต่อการวัดผลในภายหลัง Microbenchmark จะแสดงข้อยกเว้นเพื่อป้องกันปัญหานี้ ดังนั้นให้ใช้อาร์กิวเมนต์เริ่มต้นเพื่อบันทึกการติดตามเมธอดเฉพาะในกรณีที่ปลอดภัยเท่านั้น ดูปัญหา #316174880
- ประเภทอาร์กิวเมนต์: สตริง
- ตัวเลือกที่มี ได้แก่
MethodTracing
StackSampling
None
- ค่าเริ่มต้นคือ:
MethodTracing
เวอร์ชันที่ปลอดภัยซึ่งจะบันทึกการติดตามเมธอดเฉพาะในกรณีที่อุปกรณ์ทําได้โดยไม่ส่งผลต่อการวัด
androidx.benchmark.suppressErrors
ยอมรับรายการข้อผิดพลาดที่คั่นด้วยคอมมาเพื่อเปลี่ยนเป็นคำเตือน
- ประเภทอาร์กิวเมนต์: รายการสตริง
- ตัวเลือกที่มี
DEBUGGABLE
LOW-BATTERY
EMULATOR
CODE-COVERAGE
UNLOCKED
SIMPLEPERF
ACTIVITY-MISSING
- ค่าเริ่มต้น: รายการว่าง
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- อาร์กิวเมนต์เครื่องมือวัดประสิทธิภาพมาโคร
- โปรไฟล์การเปรียบเทียบประสิทธิภาพระดับไมโคร
- สร้างโปรไฟล์พื้นฐาน {:#creating-profile-rules}