Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Perfil para mejorar el rendimiento

¿Qué es la generación de perfiles?

es una forma de medir dónde pasa el tiempo un programa.Profiling Después de identificar qué funciones consumen más tiempo, puede evaluarlas para obtener posibles mejoras de rendimiento. Además, puede hacer un perfil del código como una herramienta de depuración. Por ejemplo, determinar qué líneas de código no se ejecuta puede ayudarle a desarrollar casos de prueba que ejerciten ese código.MATLAB® Si recibe un error en el archivo al generar perfiles, puede ver lo que se ejecutó y lo que no para ayudarle a aislar el problema.

Sugerencia

El código que se optimiza prematuramente puede ser innecesariamente complejo sin proporcionar una ganancia significativa en el rendimiento. Haga que su primera implementación sea lo más simple posible. A continuación, si la velocidad es un problema, utilice la generación de perfiles para identificar cuellos de botella.

Puede hacer un perfil del código mediante el generador de perfiles.MATLAB El generador de perfiles es una interfaz de usuario basada en los resultados devueltos por la función.profile Si está perfilando código que se ejecuta en paralelo, para obtener mejores resultados, utilice el generador de perfiles paralelo.Parallel Computing Toolbox™ Para obtener más información, consulte.Profiling Parallel Code (Parallel Computing Toolbox)

Proceso de perfilado y directrices

Utilice este proceso general para mejorar el rendimiento en el código:

  1. Ejecute el generador de perfiles en el código.

  2. En el informe Resumen de perfil, busque las funciones que utilizan una cantidad significativa de tiempo o que se llaman con más frecuencia.

  3. Vea el informe de detalles de perfil para esas funciones y busque las líneas de código que toman la mayor parte del tiempo o que se llaman con más frecuencia.

    Considere mantener una copia de su primer informe de detalles como base para la comparación. Después de cambiar el código, puede volver a ejecutar el generador de perfiles y comparar los informes.

  4. Determine si hay cambios que puede realizar en esas líneas de código para mejorar el rendimiento.

    Por ejemplo, si tiene una instrucción dentro de un bucle, es posible que pueda mover la instrucción fuera del bucle para que se llame solo una vez.loadload

  5. Implemente las posibles mejoras de rendimiento en el código. Guarde los archivos y ejecútelo.clear all Vuelva a ejecutar el generador de perfiles y compare los resultados con el informe original.

    Si genera un perfil del código idéntico dos veces, puede obtener resultados ligeramente diferentes cada vez debido a fluctuaciones de tiempo inherentes que no dependen del código.

  6. Para seguir mejorando el rendimiento del código, repita estos pasos.

Cuando el código pasa la mayor parte de su tiempo en las llamadas a algunas funciones integradas, probablemente haya optimizado el código tanto como sea posible.

Utilizando el Profiler

Para hacer un perfil de un archivo de código o una línea de código:MATLAB

  1. Abra el generador de perfiles mediante uno de los métodos siguientes:

    • En la ventana de comandos, escriba.profile viewer

    • En la pestaña, en la sección, haga clic enHomeCode.Run and Time

    • En el editor, en la pestaña, en la sección, haga clic enEditorRun.Run and Time Si utiliza este método, el generador de perfiles automáticamente el código en la pestaña actual del editor. Si ese es el código que desea perfil, vaya al paso 4.

  2. En el campo, escriba la instrucción que desea ejecutar.Run this code

    Por ejemplo, puede ejecutar el ejemplo de Lotka-Volterra, que se suministra con:MATLAB

    [t,y] = ode23('lotka',[0 2],[20;20])

    Si, en la sesión actual, ha perfilado previamente la sentencia, selecciónela en la lista. inicia automáticamente la generación de perfiles del código y puede pasar al paso 4.MATLABRun this codeMATLAB

  3. Haga clic.Start Profiling

    Mientras el Profiler se está ejecutando, el indicador es verde y el número de segundos que reporta aumenta.Profile time El indicador aparece en la parte superior derecha de la ventana del Profiler.Profile time

    Cuando el Profiler termina, el indicador se vuelve negro y muestra la longitud de tiempo que el Profiler corrió.Profile time Las sentencias que ha perfilado se muestran como ejecutadas en la ventana de mandatos.

    Esta vez no es el tiempo real que sus declaraciones tomaron para ejecutarse. Es el tiempo transcurrido desde que se hizo clic hasta que se detiene la generación de perfiles.Start Profiling Si el tiempo notificado es muy diferente de lo que esperaba (por ejemplo, cientos de segundos para una instrucción simple), es posible que haya perfilado más tiempo del necesario. Esta vez no coincide con el tiempo notificado en estadísticas de informe de Resumen de perfil, que se basa en el tiempo de reloj de forma predeterminada.performance Para ver las estadísticas de perfil con un tipo de reloj diferente, utilice la función en lugar del generador de perfiles.profile

  4. Cuando se completa la generación de perfiles, el informe Resumen de perfil aparece en la ventana del generador de perfiles. Para obtener más información, consulte.Informe de Resumen de perfil

Perfil de varias sentencias en la ventana de comandos

Para hacer un perfil de más de una instrucción:

  1. En el generador de perfiles, haga clic en.Start Profiling Asegúrese de que no aparece ningún código en el campo.Run this code

  2. En la ventana de comandos, escriba y ejecute las instrucciones que desee perfiar.

  3. Después de ejecutar todas las instrucciones, haga clic en el generador de perfiles y vea el informe Resumen de perfil.Stop Profiling

