เมตริกคือข้อมูลประเภทหลักที่ดึงมาจากการเปรียบเทียบ ระบบจะส่งผ่านไปยังฟังก์ชัน 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
: ระยะเวลาตั้งแต่ระบบได้รับ เจตนาในการเปิดแอปจนถึงเวลาที่แสดงผลเฟรมแรกของปลายทางActivity
timeToFullDisplayMs
: ระยะเวลาตั้งแต่ระบบได้รับ Intent ในการเปิดแอปจนถึงเวลาที่แอปรายงานว่าวาดเสร็จสมบูรณ์แล้วโดยใช้วิธีreportFullyDrawn()
การวัดจะหยุดเมื่อการแสดงผลเฟรมแรกเสร็จสมบูรณ์ หลังจากหรือมีreportFullyDrawn()
การเรียก การวัดนี้อาจไม่พร้อมใช้งานใน Android 10 (API ระดับ 29) และเวอร์ชันก่อนหน้า
StartupTimingMetric
แสดงค่าต่ำสุด ค่ามัธยฐาน และค่าสูงสุดจากการทำซ้ำของสตาร์ทอัป
หากต้องการประเมินการปรับปรุงการเริ่มต้น คุณควรเน้นที่ค่ามัธยฐาน
เนื่องจากค่าดังกล่าวให้ค่าประมาณที่ดีที่สุดของเวลาเริ่มต้นทั่วไป ดูข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่ส่งผลต่อเวลาเริ่มต้นของแอปได้ที่เวลาเริ่มต้นของแอป

StartupTimingMetric
ผลลัพธ์FrameTimingMetric
FrameTimingMetric
บันทึกข้อมูลเวลาจากเฟรมที่สร้างขึ้นโดยการทดสอบประสิทธิภาพ เช่น
การเลื่อนหรือภาพเคลื่อนไหว และแสดงค่าต่อไปนี้
frameOverrunMs
: ระยะเวลาที่เฟรมหนึ่งๆ ไม่เป็นไปตามกำหนดเวลา ตัวเลขที่เป็นค่าบวกแสดงถึงเฟรมที่หลุดและภาพกระตุกหรือติดขัดที่มองเห็นได้ ตัวเลขติดลบแสดงให้เห็นว่าเฟรมเร็วกว่ากำหนดเวลามากน้อยเพียงใด หมายเหตุ: ฟีเจอร์นี้ใช้ได้ใน Android 12 (API ระดับ 31) ขึ้นไปเท่านั้นframeDurationCpuMs
: ระยะเวลาที่เฟรมใช้ในการสร้างใน CPU ทั้งในเธรด UI และRenderThread
ระบบจะรวบรวมการวัดเหล่านี้ในการกระจายเปอร์เซ็นไทล์ที่ 50, 90, 95 และ 99
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีระบุและปรับปรุงเฟรมที่ช้าได้ที่การแสดงผลช้า

FrameTimingMetric
ผลลัพธ์TraceSectionMetric
TraceSectionMetric
จะบันทึกจํานวนครั้งที่ส่วนการติดตามที่ตรงกับ sectionName
ที่ระบุ
เกิดขึ้นและระยะเวลาที่ใช้ สำหรับเวลา ระบบจะแสดงเวลาต่ำสุด
ค่ามัธยฐาน และเวลาสูงสุดเป็นมิลลิวินาที ส่วนการติดตามจะกำหนดโดยการเรียกฟังก์ชัน
trace(sectionName)
หรือโค้ดระหว่าง
Trace.beginSection(sectionName)
กับ
Trace.endSection()
หรือ
รูปแบบการทำงานแบบไม่พร้อมกัน โดยจะเลือกอินสแตนซ์แรกของส่วนการติดตาม
ที่บันทึกไว้ระหว่างการวัดผลเสมอ โดยค่าเริ่มต้น เครื่องมือจะแสดงเฉพาะส่วนการติดตามจากแพ็กเกจ
หากต้องการรวมกระบวนการภายนอกแพ็กเกจ ให้ตั้งค่า
targetPackageOnly = false
ดูข้อมูลเพิ่มเติมเกี่ยวกับการติดตามได้ที่ภาพรวมของ การติดตามระบบและกำหนดเหตุการณ์ ที่กำหนดเอง

TraceSectionMetric
ผลลัพธ์PowerMetric
PowerMetric
จะบันทึก
การเปลี่ยนแปลงของกำลังหรือพลังงานตลอดระยะเวลาการทดสอบสำหรับหมวดหมู่กำลังที่ระบุ
แต่ละหมวดหมู่ที่เลือกจะแยกย่อยเป็นองค์ประกอบย่อยที่วัดได้ และ
ระบบจะเพิ่มหมวดหมู่ที่ไม่ได้เลือกไปยังเมตริก "ไม่ได้เลือก"
เมตริกเหล่านี้จะวัดการใช้งานทั้งระบบ ไม่ใช่การใช้งานต่อแอป และจำกัดไว้สำหรับอุปกรณ์ Pixel 6, Pixel 6 Pro และอุปกรณ์รุ่นที่ใหม่กว่า
power<category>Uw
: ปริมาณการใช้พลังงานตลอดระยะเวลาการทดสอบในหมวดหมู่นี้energy<category>Uws
: ปริมาณพลังงานที่โอนต่อหน่วยเวลาในระยะเวลาการทดสอบในหมวดหมู่นี้
หมวดหมู่ต่างๆ มีดังนี้
CPU
DISPLAY
GPU
GPS
MEMORY
MACHINE_LEARNING
NETWORK
UNCATEGORIZED
ในบางหมวดหมู่ เช่น CPU
การแยกงานที่ดำเนินการโดยกระบวนการอื่นๆ ออกจากงานที่แอปของคุณดำเนินการเองอาจเป็นเรื่องยาก เพื่อลดการรบกวน ให้ลบหรือจำกัดแอปและบัญชีที่ไม่จำเป็น

PowerMetric
ผลลัพธ์แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- สร้างโปรไฟล์พื้นฐาน {:#creating-profile-rules}
- การเขียน Macrobenchmark
- การวิเคราะห์และการเพิ่มประสิทธิภาพการเริ่มต้นแอป {:#app-startup-analysis-optimization}