Analisando os dados de desempenho para código Visual C++, Visual C # e Visual Basic em aplicativos da Windows Store
Este tópico descreve os dados de desempenho do código Visual C++, Visual C# e Visual Basic que é apresentado nas visualizações de relatório da ferramenta de criação de perfil do Microsoft Visual Studio Express 2012 for Windows 8. Para coletar dados de desempenho de Visual C++, Visual C# e Visual Basic, consulte um destes tópicos:
Neste tópico
Este tópico contém as seguintes seções:
Abrir o arquivo de relatório de criação de perfil
Tipos de dados de desempenho
Apenas Meu Código
Tipos de visualizações de relatório de desempenho
Visualizações de relatório de desempenho
Visualização de resumo
Visualização Detalhes da Função
Visualização Árvore de Chamadas
Visualização Chamador/Receptor
Visualizações Módulos e Funções
Visualização Linhas
Personalizando visualizações de grade de dados
Abrir o arquivo de relatório de criação de perfil
Quando você interrompe a criação de um perfil no IDE do Visual Studio, os dados de desempenho são exibidos automaticamente em um documento.
Para abrir um arquivo de relatório de criação de perfil (.vspx) que foi gerado pela ferramenta de linha de comando VSPerf ou que foi salvo após uma criação de perfil anterior, faça o seguinte:
Se necessário, abra o Visual Studio.
No menu Arquivo, escolha Abrir Arquivo.
Na caixa de diálogo Abrir Arquivo, navegue até a pasta que contém o arquivo de relatório de criação de perfil e escolha esse arquivo.
Tipos de dados de desempenho
O criador de perfil do Visual Studio Express 2012 for Windows 8 usa uma técnica de amostragem para coletar dados de desempenho de código Visual C++, Visual C# e Visual Basic. Em um intervalo baseado no relógio do processador, o criador de perfil captura um instantâneo das funções ativas no momento — a pilha de chamadas. Uma função ativa na pilha de chamadas está executando seu próprio código ou está esperando pela execução de funções que ela chamou. Para cada função na pilha de chamadas amostrada, o criador de perfil atribui valores de amostragem à função, desta forma:
Se a função estiver executando código em seu próprio corpo (e não em uma função filho), as contagem de exemplos Inclusiva e Exclusiva da função serão incrementadas.
Se a função estiver aguardando o retorno de uma função filho, somente a contagem de exemplos Inclusiva da função será incrementada.
A criação de um perfil de dados para uma função inclui o número absoluto de exemplos coletados para a função e a porcentagem relativa desses exemplos em comparação com o número total de exemplos que foram coletados na criação do perfil. Os dados são calculados para dois conjuntos de valores de controle de tempo:
Os valores Inclusivos são calculados a partir do número total de exemplos coletados para uma função quando ela está na pilha de chamadas, incluindo os exemplos que são coletados quando as funções filho estão sendo executadas. Quando uma pilha de chamadas amostrada é analisada, as contagens de exemplos inclusivas de todas as funções na pilha de chamadas são incrementadas.
Os valores Exclusivos são calculados a partir do número total de exemplos coletados para uma função quando ela está executando seu próprio código. Os valores exclusivos não incluem exemplos que são coletados quando as funções filho estão sendo executadas. Quando uma pilha de chamadas amostrada é analisada, a contagem de exemplos exclusiva só é incrementada para a função que está executando código em seu próprio corpo.
Tipos de visualizações de relatório de desempenho
As visualizações de relatório de criação de perfil exibem dados de duas maneiras:
Visualizações de gráfico de chamadas mostram informações sobre funções no contexto de caminhos de execução.
A árvore de Afunilamento na janela de resumo mostra o caminho de execução para o maior número de exemplos que levaram o maior tempo na criação de perfil.
A visualização Árvore de Chamadas é um gráfico de chamadas para todos os caminhos de execução que foram amostrados na criação de perfil.
As visualizações Detalhes da Função e Chamador/Receptor enfocam uma função selecionada, exibindo as funções que chamaram a função selecionada e as funções que ela chamou.
As visualizações de gráfico de chamadas ajudam a localizar problemas de desempenho nos algoritmos.
Visualizações de lista de funções exibem dados de desempenho para as funções de uma tabela. Você pode classificar as funções escolhendo uma coluna de dados.
A lista Funções com Mais Trabalho Individual na página de resumo mostra as funções com o maior número de exemplos exclusivos que foram coletados na criação de perfil.
A visualização Módulos agrupa funções pelo arquivo .dll ou .exe que as contém.
A visualização Funções é uma lista única de funções.
A visualização Linhas exibe dados de desempenho para as instruções de função que estavam em execução quando um exemplo foi coletado.
Você pode navegar entre as visualizações selecionando uma função e escolhendo uma nova visualização na lista suspensa Modo de Exibição Atual.
Apenas Meu Código
Por padrão, o criador de perfil usa a funcionalidade Apenas Meu Código quando cria relatórios. Ao analisar informações de pilha de chamadas, o criador de perfil determina se uma função na pilha é um membro do seu código ou um membro do código do sistema, como um método na Biblioteca de Classes Base do .NET. Quando Apenas Meu Código está habilitado e a função é uma chamada para o código do sistema, a análise do criador de perfil adiciona todos os exemplos subsequentes que são coletados para a pilha de chamadas aos valores exclusivos e inclusivos da primeira chamada do sistema. Portanto, as chamadas do sistema são acumulados na primeira chamada do sistema, o que ajuda você a se concentrar em otimizar o seu próprio código.
Para alterar o comportamento padrão de Apenas Meu Código e exibir todas as chamadas do sistema, faça o seguinte:
No menu Ferramentas, selecione Opções.
Na caixa de diálogo Opções, escolha Ferramentas de Desempenho e depois Geral.
No grupo Apenas Meu Código, desmarque a caixa de seleção Habilitar Apenas Meu Código para relatórios de criador de perfil (amostragem).
Visualizações de relatório de desempenho
Visualização de resumo
A página de resumo oferece duas visualizações dos dados de criação de perfil que geralmente podem indicar os melhores candidatos para a otimização do desempenho.
A árvore de Afunilamento mostra a pilha de chamadas com o maior número de exemplos na criação de perfil. Entender a razão por que esse algoritmo consome tanto tempo pode levar a uma otimização.
A lista Funções com Mais Trabalho Individual apresenta as dez funções que gastaram o maior tempo exclusivo. Você pode obter ganhos de desempenho rápidos e significativos otimizando o código de função ou reduzindo o número de vezes que essas funções são chamadas.
Para abrir uma visualização Detalhes da Função referente a uma função, escolha o nome da função na visualização de resumo.
Visualização Detalhes da Função
O gráfico de barras Distribuição de Custos representa as relações entre uma função que você seleciona e as funções que fazem chamadas e executaram a função selecionada, e entre a função selecionada e as funções que foram chamadas por ela.
A barra Funções de Chamada mostra as funções que chamaram a função selecionada. O tamanho de um bloco de função de chamada indica a porcentagem do tempo total de execução da função selecionada que foi causada pela função de chamada.
A barra Função Selecionada indica a quantidade relativa do tempo total de execução que a função selecionada gastou executando seu próprio código (o bloco Corpo da Função) e a quantidade de tempo gasto executando as funções chamadas pela função selecionada.
A barra Funções Chamadas mostra as funções que foram chamadas pela função selecionada. O tamanho de um bloco de função chamada indica a porcentagem do tempo total de execução da função chamada que foi gasta na função chamada.
Você pode escolher uma função chamada ou uma função de chamada para fazer dela a função selecionada.
Visualização Árvore de Chamadas
Você pode usar a visualização Árvore de Chamadas para explorar os caminhos de execução da função que foram percorridos em seu aplicativo. A raiz da árvore é o ponto de entrada no aplicativo. Cada nó da função lista todas as funções que ela chamou e os dados de desempenho sobre essas chamadas de função. Os valores de função na visualização Árvore de Chamadas são para as instâncias de função que foram chamadas pela função pai na árvore de chamadas. Os valores de porcentagem são a proporção entre o valor do tempo das instâncias da função e o tempo total de execução da criação de perfil.
Para focalizar um nó da visualização Árvore de Chamadas, selecione o nó e escolha Definir Raiz no menu de atalho. Ao definir o nó raiz, você elimina todas as outras entradas da visualização exceto a subárvore do nó selecionado. Para redefinir o nó raiz de volta como sendo o nó original, escolha Redefinir Raiz no menu de atalho.
Colunas da visualização Árvore de Chamadas
Nome da coluna |
Descrição |
---|---|
Exemplos Inclusivos |
O número de exemplos que foram coletados pelas instâncias da função que foram chamadas pela função pai na árvore de chamadas. O número de exemplos inclui exemplos que foram coletados para as funções chamadas pela função. |
Exemplos Exclusivos |
O número de exemplos que foram coletados pelas instâncias da função que foram chamadas pela função pai na árvore de chamadas. O número de exemplos não inclui exemplos que foram coletados para as funções chamadas pela função. |
% de Exemplos Inclusivos |
A porcentagem do número total de exemplos que foram coletados na criação de perfil para as instâncias da função que foram chamadas pela função pai. O valor inclui exemplos que foram coletados para as funções que foram chamadas pela função. |
% de Exemplos Exclusivos |
A porcentagem do número total de exemplos que foram coletados na criação de perfil para as instâncias da função que foram chamadas pela função pai. O valor não inclui exemplos que foram coletados para as funções que foram chamadas pela função. |
Nome do Módulo |
O nome do módulo (.dll ou .exe) que contém a função. |
Visualização Chamador/Receptor
A visualização Chamador/Receptor é uma representação em árvore dos dados no gráfico de barras Distribuição de Custos dos Detalhes da Função que inclui todos os detalhes de controle de tempo. Use essa visualização para investigar o relacionamento entre uma função selecionada e as funções que a chamaram e a função que ela chamou. A visualização Chamador/Receptor é composta de três grades.
A Função atual que aparece na grade do meio exibe informações de criação de perfil sobre a função selecionada. Os valores incluem exemplos de todas as chamadas feitas à função. As Funções que chamaram a função atual aparecem na grade superior e as Funções que foram chamadas pela função atual aparecem na grade inferior. Os valores da função atual são os totais de todas as chamadas amostradas feitas à função. Os valores das funções chamadas e das funções de chamada incluem apenas os exemplos coletados para a função quando ela estava sendo chamada pela função selecionada ou a estava chamando.
Para navegar pelas árvores de chamadas de uma função, clique duas vezes em uma função chamada ou uma função de chamada. Isso fará da função selecionada a nova função selecionada e mostrará os respectivos chamadores e funções chamadas.
Colunas da visualização Chamador/Receptor
Nome da coluna |
Descrição |
---|---|
Exemplos Inclusivos |
|
Exemplos Exclusivos |
|
% de Exemplos Inclusivos |
|
% de Exemplos Exclusivos |
|
Visualizações Módulos e Funções
As visualizações Módulos e Funções exibem os detalhes dos dados de criação de perfil para as funções no relatório de criação de perfil. A visualização Módulos organiza as funções JavaScript pelo arquivo de origem .js que as contém. Outras funções são listadas pelo módulo, como uma .dll. A visualização Funções lista todas as funções sem usar uma hierarquia. Geralmente é mais fácil localizar seu próprio código na visualização Módulos do que na visualização Funções, mas talvez seja mais fácil comparar funções na visualização Funções.
Colunas das visualizações Módulos e Funções
Nome da coluna |
Descrição |
---|---|
Exemplos Inclusivos |
O número de exemplos que foram coletados quando a função estava na pilha de chamadas. O número de exemplos inclui exemplos que foram coletados para as funções chamadas pela função. |
Exemplos Exclusivos |
O número de exemplos que foram coletados quando a função estava executando seu próprio código. Os exemplos exclusivos não incluem exemplos que foram coletados quando as funções que foram chamadas pela função estavam em execução. |
% de Exemplos Inclusivos |
A porcentagem do número total de exemplos que foram coletados na criação de perfil que foram coletados quando a função estava na pilha de chamadas. O numerador representa os Exemplos Inclusivos da função. O denominador é o número total de exemplos que foram coletados para a criação de perfil. |
% de Exemplos Exclusivos |
A porcentagem do número total de exemplos que foram coletados na criação de perfil que foram coletados para a função. O valor não inclui exemplos que foram coletados para as funções que foram chamadas pela função. |
Visualização Linhas
A visualização Linhas de dados de amostragem lista os dados de desempenho das instruções que estavam em execução quando os exemplos foram coletados na criação de perfil. Em um arquivo de origem, uma instrução pode abranger mais de uma linha em um arquivo de origem, e uma única linha pode incluir mais de uma instrução.
Nome da coluna |
Descrição |
---|---|
Exemplos Inclusivos |
O número de exemplos que foram coletados para a linha na criação de perfil. O número de exemplos inclui exemplos que foram coletados para as funções chamadas pela linha. |
Exemplos Exclusivos |
O número de exemplos que foram coletados para a linha na criação de perfil. O número de exemplos não inclui exemplos que foram coletados para as funções chamadas pela linha. |
% de Exemplos Inclusivos |
A porcentagem do número total de exemplos que foram coletados na criação de perfil que foram coletados para a linha. O valor inclui exemplos que foram coletados para as funções que foram chamadas pela linha. |
% de Exemplos Exclusivos |
A porcentagem do número total de exemplos que foram coletados na criação de perfil que foram coletados para a linha. O valor não inclui exemplos que foram coletados para as funções que foram chamadas pela linha. |
Início da Linha de Origem |
O número de linha inicial no arquivo de origem em que esse exemplo foi coletado. |
Início do Caractere de Origem |
O deslocamento do caractere inicial na linha do arquivo de origem em que esse exemplo foi coletado. |
Final da Linha de Origem |
O número de linha final no arquivo de origem em que esse exemplo foi coletado. |
Final do Caractere de Origem |
O deslocamento do caractere final na linha do arquivo de origem em que esse exemplo foi coletado. |
Personalizando visualizações de grade de dados
Você pode adicionar ou remover colunas de dados e alterar a ordem em que as colunas são exibidas. Abra o menu de atalho para uma linha de cabeçalho da tabela e escolha Adicionar/Remover Colunas. Marque as caixas de seleção das colunas que você deseja exibir e desmarque as caixas de seleção das colunas que você deseja ocultar. Use os botões de direção para mover uma coluna selecionada.
Colunas de dados adicionais para criação de perfil
Nome da coluna |
Descrição |
---|---|
Endereço da Função |
O endereço de memória da função. |
Número da Linha da Função |
O número de linha do início dessa função no arquivo de origem. |
Arquivo de Origem |
O arquivo de origem que contém a definição dessa função. |
Nome do Módulo |
O nome do módulo que contém a função. |
Caminho do Módulo |
O caminho do módulo que contém a função. |
ID do Processo |
A ID de processo (PID) da criação de perfil. |
Nome do Processo |
O nome do processo. |