13.1.18. Профилировщик кода¶
Window → Show Code Profiler открывает профилировщик уровня функций для прошивки, работающей на подключённой камере: какие функции на C выполнялись, как часто и куда ушли микросекунды, с трансляцией в реальном времени во время выполнения скрипта. Он отвечает на вопрос, который поднимает счётчик FPS – почему этот конвейер медленный – на уровне собственного кода камеры.
Поддержка профилирования компилируется в прошивку и присутствует не всегда: камера должна работать с прошивкой, собранной с PROFILE_ENABLE=1, иначе пункт меню остаётся недоступным. Сборка такой прошивки – часть процесса нестандартной сборки, описанного в Сборка прошивки.
Профилировщик наблюдает за выполнением скрипта: вызовы по каждой функции, время и процент от общего времени, с двумя аппаратными счётчиками событий в крайних правых столбцах и строкой итогов снизу.¶
Окно представляет собой сортируемую таблицу функций с их счётчиками вызовов, минимальными, максимальными, суммарными и средними микросекундами, средним числом тактов и процентом от общего времени, со строкой итогов снизу и полем фильтра для поиска функций по имени. Имена функций берутся из ELF-файла прошивки – укажите в поле пути к прошивке этого окна на .elf, полученный при сборке, и адреса разрешатся в имена.
Данными управляют два элемента представления. Flat ранжирует каждую функцию независимо – представление для вопроса «какая функция самая дорогая по отдельности». Tree вкладывает вызываемые функции внутрь вызывающих, показывая, как время распределяется вниз по цепочке вызовов. Независимо от этого Inclusive засчитывает функции время, проведённое во всём, что она вызвала, тогда как Exclusive учитывает только тело самой функции – inclusive находит дорогую подсистему, exclusive находит дорогой цикл. Reset обнуляет счётчики – именно так измеряют один этап конвейера изолированно: сброс, дать поработать, прочитать.
Профилировщик может также отображать аппаратные счётчики событий – промахи кэша, ошибочные предсказания переходов и другие события, которые может считать процессор – рядом со столбцами времени; выберите их в том же окне на прошивке, собранной с этой поддержкой.
См. также
Командная строка пакета openmv может накладывать те же данные профилирования на живой поток из командной строки – см. CLI openmv.