เมตริกเป็นข้อมูลประเภทหลักที่ดึงมาจากเกณฑ์มาตรฐาน โดยจะส่งไปยังmeasureRepeated
ฟังก์ชันเป็น List ซึ่งช่วยให้คุณระบุ
เมตริกที่วัดได้หลายรายการพร้อมกัน คุณต้องระบุเมตริกอย่างน้อย 1 ประเภทเพื่อให้เกณฑ์มาตรฐานทำงานได้
ข้อมูลโค้ดต่อไปนี้จะบันทึกเมตริกการกำหนดเวลาเฟรมและส่วนการติดตามที่กำหนดเอง
Kotlin
benchmarkRule.measureRepeated( packageName = TARGET_PACKAGE, metrics = listOf( FrameTimingMetric(), TraceSectionMetric("RV CreateView"), TraceSectionMetric("RV OnBindView"), ), iterations = 5, // ... )
Java
benchmarkRule.measureRepeated( TARGET_PACKAGE, // packageName Arrays.asList( // metrics new StartupTimingMetric(), new TraceSectionMetric("RV CreateView"), new TraceSectionMetric("RV OnBindView"), ), 5, // Iterations // ... );
ในตัวอย่างนี้ RV CreateView
และ RV OnBindView
คือรหัสของบล็อกที่ติดตามได้ซึ่งกำหนดไว้ใน
RecyclerView ซอร์สโค้ดสำหรับเมธอดเป็นตัวอย่างวิธีที่คุณกำหนดบล็อกที่ติดตามได้ภายในโค้ดของคุณเองcreateViewHolder()
StartupTimingMetric, TraceSectionMetric, FrameTimingMetric และ PowerMetric จะกล่าวถึงโดยละเอียดในส่วนต่างๆ ของเอกสารนี้
หากต้องการดูรายการเมตริกทั้งหมด โปรดดูคลาสย่อยของ Metric
ระบบจะแสดงผลลัพธ์ของเกณฑ์มาตรฐานใน Android Studio ดังที่แสดงในรูปที่ 1 หากกำหนดเมตริกไว้หลายรายการ ระบบจะรวมเมตริกทั้งหมดไว้ในเอาต์พุต
TraceSectionMetric และ
FrameTimingMetric.StartupTimingMetric
StartupTimingMetric
จะบันทึกเมตริกการกำหนดเวลาการเริ่มต้นแอปด้วยค่าต่อไปนี้
timeToInitialDisplayMs: ระยะเวลาตั้งแต่ระบบได้รับ Intent เปิดแอปจนถึงเวลาที่แสดงผลเฟรมแรกของปลายทางActivitytimeToFullDisplayMs: ระยะเวลาตั้งแต่ระบบได้รับ Intent เปิดแอปจนถึงเวลาที่แอปรายงานว่าแสดงผลเสร็จสมบูรณ์แล้วโดยใช้reportFullyDrawn()เมธอด การวัดจะหยุดลงเมื่อแสดงผลเฟรมแรกเสร็จสมบูรณ์หลังจากหรือรวมการเรียกreportFullyDrawn()การวัดนี้อาจไม่พร้อมใช้งานใน Android 10 (ระดับ API 29) และเวอร์ชันก่อนหน้า
StartupTimingMetric จะแสดงค่าต่ำสุด ค่ามัธยฐาน และค่าสูงสุดจากการทำซ้ำการเริ่มต้น หากต้องการประเมินการปรับปรุงการเริ่มต้น คุณควรมุ่งเน้นที่ค่ามัธยฐาน เนื่องจากค่าดังกล่าวให้ค่าประมาณที่ดีที่สุดของเวลาเริ่มต้นโดยทั่วไป ดูข้อมูลเพิ่มเติมเกี่ยวกับปัจจัยที่มีส่วนทำให้เวลาเริ่มต้นแอปนานขึ้นได้ที่หัวข้อเวลาเริ่มต้นแอป
StartupTimingMetricFrameTimingMetric
FrameTimingMetric จะบันทึกข้อมูลการกำหนดเวลาจากเฟรมที่สร้างโดยเกณฑ์มาตรฐาน เช่น การเลื่อนหรือภาพเคลื่อนไหว และแสดงค่าต่อไปนี้
frameOverrunMs: ระยะเวลาที่เฟรมหนึ่งๆ แสดงผลช้ากว่ากำหนด ตัวเลขที่เป็นบวกแสดงว่าเฟรมหลุดและมีการกระตุกหรือติดขัดที่มองเห็นได้ ตัวเลขที่เป็นลบแสดงว่าเฟรมแสดงผลเร็วกว่ากำหนด หมายเหตุ: ฟีเจอร์นี้ใช้ได้ใน Android 12 (ระดับ API 31) ขึ้นไปเท่านั้นframeDurationCpuMs: ระยะเวลาที่เฟรมใช้ในการแสดงผลใน CPU ทั้งในเธรด UI และRenderThread
ระบบจะรวบรวมการวัดเหล่านี้ในการกระจายเปอร์เซ็นไทล์ที่ 50, 90, 95 และ 99
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีระบุและปรับปรุงเฟรมที่แสดงผลช้าได้ที่หัวข้อ การแสดงผลช้า
FrameTimingMetricTraceSectionMetric
TraceSectionMetric
จะบันทึกจำนวนครั้งที่ส่วนการติดตามซึ่งตรงกับ sectionName ที่ระบุเกิดขึ้นและระยะเวลาที่ใช้ สำหรับเวลา ระบบจะแสดงเวลาต่ำสุด เวลาเฉลี่ย และเวลาสูงสุดเป็นมิลลิวินาที ส่วนการติดตามจะกำหนดโดย
การเรียกใช้ฟังก์ชัน
trace(sectionName)
หรือโค้ดระหว่าง
Trace.beginSection(sectionName)
กับ
Trace.endSection() หรือ
ตัวแปรแบบไม่พร้อมกัน ระบบจะเลือกอินสแตนซ์แรกของส่วนการติดตามที่บันทึกไว้ระหว่างการวัดเสมอ โดยค่าเริ่มต้น ระบบจะแสดงเฉพาะส่วนการติดตามจากแพ็กเกจของคุณ หากต้องการรวมกระบวนการนอกแพ็กเกจ ให้ตั้งค่า targetPackageOnly = false
ดูข้อมูลเพิ่มเติมเกี่ยวกับการติดตามได้ที่ภาพรวมของการติดตามระบบ และกำหนดเหตุการณ์ที่กำหนดเอง
TraceSectionMetricPowerMetric
PowerMetric จะบันทึก
การเปลี่ยนแปลงของกำลังหรือพลังงานตลอดระยะเวลาการทดสอบสำหรับ
หมวดหมู่กำลังที่ระบุ
ระบบจะแบ่งแต่ละหมวดหมู่ที่เลือกออกเป็นคอมโพเนนต์ย่อยที่วัดได้ และเพิ่มหมวดหมู่ที่ไม่ได้เลือกไปยังเมตริก "ไม่ได้เลือก"
เมตริกเหล่านี้จะวัดการใช้พลังงานทั้งระบบ ไม่ใช่การใช้พลังงานต่อแอป และใช้ได้เฉพาะในอุปกรณ์ Pixel 6, Pixel 6 Pro และอุปกรณ์รุ่นที่ใหม่กว่า
power<category>Uw: ปริมาณกำลังที่ใช้ตลอดระยะเวลาการทดสอบ ในหมวดหมู่นี้energy<category>Uws: ปริมาณพลังงานที่ถ่ายโอนต่อหน่วยเวลาสำหรับ ระยะเวลาการทดสอบในหมวดหมู่นี้
หมวดหมู่มีดังนี้
CPUDISPLAYGPUGPSMEMORYMACHINE_LEARNINGNETWORKUNCATEGORIZED
ในบางหมวดหมู่ เช่น CPU การแยกงานที่กระบวนการอื่นๆ ทำออกจากงานที่แอปของคุณทำอาจเป็นเรื่องยาก โปรดนำแอปและบัญชีที่ไม่จำเป็นออกหรือจำกัดการใช้งานเพื่อลดการรบกวน
PowerMetricแนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- สร้างโปรไฟล์พื้นฐาน {:#creating-profile-rules}
- การเขียน Macrobenchmark
- การวิเคราะห์และการเพิ่มประสิทธิภาพการเริ่มต้นแอป {:#app-startup-analysis-optimization}