Analisar a capacidade de resposta da interface de usuário em aplicativos da Store (XAML)

Aplica-se ao Windows e Windows Phone

Use o criador de perfil Capacidade de Resposta da Interface de Usuário XAML para aplicativos da Store para localizar e corrigir problemas de desempenho relacionados à renderização e processamento de XAML. Tempos de inicialização e de navegação longos, movimento panorâmico e rolagem desiguais e atrasos no processamento de entrada do usuário são alguns dos problemas que a ferramenta pode ajudá-lo a analisar.

Dica

Você pode coletar e analisar os dados de uso da CPU e de consumo de energia junto com dados da capacidade de resposta da interface de usuário XAML.Consulte Executar ferramentas de análise na página Desempenho e Diagnóstico.

Conteúdo

Identificar cenários com marcas de usuário

Coletar dados de capacidade de resposta da interface de usuário para seu aplicativo

Coletar dados de capacidade de resposta da interface de usuário para um aplicativo instalado

Analisar dados de capacidade de resposta da interface de usuário

Otimizar a capacidade de resposta do XAML

Identificar cenários com marcas de usuário

Você também pode adicionar marcas do usuário aos seus dados de perfil para ajudar a identificar áreas na régua da linha do tempo.

Marcas de usuário na linha do tempo

A marca aparece como um triângulo laranja na linha de tempo no momento em que o método é executado. A mensagem e a hora são exibidas como uma dica de ferramenta quando você passa o cursor do mouse sobre a marca. Se duas ou mais marcas de usuário ficarem próximas, elas serão mescladas e os dados de dica de ferramenta serão combinados. Você pode aplicar zoom na linha de tempo para separar as marcas.

Para adicionar uma marca de usuário ao código C#, Visual Basic e C++, crie primeiro um objeto Windows.Foundation.Diagnostics LoggingChannel. Em seguida, insira chamadas para os métodos LoggingChannel.LogMessage nos pontos do código que você deseja marcar. Use LoggingLevel.Information nas chamadas.

Quando o método é executado, uma marca de usuário é adicionada aos dados de criação de perfil juntamente com uma mensagem.

