13.1.18. ตัววิเคราะห์โค้ด¶
Window → Show Code Profiler เปิดตัววิเคราะห์ระดับฟังก์ชันสำหรับเฟิร์มแวร์ที่รันบนกล้องที่เชื่อมต่ออยู่: ฟังก์ชัน C ใดรัน บ่อยแค่ไหน และเวลาไมโครวินาทีไปอยู่ที่ไหน โดยส่งสตรีมสดในขณะที่สคริปต์ทำงาน มันตอบคำถามที่ตัวนับ FPS ตั้งไว้ว่า ทำไม pipeline นี้จึงช้า ในระดับโค้ดของกล้องเอง
รองรับการวิเคราะห์ที่คอมไพล์เข้าในเฟิร์มแวร์ แต่ไม่มีเสมอไป: กล้องต้องรันเฟิร์มแวร์ที่บิวด์ด้วย PROFILE_ENABLE=1 และรายการเมนูจะถูกปิดใช้งานหากไม่มี การสร้างเฟิร์มแวร์ดังกล่าวเป็นส่วนหนึ่งของขั้นตอนการบิวด์แบบกำหนดเองที่อธิบายใน การสร้างเฟิร์มแวร์
ตัววิเคราะห์กำลังดูสคริปต์ทำงาน: จำนวนการเรียกต่อฟังก์ชัน เวลา และเปอร์เซ็นต์ของเวลาทั้งหมด พร้อมตัวนับเหตุการณ์ฮาร์ดแวร์สองตัวในคอลัมน์ขวาสุดและบรรทัดยอดรวมด้านล่าง¶
หน้าต่างเป็นตารางฟังก์ชันที่เรียงลำดับได้พร้อมจำนวนการเรียก ค่าต่ำสุด สูงสุด รวม และเฉลี่ยเป็นไมโครวินาที รอบเฉลี่ย และเปอร์เซ็นต์ของเวลาทั้งหมด มีบรรทัดยอดรวมด้านล่างและกล่องกรองสำหรับค้นหาฟังก์ชันตามชื่อ ชื่อฟังก์ชันมาจากไฟล์ ELF ของเฟิร์มแวร์ ชี้ฟิลด์ path เฟิร์มแวร์ของหน้าต่างไปที่ .elf ที่ได้จากการบิวด์ แล้วที่อยู่จะแปลเป็นชื่อ
ตัวควบคุมมุมมองสองตัวจัดระเบียบข้อมูล Flat จัดอันดับทุกฟังก์ชันอย่างอิสระ ซึ่งเป็นมุมมองสำหรับ "ฟังก์ชันที่แพงที่สุดตัวเดียวคืออะไร" Tree ซ้อน callee ไว้ใต้ caller แสดงให้เห็นว่าเวลาแยกย่อยลงตาม call chain อย่างไร โดยอิสระจากกัน Inclusive นับเวลาของฟังก์ชันรวมถึงทุกอย่างที่มันเรียก ขณะที่ Exclusive นับเฉพาะตัวฟังก์ชันเอง โดย inclusive ช่วยค้นหา subsystem ที่แพง และ exclusive ช่วยค้นหา loop ที่แพง Reset ล้างตัวนับซึ่งเป็นวิธีวัดขั้นตอนหนึ่งของ pipeline แบบแยก: รีเซ็ต ปล่อยรัน อ่านค่า
ตัววิเคราะห์ยังสามารถแสดงตัวนับเหตุการณ์ฮาร์ดแวร์ ได้แก่ cache miss การทำนายสาขาผิด และเหตุการณ์อื่น ๆ ที่ตัวประมวลผลสามารถนับได้ควบคู่กับคอลัมน์เวลา เลือกในหน้าต่างเดียวกันบนเฟิร์มแวร์ที่บิวด์พร้อมรองรับ
See also
CLI ของแพ็คเกจ openmv สามารถซ้อนทับข้อมูลการวิเคราะห์เดียวกันบนสตรีมสดจาก command line ดูได้ที่ CLI openmv