กำหนดค่าลักษณะการทำงานของไลบรารีด้วยอาร์กิวเมนต์การตรวจสอบต่อไปนี้
คุณจะเพิ่มการตั้งค่าเหล่านี้ลงในการกำหนดค่า Gradle หรือใช้การตั้งค่าโดยตรงเมื่อเรียกใช้การตรวจสอบจากบรรทัดคำสั่งก็ได้ หากต้องการตั้งค่าอาร์กิวเมนต์เหล่านี้
สำหรับการทดสอบทั้งหมดใน Android Studio และการทดสอบที่เรียกใช้จากบรรทัดคำสั่ง ให้เพิ่มอาร์กิวเมนต์ลงใน
testInstrumentationRunnerArguments
android {
defaultConfig {
// ...
testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
}
}
นอกจากนี้ คุณยังตั้งค่าอาร์กิวเมนต์การวัดประสิทธิภาพเมื่อเรียกใช้การเปรียบเทียบจาก Android Studio ได้ด้วย หากต้องการเปลี่ยนอาร์กิวเมนต์ ให้ทำดังนี้
- แก้ไขการกำหนดค่าการเรียกใช้โดยคลิกแก้ไข แล้วคลิกการกำหนดค่า
รูปที่ 1 แก้ไขการกำหนดค่าการเรียกใช้ - แก้ไขอาร์กิวเมนต์การวัดโดยคลิก
รูปที่ 2 แก้ไขอาร์กิวเมนต์การวัดผล
เพิ่มเติมตาม
อาร์กิวเมนต์การวัด
- เพิ่มอาร์กิวเมนต์การวัดผลที่จำเป็นโดยคลิก
รูปที่ 3 เพิ่มอาร์กิวเมนต์ การวัดผลที่จำเป็น
เพิ่มในส่วนการวัดผล
พารามิเตอร์เพิ่มเติม
หากเรียกใช้ Macrobenchmark จากบรรทัดคำสั่ง ให้ใช้ -P
android.testInstrumentationRunnerArguments.[name of the argument]
./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
หากเรียกใช้คำสั่ง am instrument
โดยตรง (ซึ่งอาจเกิดขึ้นในสภาพแวดล้อมการทดสอบ CI) ให้ส่งอาร์กิวเมนต์ไปยัง am instrument
ด้วย -e
ดังนี้
adb shell am instrument -e androidx.benchmark.enabledRules BaselineProfile -w com.example.macrobenchmark/androidx.test.runner.AndroidJUnitRunner
ดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าการเปรียบเทียบใน CI ได้ที่ การเปรียบเทียบใน CI
androidx.benchmark.compilation.enabled
ช่วยให้คุณปิดใช้การคอมไพล์ระหว่างการทำซ้ำแต่ละครั้งของการเปรียบเทียบได้ โดยค่าเริ่มต้น ระบบจะติดตั้งแอปพลิเคชันเป้าหมายอีกครั้งและคอมไพล์อีกครั้งระหว่างการทดสอบแต่ละครั้ง เพื่อให้เป็นไปตาม CompilationMode
ที่ส่งไปยัง measureRepeated
การปิดใช้ตัวเลือกนี้จะช่วยให้คุณข้ามทั้ง
การติดตั้งใหม่และการคอมไพล์ได้ หากคุณต้องการคอมไพล์แอปเป้าหมาย
อย่างเต็มรูปแบบเพียงครั้งเดียวก่อนเรียกใช้ชุดทดสอบ และเรียกใช้การทดสอบประสิทธิภาพทั้งหมดกับเป้าหมายที่คอมไพล์อย่างเต็มรูปแบบนั้น
- ประเภทอาร์กิวเมนต์: บูลีน
- ค่าเริ่มต้นคือ
true
androidx.benchmark.dryRunMode.enable
ช่วยให้คุณเรียกใช้การเปรียบเทียบในลูปเดียวเพื่อยืนยันว่าทำงานได้อย่างถูกต้องหรือไม่ คุณสามารถใช้ร่วมกับการทดสอบปกติเป็นส่วนหนึ่งของการยืนยันได้
- ประเภทอาร์กิวเมนต์: บูลีน
- ค่าเริ่มต้นคือ
false
androidx.benchmark.enabledRules
อนุญาตให้กรองการเรียกใช้เป็นการทดสอบประเภทเดียวเท่านั้น ได้แก่ การสร้างโปรไฟล์พื้นฐานหรือ การทดสอบมาโครเบนช์มาร์ก ระบบยังรองรับรายการที่คั่นด้วยคอมมาด้วย
- ประเภทอาร์กิวเมนต์: สตริง
- ตัวเลือกที่มี
Macrobenchmark
BaselineProfile
- ค่าเริ่มต้นคือ ไม่ได้ระบุ
androidx.benchmark.fullTracing.enable
เปิดใช้ androidx.tracing.perfetto
Tracepoint เช่น การติดตามการคอมโพสของ Jetpack Compose
คุณต้องตั้งค่าโปรเจ็กต์เพื่อให้สามารถบันทึกการติดตามองค์ประกอบ จากการเปรียบเทียบได้ ดูข้อมูลเพิ่มเติมได้ที่บันทึกการติดตามด้วย Jetpack Macrobenchmark
- ประเภทอาร์กิวเมนต์: บูลีน
- ค่าเริ่มต้น:
false
androidx.benchmark.killExistingPerfettoRecordings
โดยค่าเริ่มต้น Benchmark จะหยุดการบันทึก Perfetto (การติดตามระบบ) ที่มีอยู่เมื่อ
เริ่มการติดตามใหม่เพื่อลดการรบกวน หากต้องการปิดใช้ลักษณะการทำงานนี้ ให้ส่ง
false
- ประเภทอาร์กิวเมนต์: บูลีน
- ค่าเริ่มต้นคือ
true
androidx.benchmark.profiling.mode
อนุญาตให้บันทึกไฟล์การติดตามขณะเรียกใช้การทดสอบประสิทธิภาพ ตัวเลือกที่มี จะเหมือนกับตัวเลือกสำหรับไลบรารี Microbenchmark ดูข้อมูลเพิ่มเติมได้ที่ คำอธิบายใน สร้างโปรไฟล์ Microbenchmark
- ประเภทอาร์กิวเมนต์: สตริง
- ตัวเลือกที่มี
MethodTracing
StackSampling
None
- ค่าเริ่มต้นคือ
None
androidx.benchmark.startupProfiles.enable
ช่วยให้คุณปิดใช้การสร้างโปรไฟล์เริ่มต้นระหว่างการเปรียบเทียบได้
- ประเภทอาร์กิวเมนต์: บูลีน
- ค่าเริ่มต้นคือ
true
androidx.benchmark.suppressErrors
ยอมรับรายการข้อผิดพลาดที่คั่นด้วยคอมมาเพื่อเปลี่ยนเป็นคำเตือน
- ประเภทอาร์กิวเมนต์: รายการสตริง
ตัวเลือกที่มี
DEBUGGABLE
ข้อผิดพลาด
DEBUGGABLE
แสดงว่าแพ็กเกจเป้าหมายทำงานโดยมีdebuggable=true
ในไฟล์ Manifest ซึ่งจะลดประสิทธิภาพขณะรันไทม์ลงอย่างมาก เพื่อรองรับฟีเจอร์การแก้ไขข้อบกพร่อง หากต้องการหลีกเลี่ยงข้อผิดพลาดนี้ ให้เรียกใช้ การทดสอบประสิทธิภาพด้วยdebuggable=false
อาร์กิวเมนต์ที่แก้ไขข้อบกพร่องได้ส่งผลต่อ ความเร็วในการดำเนินการในลักษณะที่การปรับปรุงเกณฑ์มาตรฐานอาจไม่ส่งผล ต่อประสบการณ์ของผู้ใช้จริง หรืออาจทำให้ประสิทธิภาพของรุ่นที่เผยแพร่ลดลงLOW-BATTERY
เมื่อแบตเตอรี่เหลือน้อย อุปกรณ์มักจะลดประสิทธิภาพการทำงานเพื่อประหยัดแบตเตอรี่ที่เหลืออยู่ เช่น โดยการปิดใช้คอร์ขนาดใหญ่ ปัญหานี้จะเกิดขึ้นแม้ว่าจะเสียบปลั๊ก อุปกรณ์อยู่ก็ตาม โปรดระงับข้อผิดพลาดนี้เฉพาะในกรณีที่คุณตั้งใจ สร้างโปรไฟล์แอปที่มีประสิทธิภาพลดลง
EMULATOR
ข้อผิดพลาด
EMULATOR
จะแจ้งให้คุณทราบว่าการเปรียบเทียบกำลังทำงานในโปรแกรมจำลอง ซึ่งไม่ใช่ตัวแทนของอุปกรณ์ของผู้ใช้จริง การปรับปรุงการเปรียบเทียบโปรแกรมจำลองอาจไม่ส่งผลต่อประสบการณ์ของผู้ใช้จริง หรืออาจทำให้ประสิทธิภาพของอุปกรณ์จริงลดลง คุณควรใช้อุปกรณ์จริงเพื่อทำการทดสอบประสิทธิภาพแทน โปรดระงับข้อผิดพลาดนี้ด้วยความระมัดระวังเป็นอย่างยิ่งNOT-PROFILEABLE
แพ็กเกจเป้าหมาย
$packageName
ทำงานโดยไม่มี<profileable shell=true>
ต้องเปิดใช้ Profileable ใน Android 10 และ 11 เพื่อให้ Macrobenchmark จับข้อมูลการติดตามโดยละเอียดจากกระบวนการเป้าหมายได้ เช่น ส่วนการติดตามระบบที่กําหนดไว้ในแอปหรือ ไลบรารี โปรดระงับข้อผิดพลาดนี้ด้วยความระมัดระวังเป็นอย่างยิ่งMETHOD-TRACING-ENABLED
การเรียกใช้ Macrobenchmark สำหรับแอปที่กำลังเปรียบเทียบมีการเปิดใช้การติดตามเมธอด ซึ่งจะทำให้ VM ทำงานช้ากว่าปกติ ดังนั้นให้พิจารณา เมตริกจากไฟล์การติดตามในเชิงเปรียบเทียบเท่านั้น เช่น เปรียบเทียบว่าการเรียกใช้ครั้งแรกเร็วกว่าการเรียกใช้ครั้งที่ 2 มากน้อยเพียงใด การระงับข้อผิดพลาดนี้อาจทำให้ผลลัพธ์ไม่ถูกต้องหากคุณเปรียบเทียบการเปรียบเทียบสำหรับบิลด์ที่มีตัวเลือกการติดตามเมธอดที่แตกต่างกัน
ค่าเริ่มต้น: รายการที่ว่างเปล่า
additionalTestOutputDir
กำหนดค่าตำแหน่งที่จะบันทึกรายงานการเปรียบเทียบ JSON และผลลัพธ์การจัดทำโปรไฟล์ในอุปกรณ์
- ประเภทอาร์กิวเมนต์: สตริงเส้นทาง
- ค่าเริ่มต้นคือ ไดเรกทอรีภายนอกของ APK สำหรับทดสอบ
ผู้ฟัง
คุณอาจได้รับผลการเปรียบเทียบที่ไม่สอดคล้องกันหากมีการเรียกใช้งานเบื้องหลังที่ไม่เกี่ยวข้องขณะที่การเปรียบเทียบกำลังทำงาน
หากต้องการปิดใช้การทำงานเบื้องหลังระหว่างการเปรียบเทียบ ให้ตั้งค่าlistener
ประเภทอาร์กิวเมนต์ของเครื่องมือเป็น
androidx.benchmark.junit4.SideEffectRunListener
- ประเภทอาร์กิวเมนต์: สตริง
- ตัวเลือกที่มี
androidx.benchmark.junit4.SideEffectRunListener
- ค่าเริ่มต้น: ไม่ได้ระบุ
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- อาร์กิวเมนต์การวัดประสิทธิภาพขนาดเล็ก
- สร้างโปรไฟล์พื้นฐาน
- ไลบรารี JankStats