กำหนดค่าลักษณะการทำงานของ 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
หากเรียกใช้คำสั่งเครื่องมือโดยตรง (ซึ่งอาจเป็นกรณีในสภาพแวดล้อมการทดสอบ 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
- ค่าเริ่มต้น: ไม่ได้ระบุ
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- อาร์กิวเมนต์การวัดประสิทธิภาพมาโคร
- สร้างโปรไฟล์ Microbenchmark
- สร้างโปรไฟล์พื้นฐาน {:#creating-profile-rules}