ตรวจสอบความเร็วในการแสดงผล

Android มีตัวเลือกสำหรับนักพัฒนาแอปในอุปกรณ์บางอย่างที่จะช่วยให้คุณเห็นภาพ ตำแหน่งที่แอปอาจพบปัญหาในการแสดงผล UI เช่น การทำงาน การแสดงผลมากกว่าที่จำเป็น หรือการดำเนินการกับเธรดและ GPU เป็นเวลานาน หน้านี้อธิบายวิธีแก้ไขข้อบกพร่องการแสดงพิกเซลซ้ำด้วย GPU และการแสดงผล GPU ตามโปรไฟล์

ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกสำหรับนักพัฒนาแอปในอุปกรณ์ รวมถึงวิธีเปิดใช้ได้ที่กำหนดค่าตัวเลือกสำหรับนักพัฒนาแอปในอุปกรณ์

ความเร็วในการแสดงผล GPU ตามโปรไฟล์

เครื่องมือการแสดงผล GPU ตามโปรไฟล์จะแสดงภาพ แทนระยะเวลาที่ใช้ในการ แสดงผลเฟรมของหน้าต่าง UI เมื่อเทียบกับเกณฑ์มาตรฐานที่ 16.67 มิลลิวินาทีต่อเฟรมเป็นฮิสโทแกรมแบบเลื่อน

ใน GPU ที่มีประสิทธิภาพน้อยกว่า อัตราการส่งโฆษณาที่ใช้ได้ (ความเร็วที่ GPU สามารถเติม เฟรมบัฟเฟอร์) อาจต่ำมาก เมื่อจำนวนพิกเซลที่ต้องใช้ในการวาดเฟรมเพิ่มขึ้น GPU อาจใช้เวลาในการประมวลผลคำสั่งใหม่นานขึ้น ซึ่งจะทำให้ส่วนอื่นๆ ของระบบต้องรอจนกว่า GPU จะประมวลผลได้ทัน

เครื่องมือสร้างโปรไฟล์ช่วยให้คุณระบุได้ว่าเมื่อใดที่ GPU ทำงานหนักเกินไปในการพยายามวาดพิกเซล หรือทำงานหนักเนื่องจากการแสดงพิกเซลซ้ำที่มากเกินไป

เปิดใช้โปรไฟล์

ก่อนเริ่มต้น ให้ตรวจสอบว่าคุณใช้อุปกรณ์ที่ใช้ Android 4.1 (ระดับ API 16) ขึ้นไป และเปิดใช้ตัวเลือกสำหรับนักพัฒนาแอป หากต้องการเริ่มการสร้างโปรไฟล์การแสดงผล GPU ของอุปกรณ์ ขณะใช้แอป ให้ทำดังนี้

  1. ไปที่การตั้งค่าในอุปกรณ์ แล้วแตะตัวเลือกสำหรับนักพัฒนาแอป
  2. ในส่วนการตรวจสอบ ให้เลือกการแสดงผล GPU ของโปรไฟล์หรือ การแสดงผล HWUI ตามโปรไฟล์ ทั้งนี้ขึ้นอยู่กับเวอร์ชันของ Android ที่ทำงานใน อุปกรณ์
  3. ในกล่องโต้ตอบการแสดงผล GPU ของโปรไฟล์ ให้เลือกบนหน้าจอเป็นแถบเพื่อ วางซ้อนกราฟบนหน้าจอของอุปกรณ์
  4. เปิดแอปที่ต้องการสร้างโปรไฟล์

ตรวจสอบเอาต์พุต

ในรูปภาพที่ขยายของกราฟการแสดงผล GPU ของโปรไฟล์ที่แสดงในรูปที่ 1 คุณจะเห็นส่วนที่มีสีตามที่แสดงใน Android 6.0 (ระดับ API 23)

รูปที่ 1 กราฟการแสดงผล GPU ของโปรไฟล์ที่ขยาย

ต่อไปนี้คือข้อควรทราบเกี่ยวกับเอาต์พุต

  • เครื่องมือจะแสดงกราฟสำหรับแต่ละแอปพลิเคชันที่มองเห็นได้
  • แถบแนวตั้งแต่ละแถบตามแกนนอนแสดงเฟรม และความสูงของแถบแนวตั้งแต่ละแถบแสดงระยะเวลาที่เฟรมใช้ในการแสดงผล (เป็นมิลลิวินาที)
  • เส้นสีเขียวแนวนอนแสดงถึง 16.67 มิลลิวินาที หากต้องการให้ได้ 60 เฟรม ต่อวินาที แถบแนวตั้งของแต่ละเฟรมต้องอยู่ใต้เส้นนี้ เมื่อใดก็ตามที่แท่งเกินเส้นนี้ ภาพเคลื่อนไหวอาจหยุดชั่วคราว
  • เครื่องมือจะไฮไลต์เฟรมที่เกินเกณฑ์ 16.67 มิลลิวินาทีโดย ทำให้แถบที่เกี่ยวข้องกว้างขึ้นและโปร่งใสน้อยลง
  • แต่ละแท่งมีคอมโพเนนต์สีที่แมปกับขั้นตอนในไปป์ไลน์การแสดงผล จำนวนคอมโพเนนต์จะแตกต่างกันไปตามระดับ API ของอุปกรณ์

