13.1.18. Kodprofileraren¶
Window → Show Code Profiler öppnar en profilerare på funktionsnivå för den fasta programvaran som körs på den anslutna kameran: vilka C-funktioner som kördes, hur ofta och var mikrosekunderna tog vägen, strömmat live medan ett skript körs. Den besvarar frågan som FPS-räknaren väcker – varför är den här pipelinen långsam – på nivån av kamerans egen kod.
Profileringsstöd kompileras in i den fasta programvaran och finns inte alltid med: kameran måste köra en fast programvara byggd med PROFILE_ENABLE=1, annars förblir menyposten inaktiverad. Att bygga en sådan fast programvara är en del av arbetsflödet för anpassade byggen som beskrivs i Bygga den fasta programvaran.
Profileraren tittar på ett skript som körs: anrop per funktion, tidtagning och procentandel av total tid, med två hårdvarukändeskaräknare i de högraste kolumnerna och totalsummeraden under.¶
Fönstret är en sorterbar tabell över funktioner med deras anropsräkningar, minsta, största, totala och genomsnittliga mikrosekunder, genomsnittliga cykler och procentandel av total tid, med en totalsummerad under och en filtreringsruta för att hitta funktioner efter namn. Funktionsnamn kommer från den fasta programvarans ELF-fil – peka fönstrets fält för sökväg till fast programvara mot den .elf som bygget producerar, så löses adresser upp till namn.
Två vykontroller organiserar datan. Flat rangordnar varje funktion oberoende – vyn för ”vilken är den enskilt dyraste funktionen.” Tree nästlar anropade funktioner under anroparna och visar hur tiden bryts ned nedför anropskedjan. Oberoende av detta belastar Inclusive en funktion med tiden som spenderats i allt den anropade, medan Exclusive räknar endast funktionens egen kropp – inclusive hittar det dyra delsystemet, exclusive hittar den dyra slingan. Reset nollställer räknarna, vilket är hur du mäter ett steg i en pipeline isolerat: återställ, låt det köra, läs av.
Profileraren kan också visa hårdvarukändeskaräknare – cachemissar, felaktiga grenförutsägelser och de andra händelser som processorn kan räkna – bredvid tidskolumnerna; välj dem i samma fönster på fast programvara byggd med stödet.
Se även
CLI:n i paketet openmv kan lägga samma profileringsdata som överlägg på en livström från kommandoraden – se openmv-CLI:t.