Perfil de una interfaz de usuario

Puede ejecutar el generador de perfiles para una interfaz de usuario, como la herramienta de diseño y análisis de filtros incluida con.Signal Processing Toolbox™ O puede crear un perfil de una interfaz que haya creado, como una creada mediante GUIDE.

Para perfiir una interfaz de usuario:

  1. En el generador de perfiles, haga clic en.Start Profiling Asegúrese de que no aparece ningún código en el campo.Run this code

  2. Inicie la interfaz de usuario.

  3. Utilice la interfaz. Cuando termine, haga clic en el generador de perfiles y vea el informe Resumen de perfil.Stop Profiling

Nota

Para excluir el proceso de inicio de la interfaz de usuario en el perfil, invierta los pasos 1 y 2. En otras palabras, inicie la interfaz de usuario antes de hacer clic.Start Profiling

Informe de Resumen de perfil

El informe Resumen de perfil presenta estadísticas sobre la ejecución general de la función y proporciona estadísticas de resumen para cada función llamada. A continuación se muestra una imagen del informe Resumen de perfil para el modelo Lotka-Volterra. Ver.Utilizando el Profiler

El informe Resumen de perfil presenta esta información.

ColumnaDescripción
Function Name

Lista de todas las funciones llamadas por el código perfilado. Inicialmente las funciones aparecen en orden de tiempo que tomaron para procesar.

Calls

Número de veces que el código de perfilado llamó a la función.

Total Time

Tiempo total invertido en una función, incluidas todas las funciones secundarias accedidas, en segundos. El tiempo de una función incluye el tiempo invertido en las funciones secundarias. El propio Profiler tarda algún tiempo, que se incluye en los resultados. El tiempo total puede ser cero para los archivos cuyo tiempo de ejecución es inconsecuente.

Self Time

Tiempo total en segundos invertido en una función, excluyendo el tiempo invertido en funciones secundarias. El tiempo de auto también incluye algunos gastos indirectos resultantes del proceso de perfilado.

Total Time Plot

Visualización gráfica que muestra el tiempo de auto en comparación con el tiempo total.

En el informe de Resumen, puede:

  • Imprima el informe haciendo clic en el botón de impresión.

  • Obtenga información más detallada sobre una función en particular haciendo clic en su nombre en la columna.Function Name Para obtener más información, consulte.Informe de detalle de perfil

  • Ordenar por una columna dada haciendo clic en el nombre de la columna. Por ejemplo, haga clic en el vínculo para ordenar las funciones alfabéticamente.Function Name Inicialmente los resultados aparecen en orden.Total Time

Informe de detalle de perfil

El informe detalle de perfil muestra los resultados de generación de perfiles para una función llamada durante la generación de perfiles.MATLAB

Para abrir el informe detalle de perfil, haga clic en un nombre de función en el informe Resumen de perfil. Para volver al informe Resumen de perfil desde el informe detalle de perfil, haga clic enen la barra de herramientas de la ventana perfil.

El encabezado del informe detalle de perfil contiene esta información.

  • Nombre de la función perfilada

  • Número de veces que la función primaria llama a la función perfilada

  • El tiempo invertido en la función perfilada

  • Enlace para abrir la función en su editor predeterminado

  • Vínculo para copiar el informe en una ventana independiente. Guardar una copia del informe es útil para comparar el impacto de los cambios en la función. Cuando cambie el archivo.

Para especificar las secciones que incluye el informe de detalles de perfil, seleccione las casillas de verificación situadas en la parte superior del informe y haga clic en el botón.Refresh Utilice las casillas de verificación para seleccionar entre estas opciones.

Opción de visualizaciónDetalles
Show parent functions

Mostrar información sobre las funciones primarias, con vínculos a sus informes de detalles. Para abrir un informe de detalle de perfil para una función principal, haga clic en el nombre de la función.

Show busy lines

Enumere las líneas de la función perfilada que utilizaron la mayor cantidad de tiempo de procesamiento.

Show child functions

Enumere todas las funciones llamadas por la función perfilada. Para abrir un informe de detalle de perfil para una función secundaria, haga clic en el nombre de la función.

Show Code Analyzer results

Muestra información sobre problemas y posibles mejoras para la función perfilada.

Show file coverage

Mostrar estadísticas sobre las líneas de código en la función que se ejecutó durante la generación de perfiles.MATLAB

Show function listing

Mostrar el código fuente de la función, si es un archivo de código.MATLAB

Para cada línea de código, incluye estas columnas:Function listing

  • El tiempo de ejecución de cada línea de código

  • Número de veces que se ejecutó la línea de códigoMATLAB

  • El número de línea

  • El código fuente de la función. El color del texto indica lo siguiente:

    • Verde — líneas comentadas

    • Negro — líneas de código ejecutadas

    • Gris — líneas de código no ejecutadas

De forma predeterminada, el informe detalles de perfil resalta las líneas de código con el tiempo de ejecución más largo. Cuanto más oscuro es el resaltado, mayor es la línea de código que se ha tardado en ejecutarse. Para cambiar los criterios de resaltado, utilice la lista desplegable de códigos de resaltado de color.

Consulte también

Temas relacionados