ตารางต่อไปนี้อธิบายแต่ละส่วนของแถบแนวตั้งในเอาต์พุตของโปรไฟล์เลอร์เมื่อใช้อุปกรณ์ที่ใช้ Android 6.0 ขึ้นไป

ส่วนประกอบของบาร์ขั้นตอนการแสดงผลคำอธิบาย
สลับบัฟเฟอร์ แสดงเวลาที่ CPU รอให้ GPU ทำงานเสร็จ หาก แถบนี้สูงขึ้น แสดงว่าแอปทำงานบน GPU มากเกินไป
ปัญหาเกี่ยวกับคำสั่ง แสดงเวลาที่ตัวแสดงผล 2 มิติของ Android ใช้ในการออกคำสั่งไปยัง OpenGL เพื่อวาดและ วาดรายการที่แสดงซ้ำ ความสูงของแถบนี้แปรผันโดยตรงกับผลรวมของเวลาที่ใช้ในการดำเนินการแต่ละรายการแสดงผล ยิ่งมีรายการแสดงผลมาก แถบสีแดงก็จะยิ่งสูงขึ้น
ซิงค์และอัปโหลด แสดงเวลาที่ใช้ในการอัปโหลดข้อมูลบิตแมปลงใน GPU กลุ่มขนาดใหญ่ บ่งชี้ว่าแอปใช้เวลานานพอสมควรในการโหลดกราฟิกจำนวนมาก
วาด แสดงเวลาที่ใช้ในการบันทึกคำสั่งวาด เช่น drawLine ในขั้นตอนการจัดองค์ประกอบ บางครั้งขั้นตอนนี้อาจรวมถึงการดำเนินการเกี่ยวกับมาตรการและเลย์เอาต์ หากแถบนี้สูง ให้บันทึกการติดตามระบบและตรวจสอบโดยใช้ Perfetto เพื่อดูรายละเอียด
วัด / วาง แสดงระยะเวลาที่ใช้ในการ จัดตำแหน่งและกำหนดขนาดของคอมโพเนนต์ UI ในเฟสเลย์เอาต์ ซึ่งรวมถึงการเรียกใช้ตัวแก้ไขการวัดและการจัดวาง กลุ่มขนาดใหญ่บ่งบอกถึงการคำนวณที่ซับซ้อนภายในตัวแก้ไขเหล่านี้ หรือโครงสร้างแผนผังที่ลึกเกินไปซึ่งต้องมีการคำนวณซ้ำบ่อยๆ
การจัดการอินพุตและภาพเคลื่อนไหว แสดงระยะเวลาที่ใช้ในการประเมินการเรียก Animation API หรือจัดการอินพุตของตัวชี้และโค้ดเรียกกลับ หากส่วนนี้มีขนาดใหญ่ อาจบ่งชี้ว่าภาพเคลื่อนไหวที่กำหนดเองหรือการเรียกกลับของอินพุตใช้เวลาในการประมวลผลมากเกินไป การคำนวณสถานะและการแมปข้อมูลขณะเลื่อนผ่าน LazyColumn หรือ LazyRow มักเกิดขึ้นในช่วงนี้เช่นกัน และเป็นสาเหตุที่พบบ่อยกว่า ที่ทำให้เกิดการชะลอตัวในส่วนนี้
เวลาอื่นๆ / ความล่าช้าของ VSync แสดงเวลาที่แอปใช้ในการดำเนินการระหว่างเฟรม 2 เฟรมติดต่อกัน ซึ่งอาจเป็นตัวบ่งชี้ว่ามีการประมวลผลมากเกินไปในเทรด UI ซึ่ง อาจส่งไปยังเทรดอื่นได้

ตารางที่ 1 แถบส่วนประกอบใน Android 6.0 ขึ้นไป

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีตีความข้อมูลที่เครื่องมือสร้างโปรไฟล์ระบุได้ที่การวิเคราะห์ด้วยการแสดงผล GPU ของโปรไฟล์