13.1.18. El perfilador de código¶
Window → Show Code Profiler abre un perfilador a nivel de función para el firmware que se ejecuta en la cámara conectada: qué funciones de C se ejecutaron, con qué frecuencia y a dónde fueron los microsegundos, transmitido en vivo mientras un script se ejecuta. Responde a la pregunta que plantea el contador de FPS – por qué es lenta esta canalización – al nivel del propio código de la cámara.
El soporte de perfilado se compila dentro del firmware, no siempre está presente: la cámara debe ejecutar un firmware construido con PROFILE_ENABLE=1, y en caso contrario la entrada de menú permanece deshabilitada. Construir un firmware así forma parte del flujo de trabajo de compilación personalizada que se trata en Compilar el firmware.
El perfilador observando la ejecución de un script: llamadas por función, tiempos y porcentaje del tiempo total, con dos contadores de eventos de hardware en las columnas más a la derecha y la línea de totales debajo.¶
La ventana es una tabla ordenable de funciones con sus recuentos de llamadas, los microsegundos mínimo, máximo, total y medio, los ciclos medios y el porcentaje del tiempo total, con una línea de totales debajo y un cuadro de filtro para encontrar funciones por nombre. Los nombres de las funciones provienen del archivo ELF del firmware – apunta el campo de ruta de firmware de la ventana al .elf producido por la compilación, y las direcciones se resuelven a nombres.
Dos controles de vista organizan los datos. Flat clasifica cada función de forma independiente – la vista para «cuál es la función individual más costosa». Tree anida las funciones llamadas bajo las que llaman, mostrando cómo se descompone el tiempo a lo largo de la cadena de llamadas. De forma independiente, Inclusive imputa a una función el tiempo invertido en todo lo que llamó, mientras que Exclusive cuenta solo el cuerpo propio de la función – la vista inclusiva encuentra el subsistema costoso, la exclusiva encuentra el bucle costoso. Reset pone los contadores a cero, que es como se mide una etapa de una canalización de forma aislada: reiniciar, dejar que se ejecute, leer.
El perfilador también puede mostrar contadores de eventos de hardware – fallos de caché, predicciones de salto erróneas y los demás eventos que el procesador puede contar – junto a las columnas de tiempos; selecciónalos en la misma ventana sobre un firmware construido con ese soporte.
Ver también
La CLI del paquete openmv puede superponer esos mismos datos de perfilado sobre un flujo en vivo desde la línea de comandos – consulta La CLI openmv.