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:

  1. 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.

    Captura de pantalla del gráfico de llamadas de rendimiento. La información que muestra se describe en el texto que se acompaña.

    La vista Gráfico de llamadas de rendimiento, por omisión, visualiza la información siguiente:

    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.

    Menú emergente que muestra los mandatos Filtrar, Subárbol y Expandir/Contraer que puede utilizar para centrar el gráfico de llamadas.

  2. 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:

  3. 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:

  1. 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.

  2. 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.

    Vista Detalles de método con datos del método Sort.quick

  3. 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.
  4. Para examinar una lista ordenable de todos los métodos:
    1. 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.
    2. Vista Estadísticas de ejecución

    3. En la vista Estadísticas de ejecución, pulse el botón Información de nivel de método ().

      Vista Estadísticas de ejecución que muestra la información de nivel de método

    4. 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.

      Vista Estadísticas de ejecución, ordenada por tiempo base

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.

Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.