Dica

  • Windows.Foundation.Diagnostics LoggingChannel implementa a interface Windows.Foundation.IClosable (projetada como System.IDisposable em C# e VB). Para evitar o vazamento de recursos do sistema operacional, chame Dispose() quando você terminar o trabalho com o canal de registro em log.

  • Cada canal de registro em log aberto deve ter um nome exclusivo.Tentar criar um novo canal de registro em log com o mesmo nome de um canal não descartado gera uma exceção.

Veja a Amostra do Windows SDK Amostra LoggingSession para obter mais exemplos.

Coletar dados de capacidade de resposta da interface de usuário para seu aplicativo

Você pode analisar a capacidade de resposta do seu aplicativo no dispositivo ou no simulador/emuladores do Visual Studio ou em um dispositivo remoto. Consulte Executar aplicativos da Store pelo Visual Studio. Veja a seguir as etapas básicas:

  1. Escolha onde você deseja executar o aplicativo na lista suspensa ao lado do botão Iniciar Depuração na barra de ferramentas Padrão do depurador.

    Em execução no simulador

  2. Quando você estiver criando um perfil em um tablet ou computador diferente do computador do Visual Studio, configure seu projeto para a criação remota de perfil. Consulte Executar aplicativos da Windows Store em uma máquina remota a partir do Visual Studio.

  3. No menu Depurar, escolha Desempenho e Diagnóstico.

    Escolha o criador de perfil XAML no Hub de diagnóstico

  4. Selecione Capacidade de resposta da interface de usuário XAML e Iniciar.

    Dica

    Ao iniciar o criador de perfil Capacidade de resposta da interface de usuário XAML, talvez você veja a janela Controle de Conta de Usuário solicitando sua permissão para executar o arquivo VsEtwCollector.exe.Selecione Sim.

  5. Execute seu aplicativo para coletar dados.

    Dica

    Execute o aplicativo diretamente no dispositivo.O desempenho do aplicativo observado no simulador ou por uma conexão de área de trabalho remota pode não ser indicativo do desempenho real do dispositivo.

  6. Para interromper a criação do perfil, retorne ao Visual Studio (Alt + Tab) e selecione Parar de coletar na página Desempenho e Diagnóstico.

    Interromper a coleta de dados

    O Visual Studio analisa os dados coletados e exibe os resultados.

    A página XAML da interface do usuário responsiva do relatório

Coletar dados de capacidade de resposta da interface de usuário para um aplicativo instalado

O criador de perfil Capacidade de resposta da interface de usuário XAML só pode ser executado nos aplicativos da Windows Store 8.1 que são iniciados a partir de uma solução do Visual Studio ou são instalados a partir da Windows Store. Quando uma solução é aberta no Visual Studio, o destino padrão é Projeto de Inicialização. Você pode analisar a capacidade de resposta XAML para um aplicativo instalado no local ou em um dispositivo remoto sem uma solução aberta.

Para direcionar um aplicativo instalado:

  1. Escolha Alterar Destino e escolha Aplicativo Instalado.

    Alterar a lista de destino

  2. Criação remota de perfil. Para executar o criador de perfil de capacidade de resposta XAML em um dispositivo remoto, as Ferramentas Remotas do Visual Studio devem ser instaladas e estar em execução no dispositivo. Consulte Executar aplicativos da Windows Store em uma máquina remota a partir do Visual Studio.

    Na caixa de diálogo Selecionar Pacote de Aplicativos Instalado, escolha Computador Remoto e então especifique o dispositivo remoto.

    Selecione o pacote de aplicativos instalado para um dispositivo remoto

  3. Na lista Pacotes de aplicativos instalados para a sessão atual, escolha o aplicativo de destino.

    Marque a caixa de diálogo pacote de aplicativos instalado

  4. Escolha Capacidade de Resposta da Interface de Usuário XAML na página Desempenho e Diagnóstico.

  5. Escolha Iniciar para iniciar a análise.

Para interromper a criação do perfil, retorne ao Visual Studio (Alt + Tab) e selecione Pare a coleta na página Hub de diagnóstico.

Analisar dados de capacidade de resposta da interface de usuário

Diagnostic session timeline**|UI Thread utilization|Visual throughput (FPS)|Parsing view|**Hot Elements view

Depois de coletar os dados para a criação de perfil, você pode usar estas etapas para iniciar a análise:

  1. Examine as informações nos gráficos Utilização de thread de interface de usuário e Taxa de transferência visual (FPS) e use as barras de navegação da linha do tempo para selecionar o intervalo de tempo que deseja analisar.

  2. Usando as informações nos gráficos Utilização de thread de interface de usuário ou Taxa de transferência visual (FPS), examine os detalhes nas exibições Análise ou Principais Elementos para descobrir as possíveis causas de qualquer ausência aparente de capacidade de resposta.

Linha do tempo da sessão de diagnóstico

Cronograma de desempenho e diagnóstico

A régua na parte superior da página Desempenho e Diagnóstico mostra a linha do tempo para informações analisadas. Essa linha do tempo se aplica aos gráficos Utilização de thread de interface de usuário e Taxa de Transferência visual. Você pode restringir o escopo do relatório arrastando as barras de navegação na linha do tempo para selecionar um segmento da linha do tempo.

A linha do tempo também exibe todas as marcas de usuário inseridas e os eventos de ciclo de vida de ativação do aplicativo.

Utilização de thread de interface de usuário

Gráfico de utilização de CPU do thread da interface do usuário

O gráfico Utilização de thread de interface do usuário (%) exibe a quantidade relativa de tempo gasto no thread de interface de usuário para estas categorias:

Análise

Indica o tempo gasto no thread da interface de usuário analisando o XAML e recuperando recursos do aplicativo.

Layout

Indica o tempo gasto no thread da interface de usuário definindo o layout dos elementos XAML.

Código do Aplicativo

Indica o tempo gasto no thread de interface de usuário que executa o código do aplicativo (usuário) que não está relacionado à análise nem ao layout.

Outro XAML

Indica o tempo gasto no thread da interface de usuário executando o código de tempo de execução XAML.

Taxa de transferência visual (FPS)

Gráfico de linha de taxa de transferência Visual

O gráfico de linhas Taxa de transferência visual (FPS) mostra os quadros por segundo (FPS) na interface de usuário e no thread de composição do aplicativo. Os valores são o que você veria no cromo de um aplicativo quando EnableFrameRateCounter está habilitado.

Modo de exibição Análise

Análise de janela

O modo de exibição Análise contém um gráfico de barras horizontais dos arquivos XAML carregados e processados na parte selecionada da linha do tempo. Os filhos de um nó de arquivos XAML são arquivos incluídos pelo arquivo do nó. Nós são listados na ordem em que foram carregados. O painel de detalhes exibe esses valores para o arquivo selecionado.

Valores inclusivos e exclusivos

Duração Exclusiva

O tempo gasto para processar os elementos definidos explicitamente nesse nó.

Duração Inclusiva

O tempo gasto para processar os elementos definidos nesse nó e em todos os nós filho.

Elementos da Interface de Usuário (Exclusivos)

O número de elementos definidos explicitamente nesse nó.

Elementos da Interface de Usuário (Inclusivos)

O número de elementos definidos explicitamente nesse nó e em todos os nós filho.

Modo de exibição Principais Elementos

Janela ativa de elementos

O modo de exibição Principais Elementos contém um gráfico de barras horizontais que representa todos os elementos que participam do layout da parte selecionada na linha de tempo. Os elementos são agrupados por modelo e classificados em ordem decrescente pelo tempo que levaram para apresentar o layout.

Os filhos de um nó do elemento são os elementos contidos no elemento do nó pai. Os nós filho também são ordenados pelo momento de layout. O modo de exibição de detalhes exibe os valores de nome e tempo para o elemento selecionado.

Otimizar a capacidade de resposta do XAML

Um dos melhores locais para procurar informações sobre como otimizar o desempenho do aplicativo são os tópicos encontrados em Performance best practices for Windows Store apps using C++, C#, and Visual Basic.

Aqui estão algumas ideias sobre como otimizar o desempenho do XAML:

Otimizar a inicialização e a navegação de página

Você pode acelerar a inicialização do aplicativo e a navegação de página examinando com atenção os arquivos XAML, de recursos e dados que suas páginas carregam. Seu aplicativo pode parecer lento se os arquivos XAML criarem ou referenciarem uma grande quantidade de elementos de interface de usuário desnecessários quando a página for carregada pela primeira vez, se forem carregados arquivos de recursos que referenciem modelos e estilos não aplicáveis à página atual ou se o mesmo arquivo XAML ou de recursos for carregado mais de uma vez. Consulte as técnicas para corrigir esses problemas em um destes tópicos:

Otimizar o movimento panorâmico e a rolagem

Os problemas de desempenho de movimento panorâmico e rolagem podem ser causados por não usar um contêiner de virtualização, modelos que sejam grandes e complexos ou algoritmos ineficientes em métodos personalizados de retorno de chamada por quadro. Consulte as técnicas para corrigir esses problemas em um destes tópicos:

Otimizar a capacidade de resposta de entrada

Consulte as técnicas para corrigir esses problemas em Keep the UI thread responsive (Windows Store apps using C#/VB/C++ and XAML)