กําหนดค่าลักษณะการทํางานของไลบรารีด้วยอาร์กิวเมนต์เครื่องมือวัดผลต่อไปนี้ คุณสามารถเพิ่มรายการเหล่านี้ลงในการกำหนดค่า Gradle หรือนำไปใช้โดยตรงเมื่อเรียกใช้เครื่องมือวัดประสิทธิภาพจากบรรทัดคำสั่งก็ได้ หากต้องการตั้งค่าอาร์กิวเมนต์เหล่านี้สำหรับการทดสอบ Android Studio และการทดสอบบรรทัดคำสั่งทั้งหมด ให้เพิ่มลงใน testInstrumentationRunnerArguments
android {
defaultConfig {
// ...
testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
}
}
นอกจากนี้ คุณยังตั้งค่าอาร์กิวเมนต์เครื่องมือวัดเมื่อเรียกใช้การเปรียบเทียบประสิทธิภาพจาก Android Studio ได้ด้วย หากต้องการเปลี่ยนอาร์กิวเมนต์ ให้ทําดังนี้
- แก้ไขการกําหนดค่าการเรียกใช้โดยคลิกแก้ไข แล้วคลิกการกําหนดค่า
- แก้ไขอาร์กิวเมนต์เครื่องมือวัดผลโดยคลิก เพิ่มเติมข้างอาร์กิวเมนต์เครื่องมือวัดผล
- เพิ่มอาร์กิวเมนต์เครื่องมือวัดที่จำเป็นโดยคลิก Add ในส่วน Instrumentation Extra Params
หากเรียกใช้การทดสอบประสิทธิภาพแบบมาโครจากบรรทัดคำสั่ง ให้ใช้ -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
การปิดใช้ตัวเลือกนี้จะช่วยให้คุณข้ามทั้งการติดตั้งอีกครั้งและการคอมไพล์ได้ เช่น หากต้องการคอมไพล์แอปเป้าหมายอย่างสมบูรณ์ 1 ครั้งก่อนเรียกใช้ชุดทดสอบและเรียกใช้การเปรียบเทียบทั้งหมดกับเป้าหมายที่คอมไพล์อย่างสมบูรณ์แล้ว
- ประเภทอาร์กิวเมนต์: บูลีน
- ค่าเริ่มต้นคือ:
true
androidx.benchmark.dryRunMode.enable
ช่วยให้คุณเรียกใช้การเปรียบเทียบในลูปเดียวเพื่อยืนยันว่าการเปรียบเทียบทํางานได้อย่างถูกต้อง คุณสามารถใช้การทดสอบนี้ร่วมกับการทดสอบปกติเป็นส่วนหนึ่งของการยืนยันได้
- ประเภทอาร์กิวเมนต์: บูลีน
- ค่าเริ่มต้น:
false
androidx.benchmark.enabledRules
อนุญาตให้กรองการเรียกใช้เป็นการทดสอบเพียงประเภทเดียว ได้แก่ การสร้างโปรไฟล์พื้นฐานหรือการทดสอบการวัดประสิทธิภาพแบบแมโคร ระบบยังรองรับรายการที่คั่นด้วยคอมมาด้วย
- ประเภทอาร์กิวเมนต์: สตริง
- ตัวเลือกที่มี
Macrobenchmark
BaselineProfile
- ค่าเริ่มต้น: ไม่ระบุ
androidx.benchmark.junit4.SideEffectRunListener
คุณอาจได้รับผลลัพธ์การเปรียบเทียบที่ไม่สอดคล้องกันหากมีการดำเนินการงานเบื้องหลังที่ไม่เกี่ยวข้องขณะที่การเปรียบเทียบกำลังทำงานอยู่
หากต้องการปิดใช้การทํางานในเบื้องหลังระหว่างการเปรียบเทียบ ให้ตั้งค่าlistener
ประเภทอาร์กิวเมนต์เครื่องมือวัดเป็น
androidx.benchmark.junit4.SideEffectRunListener
- ประเภทอาร์กิวเมนต์: สตริง
- ตัวเลือกที่มี ได้แก่
androidx.benchmark.junit4.SideEffectRunListener
- ค่าเริ่มต้น: ไม่ระบุ
androidx.benchmark.fullTracing.enable
เปิดใช้จุดติดตาม androidx.tracing.perfetto
เช่น การติดตามการคอมโพสิชันของ Jetpack Compose
คุณต้องตั้งค่าโปรเจ็กต์เพื่อให้สามารถบันทึกการติดตามองค์ประกอบจากข้อมูลเปรียบเทียบได้ ดูข้อมูลเพิ่มเติมได้ที่บันทึกการติดตามด้วย Jetpack การทดสอบประสิทธิภาพระดับมาโคร
- ประเภทอาร์กิวเมนต์: บูลีน
- ค่าเริ่มต้นคือ
false
androidx.benchmark.profiling.mode
อนุญาตให้บันทึกไฟล์การติดตามขณะทำการทดสอบประสิทธิภาพ ตัวเลือกที่ใช้ได้จะเหมือนกับตัวเลือกสำหรับไลบรารีการทดสอบประสิทธิภาพแบบละเอียด ดูข้อมูลเพิ่มเติมได้ที่คำอธิบายในหัวข้อโปรไฟล์การทดสอบประสิทธิภาพแบบละเอียด
- ประเภทอาร์กิวเมนต์: สตริง
- ตัวเลือกที่มี ได้แก่
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>
ต้องมีโปรไฟล์ได้ใน Android 10 และ 11 เพื่อให้การทดสอบประสิทธิภาพแบบแมโครจับข้อมูลการติดตามโดยละเอียดจากกระบวนการเป้าหมาย เช่น ส่วนการติดตามระบบที่กําหนดในแอปหรือไลบรารี ระงับข้อผิดพลาดนี้ด้วยความระมัดระวังอย่างยิ่งMETHOD-TRACING-ENABLED
การเรียกใช้การเปรียบเทียบประสิทธิภาพแบบมาโครสําหรับแอปที่เปรียบเทียบประสิทธิภาพเปิดใช้การติดตามเมธอดไว้ ซึ่งจะทำให้ VM ทำงานช้ากว่าปกติ ดังนั้นให้พิจารณาเฉพาะเมตริกจากไฟล์ติดตามในแง่สัมพัทธ์ เช่น การเปรียบเทียบความเร็วในการเรียกใช้ครั้งแรกกับการเรียกใช้ครั้งที่ 2 การระงับข้อผิดพลาดนี้อาจส่งผลให้ผลลัพธ์ไม่ถูกต้องหากคุณเปรียบเทียบการเปรียบเทียบสำหรับบิลด์ที่มีตัวเลือกการติดตามเมธอดที่แตกต่างกัน
ค่าเริ่มต้น: รายการว่าง
additionalTestOutputDir
กําหนดค่าตําแหน่งที่จะบันทึกรายงานการเปรียบเทียบประสิทธิภาพ JSON และผลลัพธ์การโปรไฟล์ในอุปกรณ์
- ประเภทอาร์กิวเมนต์: สตริงเส้นทาง
- ค่าเริ่มต้น: ไดเรกทอรีภายนอกของ APK การทดสอบ
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- อาร์กิวเมนต์เครื่องมือวัดประสิทธิภาพระดับไมโคร
- สร้างโปรไฟล์พื้นฐาน
- ไลบรารี JankStats