13.1.18. Профілювальник коду

Window → Show Code Profiler відкриває профілювальник на рівні функцій для мікропрограми, що виконується на підключеній камері: які функції C виконувалися, як часто та скільки мікросекунд було витрачено, з живою трансляцією під час виконання скрипту. Він відповідає на питання, яке піднімає лічильник FPS – чому цей конвеєр повільний – на рівні власного коду камери.

Підтримка профілювання вбудована в мікропрограму, але присутня не завжди: камера повинна мати мікропрограму, зібрану з PROFILE_ENABLE=1, і без цього пункт меню залишається неактивним. Збірка такої мікропрограми є частиною робочого процесу нестандартної збірки, описаного в Збірка мікропрограми.

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

Профілювальник спостерігає за виконанням скрипту: кількість викликів кожної функції, час і відсоток від загального часу, з двома апаратними лічильниками подій у крайніх правих стовпцях і рядком підсумків внизу.

Вікно – це таблиця функцій, що сортується, з кількістю викликів, мінімальними, максимальними, загальними та середніми мікросекундами, середніми циклами і відсотком від загального часу, з рядком підсумків внизу та полем фільтру для пошуку функцій за назвою. Назви функцій беруться з ELF-файлу мікропрограми – вкажіть у полі шляху до мікропрограми вікна файл .elf, створений збіркою, і адреси перетворяться в назви.

Два елементи керування представленням організують дані. Flat оцінює кожну функцію незалежно – перегляд для відповіді на питання «яка функція найдорожча». Tree вкладає викликані функції під тих, хто їх викликає, показуючи декомпозицію часу по ланцюжку викликів. Незалежно від цього, Inclusive нараховує функції час, витрачений на все, що вона викликала, тоді як Exclusive враховує лише тіло самої функції – inclusive знаходить дорогу підсистему, exclusive – дорогий цикл. Reset обнуляє лічильники, що є способом виміряти один етап конвеєра ізольовано: скинути, дозволити виконання, прочитати.

Профілювальник також може відображати апаратні лічильники подій – промахи кешу, неправильні передбачення переходів та інші події, які може підраховувати процесор – поруч зі стовпцями часу; виберіть їх у тому самому вікні на мікропрограмі, зібраній із підтримкою цього.

Дивись також

CLI пакету openmv може накладати ті самі профільні дані на живий потік із командного рядка – див. CLI openmv.