13.1.18. Profilerul de cod¶
Window → Show Code Profiler deschide un profiler la nivel de funcție pentru firmware-ul care rulează pe camera conectată: care funcții C au rulat, cât de des și unde s-au dus microsecundele, transmis în timp real în timp ce un script se execută. Răspunde la întrebarea pe care o ridică contorul FPS – de ce este lentă această conductă – la nivelul codului propriu al camerei.
Suportul pentru profilare este compilat în firmware, nefiind întotdeauna prezent: camera trebuie să ruleze un firmware construit cu PROFILE_ENABLE=1, iar intrarea de meniu rămâne dezactivată în caz contrar. Construirea unui astfel de firmware face parte din fluxul de lucru de construcție personalizată tratat în Construirea firmware-ului.
Profilerul urmărind rularea unui script: apeluri pe funcție, cronometrare și procent din timpul total, cu două contoare de evenimente hardware în coloanele din extrema dreaptă și linia de totaluri dedesubt.¶
Fereastra este un tabel sortabil de funcții cu numărul lor de apeluri, microsecundele minime, maxime, totale și medii, ciclurile medii și procentul din timpul total, cu o linie de totaluri dedesubt și o casetă de filtrare pentru găsirea funcțiilor după nume. Numele funcțiilor provin din fișierul ELF al firmware-ului – îndreaptă câmpul pentru calea firmware-ului al ferestrei către fișierul .elf produs de build, iar adresele se rezolvă în nume.
Două comenzi de vizualizare organizează datele. Flat clasifică fiecare funcție în mod independent – vizualizarea pentru „care este cea mai costisitoare funcție”. Tree imbrică funcțiile apelate sub apelanți, arătând cum se descompune timpul de-a lungul lanțului de apeluri. În mod independent, Inclusive atribuie unei funcții timpul petrecut în tot ceea ce a apelat, în timp ce Exclusive numără doar corpul propriu al funcției – inclusive găsește subsistemul costisitor, exclusive găsește bucla costisitoare. Reset aduce contoarele la zero, ceea ce reprezintă modul în care măsori o etapă a unei conducte în mod izolat: resetează, las-o să ruleze, citește.
Profilerul poate de asemenea afișa contoare de evenimente hardware – ratări de cache, predicții greșite de ramificare și celelalte evenimente pe care procesorul le poate număra – alături de coloanele de cronometrare; selectează-le în aceeași fereastră pe firmware construit cu suportul respectiv.
Vezi și
CLI-ul pachetului openmv poate suprapune aceleași date de profilare pe un flux live din linia de comandă – vezi Interfața de linie de comandă openmv.