Ejercicio 1.3: Identificación de un cuello de botella de rendimiento
Antes de empezar, complete el Ejercicio 1.2 Recopilación de datos de rendimiento
y cobertura.
Los cuellos de botella de rendimiento son áreas dentro del código que ralentizan o detienen la
ejecución. En este procedimiento, la vista Gráfico de llamadas de rendimiento se utiliza para
identificar un cuello de botella dentro del programa sort.
Nota: la actividad general de recopilación de datos de cobertura de nivel de línea puede
distorsionar los datos de rendimiento recopilados. Si no obtiene resultados parecidos a los
descritos aquí, utilice una ejecución de perfilado para recopilar datos para el rendimiento y otra
ejecución de perfilado para recopilar datos para la cobertura. Recuerde esto cuando perfile sus
propios programas.
Para buscar cuellos de botella:
- En el Supervisor de rendimiento, pulse con el botón derecho el recurso de perfilado
"Análisis de tiempo de ejecución" y pulse Abrir con > Gráfico de llamadas de
rendimiento.
La vista Gráfico de llamadas de rendimiento, por omisión, visualiza la información siguiente:
- Los 20 nodos que más tiempo consumen en la ejecución del perfilado más el nodo
Proceso que representa el tiempo acumulado de toda la ejecución. En nuestro caso, según
las estadísticas Visibles de la línea de estado, hay un total de 17 nodos y se visualizan
los 17. Un nodo puede representar un método, un proceso o una hebra.
- La estructura de llamadas dinámicas del programa durante la ejecución del perfilado, mostrada
por líneas de conexión (arcos) que enlazan los nodos. Las líneas más gruesas indican las
vías de acceso de llamada que necesitan más tiempo.
Sugerencia: pulse un nodo con el botón derecho del ratón para visualizar un menú que le
permite centrar la vista en el nodo y sus descendientes (Subárbol) o manipular la vista de
otras formas. Estos mandatos de menú permiten simplificar los datos recopilados incluso para una
aplicación pequeña.
- Tenga en cuenta que en el campo Resaltar, situado encima del gráfico, está seleccionado Max
Path to Root.
El resaltado Max Path to Root muestra la vía de acceso de llamadas que ocupa más tiempo
en la ejecución actual de la aplicación. Específicamente, cambia la visualización del gráfico de
llamadas de la forma siguiente:
- El nodo del programa que ha ocupado más tiempo está seleccionado. En nuestro ejemplo, este nodo
es el método quick de la clase Sort.
- La vía de acceso de llamada del nodo seleccionado al nodo de Process que representa el tiempo
total de la ejecución, está resaltada.
- Fíjese en que también hay un método bsort en el gráfico de llamadas que representa el
algoritmo de la ordenación burbuja. Queda claro a partir del grosor de las líneas que el
rendimiento de bsort ha sido mejor que el de qsort en esta ejecución.
Obtener información adicional de rendimiento
Tanto la vista Gráfico de llamadas de rendimiento como otras vistas de la plataforma proporcionan
detalles adicionales acerca del rendimiento de la aplicación.
Puede obtener datos adicionales de rendimiento de las maneras siguientes:
- Para obtener más información acerca del rendimiento de Sort.quick, sitúe el cursor
sobre el nodo Sort.quick. Aparece un cuadro de ayuda flotante con estadísticas del método. Fíjese en que el método hace muchas llamadas.
- Para obtener una vista gráfica detallada de los datos del método, efectúe una doble pulsación
sobre el nodo. Se abre la vista Detalles de método.
- En la vista Detalles de método, busque el panel Llamadores. Fíjese en que al método lo llama
Sort.Qsort una vez, pero que se llama a sí mismo varios miles de veces. Esto en sí no es
sospechoso; una ordenación rápida es normalmente muy repetitiva. Sin embargo, la duración
relativamente larga de las llamadas sí es sospechosa.
- Para examinar una lista ordenable de todos los métodos:
- Pulse con el botón derecho del ratón el recurso de perfilado "Análisis de tiempo de
ejecución" y seleccione Abrir con > Estadísticas de ejecución.
- En la vista Estadísticas de ejecución, pulse el botón Información de nivel de método
(
).

- Pulse la cabecera de columna Tiempo base para ordenar los métodos según el tiempo
transcurrido en cada método durante la ejecución actual. Puede ver que quick es
considerablemente más lento que el método de ordenación de burbuja bsort.

Ahora ha verificado que el método quick ocupa más tiempo del esperado. También ha visto
cómo obtener información de rendimiento de las vistas Gráfico de llamadas de rendimiento y Detalles
de método. Esta información será importante a la hora de inspeccionar el código y evaluar si es
necesario realizar modificaciones.
Sin embargo, antes de inspeccionar el código, debemos averiguar si hay métodos en el código que
no se han ejecutado. Esta comprobación nos proporcionará un mejor conocimiento del ámbito
de la aplicación y nos indicará también si hay vías de acceso alternativas que este programa puede
contener.
Está listo para comenzar el Ejercicio 1.4: Comprobación de cobertura
de código para determina si hay métodos no ejecutados y vías de acceso alternativas.