13.1.18. Trình phân tích hiệu năng mã

Window → Show Code Profiler mở trình phân tích hiệu năng ở cấp độ hàm cho firmware đang chạy trên camera đang kết nối: các hàm C nào đã chạy, tần suất như thế nào, và microsecond đã đi đâu, được phát trực tiếp trong khi tập lệnh thực thi. Nó trả lời câu hỏi mà bộ đếm FPS đặt ra -- tại sao pipeline này chậm -- ở cấp độ mã nguồn của chính camera.

Hỗ trợ phân tích hiệu năng được biên dịch vào firmware, không phải lúc nào cũng có: camera phải đang chạy firmware được xây dựng với PROFILE_ENABLE=1, và mục menu sẽ bị vô hiệu hóa nếu không. Xây dựng firmware như vậy là một phần của quy trình xây dựng tùy chỉnh được đề cập trong Biên dịch firmware.

The Code Profiler window: the function table populated with call counts, timing columns, percentages, and two hardware event counter columns, with the Flat/Tree and Inclusive/Exclusive controls on top and the totals line at the bottom

Trình phân tích hiệu năng đang theo dõi một tập lệnh chạy: số lần gọi theo từng hàm, thời gian và phần trăm tổng thời gian, với hai bộ đếm sự kiện phần cứng ở các cột ngoài cùng bên phải và dòng tổng ở bên dưới.

Cửa sổ là một bảng có thể sắp xếp của các hàm với số lần gọi, số microsecond tối thiểu, tối đa, tổng và trung bình, chu kỳ trung bình, và phần trăm tổng thời gian, với dòng tổng ở bên dưới và hộp lọc để tìm hàm theo tên. Tên hàm lấy từ tệp ELF của firmware -- trỏ trường đường dẫn firmware của cửa sổ vào tệp .elf được tạo ra bởi quá trình xây dựng, và địa chỉ sẽ được phân giải thành tên.

Hai điều khiển xem tổ chức dữ liệu. Flat xếp hạng từng hàm độc lập -- chế độ xem cho "hàm đắt nhất là gì." Tree lồng các hàm được gọi bên dưới hàm gọi, cho thấy cách thời gian phân tách xuống chuỗi gọi. Độc lập, Inclusive tính cho một hàm thời gian dành cho mọi thứ nó gọi, trong khi Exclusive chỉ đếm phần thân của hàm đó -- inclusive tìm hệ thống con tốn kém, exclusive tìm vòng lặp tốn kém. Reset đặt lại các bộ đếm về không, đây là cách bạn đo một giai đoạn của pipeline một cách độc lập: đặt lại, để nó chạy, đọc.

Trình phân tích hiệu năng cũng có thể hiển thị các bộ đếm sự kiện phần cứng -- cache miss, dự đoán nhánh sai, và các sự kiện khác mà bộ xử lý có thể đếm -- bên cạnh các cột thời gian; chọn chúng trong cùng cửa sổ trên firmware được xây dựng với hỗ trợ đó.

Xem thêm

CLI của gói openmv có thể phủ lên cùng dữ liệu phân tích hiệu năng trên một luồng trực tiếp từ dòng lệnh -- xem Công cụ dòng lệnh openmv.