ลักษณะการใช้งานหน่วยความจำของแอปเป็นแง่มุมพื้นฐานของ ประสิทธิภาพ คุณใช้ System Profiler เพื่อวิเคราะห์ลักษณะเหล่านี้ได้โดยดูข้อมูลตัวนับ GPU ที่มี
อุปกรณ์ Adreno
ในอุปกรณ์ Adreno ให้เริ่มด้วยการไฮไลต์ระยะเวลาที่สอดคล้องกับเฟรม GPU เดียวตามที่อธิบายไว้ในประมาณเวลาประมวลผลเฟรมของ CPU และ GPU ใช้เทคนิคที่อธิบายไว้ในหน้านั้นซึ่งเกี่ยวข้องกับการใช้การใช้ GPU เป็น % หรือตัวนับที่คล้ายกันเพื่อติดตามขอบเขตเวลาที่ใช้ในการแสดงผลเฟรม เนื่องจากตัวนับทั้งหมดใช้เทคนิคการจับเวลาเดียวกัน และจะช่วยให้ประมาณการการใช้หน่วยความจำได้แม่นยำยิ่งขึ้น (เมื่อเทียบกับการใช้ขอบเขตเวลาที่ใช้ในการแสดงผลเฟรมที่ได้จากสไลซ์ GPU ซึ่งมีการรวบรวมข้อมูลแยกจากข้อมูลการติดตามตัวนับ)

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

นอกจากนี้ คุณยังตรวจสอบตัวนับการอ่านหน่วยความจำของจุดยอด (ไบต์/วินาที) และการอ่านหน่วยความจำของพื้นผิว (ไบต์/วินาที) เพื่อพิจารณาส่วนของแบนด์วิดท์ที่ใช้สำหรับข้อมูลจุดยอดและพื้นผิว ได้ด้วย

ค่าที่คุณถือว่า "ดี" สำหรับค่าเหล่านี้ขึ้นอยู่กับประเภทของภาระงาน ที่เห็นในแอป ตัวอย่างเช่น แอปพลิเคชัน 2 มิติอาจเห็นแบนด์วิดท์การอ่านหน่วยความจำของเท็กซ์เจอร์ที่ใช้ค่อนข้างมาก (~2+GB/s) แต่แบนด์วิดท์หน่วยความจำของจุดยอดอาจน้อยมาก (~50MB/s) ดูรายละเอียดเพิ่มเติมได้ที่เอกสารประกอบสำหรับวิเคราะห์แบนด์วิดท์หน่วยความจำของจุดยอดและวิเคราะห์การใช้แบนด์วิดท์หน่วยความจำของเท็กซ์เจอร์
การหยุดดึงข้อมูล
ดูเคาน์เตอร์ % Vertex Fetch Stall, % Texture Fetch Stall และ % Stall on System Memory เนื่องจากเคาน์เตอร์เหล่านี้จะให้คำแนะนำเกี่ยวกับประสิทธิภาพหน่วยความจำโดยรวมของแอปพลิเคชัน หากค่าสูงกว่าประมาณ 5% แสดงว่าแอปของคุณอาจไม่ได้จัดวางข้อมูลในหน่วยความจำอย่างมีประสิทธิภาพ หรือเข้าถึงข้อมูลอย่างมีประสิทธิภาพเพื่อใช้ประโยชน์จากแคช ดูรายละเอียดเกี่ยวกับการปรับปรุงการใช้งานหน่วยความจำสำหรับชิ้นงานประเภทนี้ได้ที่วิเคราะห์แบนด์วิดท์หน่วยความจำของ Vertex และวิเคราะห์การใช้งานแบนด์วิดท์หน่วยความจำของเท็กซ์เจอร์

อุปกรณ์ในมาลี
ในอุปกรณ์ Mali ให้เริ่มต้นด้วยการไฮไลต์ระยะเวลาที่สอดคล้องกับเฟรม GPU เดียวตามที่อธิบายไว้ในประมาณเวลาประมวลผลเฟรมของ CPU และ GPU ใช้เทคนิคที่อธิบายไว้ในหน้านั้นซึ่งเกี่ยวข้องกับการใช้การใช้ GPU เป็น % หรือตัวนับที่คล้ายกันเพื่อติดตามขอบเขตเวลาที่ใช้ในการแสดงผลเฟรม เนื่องจากตัวนับทั้งหมดใช้เทคนิคการจับเวลาเดียวกัน และจะช่วยให้ประมาณการการใช้หน่วยความจำได้แม่นยำยิ่งขึ้น (เมื่อเทียบกับการใช้ขอบเขตเวลาที่ใช้ในการแสดงผลเฟรมที่ได้จากสไลซ์ GPU ซึ่งมีการรวบรวมข้อมูลแยกจากข้อมูลการติดตามตัวนับ)

เอาต์พุตยอดรวมภายนอก
หลังจากไฮไลต์เฟรมเดียวใน System Profiler แล้ว ให้เริ่มโดยดูที่ตัวนับ Output External Read bytes Output External Write bytes เคาน์เตอร์เหล่านี้จะแสดงภาพรวมที่ดีของปริมาณข้อมูลที่ผ่านบัสหน่วยความจำตลอดทั้งเฟรม พยายามลดปริมาณข้อมูลที่คุณส่งผ่านบัส เนื่องจากแบนด์วิดท์ของหน่วยความจำเป็นสาเหตุหลักที่ทำให้แบตเตอรี่หมดเร็วในอุปกรณ์เคลื่อนที่

ป้อนผลรวมภายใน
นอกจากนี้ยังมีตัวนับที่ให้ข้อมูลเกี่ยวกับแคชด้วย เคาน์เตอร์ที่คุณสนใจคือ "Input internal [read|write] stall cycles" ค่าที่สูงขึ้นสำหรับเคาน์เตอร์เหล่านี้หมายความว่าคุณเข้าถึงแคชได้สำเร็จ แต่มีคำขออ่านมากเกินไป และส่งผลให้โค้ด Shader หยุดทำงานเพื่อรอรับสิทธิ์เข้าถึงหน่วยความจำ

การหยุดดึงข้อมูล
ชุดตัวนับถัดไปที่คุณดูได้คือตัวนับรอบการหยุดทำงานของ Vertex Prefetcher และตัวนับการหยุดทำงานของการดึงข้อมูลเท็กซ์เจอร์ เนื่องจากตัวนับเหล่านี้จะให้คำแนะนำเกี่ยวกับประสิทธิภาพโดยรวมของหน่วยความจำของแอปพลิเคชัน หากเห็นค่าที่สูงกว่าประมาณ 5% แสดงว่าคุณไม่ได้จัดวางข้อมูลของเราในหน่วยความจำอย่างมีประสิทธิภาพ หรือไม่ได้เข้าถึงข้อมูลของเราอย่างมีประสิทธิภาพเพื่อใช้ประโยชน์จากแคช ดูรายละเอียดเกี่ยวกับวิธีปรับปรุงการใช้งานหน่วยความจำสำหรับชิ้นงานประเภทนี้ได้ที่บทความการวิเคราะห์แบนด์วิดท์หน่วยความจำ [Vertex|Texture]
