Exercício 1.3: Identificando um Gargalo de Desempenho

Antes de iniciar, você deve concluir o Exercício 1.2 Coletando Dados de Desempenho e de Cobertura.

Os gargalos de desempenho são áreas dentro do código que diminuem a velocidade ou param a execução. Nesse procedimento, você utiliza a visualização Gráfico de Chamada de Desempenho para identificar um gargalo dentro do programa sort.

Nota: o código extra para coletar dados de cobertura do nível de linha podem distorcer os dados do desempenho coletados. Se você não receber resultados semelhantes a esses descritos aqui, utilize uma execução de traçado de perfil para coletar dados de desempenho e outra execução de traçado de perfil para coletar dados de cobertura. Lembre-se disso quando aplicar perfil nos próprios programas.

Para localizar gargalos:

  1. No Monitor de Tração de Persil, clique com o botão direito do mouse no recurso de traçado de perfil " Execution Time Analysis (Análise de Tempo de Execução) " e, em seguida, clique em Open With (Abrir com) > Performance Call Graph (Gráfico de Chamada de Desempenho).

    Imagem de Tela do Gráfico de Chamada de Desempenho. As Informações Mostradas São Descritas no Texto que Acompanha.

    A visualização do Gráfico de Chamada de Desempenho, por padrão, exibe as seguintes informações:

    Dica: Clique com o botão direito do mouse no nó para exibir um menu que permita que você foque a exibição no nó e em seus descendentes (a Subtree (Subárvore)) ou manipule a exibição de outras maneiras. Esses comandos de menu permitem que você simplifique a massa de dados coletados para um aplicativo ainda menor.

    Menu Pop-up Mostrando os Comandos Filtro, Subárvore e Expansão/Colapso que Você Pode Utilizar para Focar o Gráfico de Chamada.

  2. Observe que no campo Highlight (Destacar), localizado acima do gráfico, Max Path to Root (Maximizar Caminho para Raiz) está selecionada.

    Max Path to Root (Maximizar Caminho para Raiz) em destaque mostra o único caminho de chamada que consome mais tempo na atual execução do aplicativo. Especificamente, isso altera a exibição do gráfico de chamada das seguintes maneiras:

  3. Observe que há também um método bsort no gráfico de chamada, representando o algoritmo da classificação por bolhas. Isso fica claro a partir da espessura das linhas que a bsort executou melhor que a qsort nesta execução.

Obtendo Informações Adicionais sobre Desempenho

A visualização Gráfico de Chamada de Desempenho e outras visualizações na plataforma fornecem detalhes adicionais sobre o desempenho do seu aplicativo.

Você pode obter dados adicionais de desempenho das seguintes maneiras:

  1. Para saber mais sobre como a Sort.quick foi executada, pare seu cursor sobre o nó Sort.quick. Uma dica de ferramenta aparece com estatísticas para o método. Observe que o método faz muitas chamadas.

  2. Para obter uma exibição gráfica detalhada dos dados para o método, clique duas vezes no nó. A visualização Method Detail (Detalhes do Método) é aberta.

    Visualização Detalhes do Método com Dados para o Método Sort.quick

  3. Na visualização Method Detail (Detalhes do Método), observe a área de janela dos Callers (Responsáveis pela Chamada). Observe que o método é chamado pela Sort.Qsort somente uma vez, mas chama a si mesmo milhares de vezes. Ele em si mesmo não é duvidoso; normalmente uma classificação rápida é severamente recursiva. No entanto, a quantidade de tempo relativamente grande para as chamadas é duvidosa.
  4. Para examinar uma lista classificável de todos os métodos:
    1. Clique com o botão direito do mouse no recurso de traçado de perfil "Execution Time Analysis (Análise de Tempo de Execução)" e selecione Open With (Abrir com) > Execution Statistics (Estatísticas de Execução).
    2. Visualização Estatísticas de Execução

    3. Na visualização Execution Statistics (Estatísticas de Execução), clique no botão Method Level Information (Informações de Nível do Método) ().

      Visualização Estatísticas de Execução exibindo informações do nível do método

    4. Clique no cabeçalho da coluna Base Time (Tempo Base) para classificar os métodos de acordo com a quantidade de tempo gasta em cada método durante a execução atual. Você pode ver que quick é consideravelmente mais lento que método de classificação por bolhas bsort.

      Visualização Estatísticas de Execução, classificadas por tempo de base

Você verificou agora que o método quick consome mais tempo do que o esperado. Você viu também como se pode obter informações de desempenho das visualizações Gráfico de Chamada de Desempenho e Detalhes do Método. Estas informações serão importantes quando você inspecionar o código e descobrir onde é preciso fazer modificações.

Antes de inspecionar o código, no entanto, devemos descobrir também se havia algum método no código que não foi executado. Essa verificação nos dará um melhor entendimento do escopo do aplicativo e também indicará se há algum caminho alternativo que esse programa pode conter.

Você está pronto para iniciar o Exercício 1.4: Verificando a Cobertura de Código para determinar se há algum método não executado e caminhos alternativos.

Feedback
(C) Copyright IBM Corporation 2000, 2005. Todos os Direitos Reservados.