La optimización del código es un aspecto clave de la codificación y varios programas ayudan a rastrear el rendimiento del código. Las herramientas de software se denominan perfiladores. Si está buscando uno que esté basado en Linux, tiene gprof a su disposición.
Trabajar con GProf Profiler
El GProf es un perfilador de GNU que mide el rendimiento de un programa. Mide el rendimiento de los programas escritos en Fortran, C ++, Assembly y C. Los resultados generados por el comando Linux ayudan a optimizar el código para una ejecución y eficiencia más rápidas al mostrar las partes del programa que consumen la mayor cantidad de tiempo de ejecución.
Para usar el comando gprof para analizar su programa, debe compilarlo utilizando el -pg opción. Primero, creemos un programa para usar para nuestro ejemplo. Aquí, creamos un programa C, lo compilamos, ejecutamos la salida con GProf y luego verificamos el informe generado por el GProf para ver cómo funciona el comando.
Nuestro archivo de programa se nombra demo1.C. Para compilarlo usando el compilador GCC, debe agregar el -pg Opciones para agregar detalles adicionales para ser utilizados por el GProf. El comando será:
$ GCC -PG Demo1.salida c -o1
Nuestra salida compilada es salida1 Y una vez generado, debemos ejecutarlo normalmente usando el siguiente comando:
ps ./salida1
Ejecutar este ejecutable genera los datos de perfil que, por defecto, se nombra gmon.afuera.
GProf funciona con GMON.para ver todos los detalles sobre el programa.
$ GPROF Output1 gmon.afuera
Tenga en cuenta que GProf toma dos argumentos: el programa compilado y el GMON.afuera. El informe de salida contiene dos secciones: el perfil plano y el Generación de perfil de gráfico de llamadas.
Análisis de la salida del GProf Profiler
1. Perfil plano
De la salida anterior, podemos notar la sección de diversas en el informe.
Lo primero a tener en cuenta es las diversas funciones que el programa tenía. En este caso, tuvimos el Func3, Func2, Func1, y randomnum Listado en el nombre sección. El % tiempo representa el tiempo de ejecución de cada una de las funciones. Vemos que el Func3 Tomó más tiempo para correr, lo que implica que si necesitáramos optimizar nuestro programa, ahí es donde comenzaríamos.
El llamadas representar el número de veces que se invoca cada una de las funciones. Para cada función, el tiempo dedicado a cada función por llamada se representa en el Self MS/Call. Antes de alcanzar una función específica, también puede ver el tiempo dedicado a la función sobre ella, el segundos acumulativos, Eso agrega el yo segundo y el tiempo dedicado a las funciones anteriores.
El Seconds ¿Es el tiempo dedicado solo a una función específica?. El MS/Llamada total ¿Es el tiempo que se toma en una función que incluye el tiempo tomado en sus descendientes para cada llamada realizada a la función?.
Usando los detalles dados anteriormente, ahora puede optimizar el rendimiento de su programa para ver qué parte necesita un rehacer para reducir el uso del tiempo.
2. Gráfico de llamadas
Es una tabla que representa una función y sus hijos.
El índice Enumera la función actual con la que puede hacer coincidir el número de su nombre a la derecha.
El %tiempo representa el tiempo dedicado a una función y sus hijos mientras el ser es el tiempo que toma la función excluyendo a sus hijos.
La mejor parte con el gráfico de llamadas es que cada detalle está bien representado y puede obtener más información sobre cualquier resultado de la salida que se muestra en su línea de comando.
Conclusión
La conclusión es que al trabajar con programas que usan el GCC compilador, siempre puede verificar su velocidad de ejecución para saber cómo optimizarlos mejor. Presentamos cuál es el comando gprof y lo que hace. Además, hemos visto un ejemplo práctico de usarlo para darle una ventaja para optimizar su código.