13.1.18. A kódprofilozó

A Window → Show Code Profiler egy függvényszintű profilozót nyit meg a csatlakoztatott kamerán futó firmware-hez: mely C függvények futottak, milyen gyakran, és hova kerültek a mikroszekundumok, élőben továbbítva, miközben egy szkript fut. Megválaszolja azt a kérdést, amelyet az FPS-számláló felvet – miért lassú ez a feldolgozási lánc – a kamera saját kódjának szintjén.

A profilozó támogatás bele van fordítva a firmware-be, nem mindig jelen van: a kamerának egy PROFILE_ENABLE=1 beállítással épített firmware-t kell futtatnia, egyébként a menüpont letiltva marad. Egy ilyen firmware felépítése az egyedi build munkafolyamat része, amelyet a A firmware felépítése ismertet.

A Code Profiler ablak: a függvénytábla feltöltve a hívásszámlálókkal, az időzítési oszlopokkal, a százalékokkal és két hardveres eseményszámláló oszloppal, felül a Flat/Tree és az Inclusive/Exclusive vezérlőkkel, alul pedig az összegzősorral

A profilozó egy futó szkriptet figyel: függvényenkénti hívások, időzítés és a teljes idő százaléka, a két jobb szélső oszlopban két hardveres eseményszámlálóval, alatta pedig az összegzősorral.

Az ablak a függvények rendezhető táblázata a hívásszámlálóikkal, a minimális, maximális, összesített és átlagos mikroszekundumokkal, az átlagos ciklusokkal és a teljes idő százalékával, alatta egy összegzősorral és egy szűrőmezővel a függvények név szerinti megkereséséhez. A függvénynevek a firmware ELF fájljából származnak – irányítsa az ablak firmware-útvonal mezőjét a build által előállított .elf fájlra, és a címek nevekké oldódnak fel.

Két nézetvezérlő szervezi az adatokat. A Flat minden függvényt függetlenül rangsorol – ez a nézet arra, hogy „mi az egyetlen legdrágább függvény”. A Tree a hívottakat a hívók alá fészkeli, megmutatva, hogyan bomlik fel az idő a híváslánc mentén. Ettől függetlenül az Inclusive egy függvényhez felszámítja minden általa hívott elem idejét, míg az Exclusive csak a függvény saját törzsét számolja – az inkluzív megtalálja a drága alrendszert, az exkluzív megtalálja a drága ciklust. A Reset nullázza a számlálókat, így mérheti egy feldolgozási lánc egy szakaszát elszigetelten: nullázás, futtatás, leolvasás.

A profilozó hardveres eseményszámlálókat is megjeleníthet – gyorsítótár-tévesztések, elágazás-félrebecslések és a többi esemény, amelyet a processzor számolni tud – az időzítési oszlopok mellett; válassza ki őket ugyanabban az ablakban a támogatással épített firmware-en.

Lásd még

Az openmv csomag CLI-je ugyanezeket a profilozási adatokat egy élő adatfolyamra is rávetítheti a parancssorból – lásd: Az openmv CLI.