13.1.18. O profiler de código¶
Window → Show Code Profiler abre um profiler em nível de função para o firmware em execução na câmera conectada: quais funções C executaram, com que frequência e para onde foram os microssegundos, transmitido ao vivo enquanto um script executa. Ele responde à pergunta que o contador de FPS levanta – por que esse pipeline está lento – no nível do próprio código da câmera.
O suporte a profiling é compilado no firmware, não está sempre presente: a câmera deve estar executando um firmware construído com PROFILE_ENABLE=1, e a entrada de menu permanece desabilitada caso contrário. Construir tal firmware faz parte do fluxo de construção personalizada abordado em Compilando o firmware.
O profiler observando a execução de um script: chamadas por função, tempo e percentual do tempo total, com dois contadores de eventos de hardware nas colunas mais à direita e a linha de totais embaixo.¶
A janela é uma tabela ordenável de funções com suas contagens de chamadas, microssegundos mínimos, máximos, totais e médios, ciclos médios e percentual do tempo total, com uma linha de totais embaixo e uma caixa de filtro para encontrar funções pelo nome. Os nomes das funções vêm do arquivo ELF do firmware – aponte o campo de caminho do firmware da janela para o .elf produzido pela construção, e os endereços são resolvidos em nomes.
Dois controles de visualização organizam os dados. Flat classifica cada função independentemente – a visualização para “qual é a única função mais cara.” Tree aninha os chamados sob os chamadores, mostrando como o tempo se decompõe ao longo da cadeia de chamadas. Independentemente, Inclusive atribui a uma função o tempo gasto em tudo o que ela chamou, enquanto Exclusive conta apenas o corpo da própria função – inclusive encontra o subsistema caro, exclusive encontra o laço caro. Reset zera os contadores, que é como você mede um estágio de um pipeline isoladamente: reinicie, deixe executar, leia.
O profiler também pode exibir contadores de eventos de hardware – falhas de cache, predições de desvio erradas e os demais eventos que o processador pode contar – junto às colunas de tempo; selecione-os na mesma janela em firmware construído com o suporte.
Ver também
A CLI do pacote openmv pode sobrepor os mesmos dados de profiling sobre um fluxo ao vivo a partir da linha de comando – veja A CLI openmv.