13.1.18. Il profiler del codice

Window → Show Code Profiler apre un profiler a livello di funzione per il firmware in esecuzione sulla camera connessa: quali funzioni C sono state eseguite, quanto spesso e dove sono finiti i microsecondi, trasmessi in tempo reale mentre uno script viene eseguito. Risponde alla domanda che solleva il contatore FPS – perché questa pipeline è lenta – al livello del codice stesso della camera.

Il supporto per il profiling è compilato nel firmware, non sempre presente: la camera deve eseguire un firmware compilato con PROFILE_ENABLE=1, e altrimenti la voce di menu rimane disabilitata. La compilazione di un tale firmware fa parte del flusso di lavoro di build personalizzata trattato in Compilazione del firmware.

La finestra Code Profiler: la tabella delle funzioni popolata con i conteggi delle chiamate, le colonne di temporizzazione, le percentuali e due colonne di contatori di eventi hardware, con i controlli Flat/Tree e Inclusive/Exclusive in alto e la riga dei totali in basso

Il profiler che osserva l’esecuzione di uno script: chiamate per funzione, temporizzazione e percentuale del tempo totale, con due contatori di eventi hardware nelle colonne più a destra e la riga dei totali sottostante.

La finestra è una tabella ordinabile di funzioni con i loro conteggi delle chiamate, i microsecondi minimi, massimi, totali e medi, i cicli medi e la percentuale del tempo totale, con una riga dei totali sottostante e una casella di filtro per trovare le funzioni per nome. I nomi delle funzioni provengono dal file ELF del firmware – punta il campo del percorso del firmware della finestra al .elf prodotto dalla build, e gli indirizzi si risolvono in nomi.

Due controlli di visualizzazione organizzano i dati. Flat classifica ogni funzione in modo indipendente – la vista per «qual è la singola funzione più costosa.» Tree annida i chiamati sotto i chiamanti, mostrando come il tempo si scompone lungo la catena di chiamate. Indipendentemente, Inclusive addebita a una funzione il tempo trascorso in tutto ciò che ha chiamato, mentre Exclusive conta solo il corpo della funzione stessa – inclusive individua il sottosistema costoso, exclusive individua il ciclo costoso. Reset azzera i contatori, ed è così che misuri una fase di una pipeline in isolamento: reset, lasciala eseguire, leggi.

Il profiler può anche visualizzare i contatori di eventi hardware – cache miss, errori di predizione dei salti e gli altri eventi che il processore può contare – accanto alle colonne di temporizzazione; selezionali nella stessa finestra su un firmware compilato con il supporto.

Vedi anche

La CLI del pacchetto openmv può sovrapporre gli stessi dati di profiling a uno stream in tempo reale dalla riga di comando – vedi La CLI openmv.