Share via


Suite de desempenho do WPF

O SDK do Windows inclui um pacote de ferramentas para aplicativos de Windows Presentation Foundation (WPF), chamados de conjunto de desempenho do WPF de criação de perfil de desempenho. O conjunto de desempenho do WPF permite que você analise o comportamento de tempo de execução dos aplicativos WPF e determinar as otimizações de desempenho que podem ser aplicadas. O conjunto de desempenho do WPF inclui ferramentas chamadas Perforator e o Profiler Visual de criação de perfil de desempenho. Este tópico descreve como instalar e usar as ferramentas de Perforator e o Profiler Visual no conjunto de desempenho do WPF.

This topic contains the following sections:

  • Instalação do conjunto de desempenho do WPF

  • Iniciando o conjunto de desempenho do WPF

  • Perforator

  • Visual Profiler

Instalação do conjunto de desempenho do WPF

As etapas a seguir descrevem como instalar o conjunto de desempenho do WPF.

  1. Se você tiver uma versão anterior do Toolkit de desempenho do Windows instalado, desinstale-o.

  2. Instale o SDK do Windows.

    As opções de instalação, certifique-se de que você selecione o Toolkit de desempenho do Windows opção sob Utilitários comuns de. Para baixar as informações, consulte o Página Download do SDK do Windows.

  3. Depois que o SDK do Windows é instalado, na Iniciar menu, selecione Todos os programas, v 7.1 do SDK do Microsoft Windowse Ferramentas.

  4. Em ferramentas, clique em Instalar o Kit de ferramentas de desempenho do Windows.

    O Assistente de instalação será exibida.

  5. Siga as instruções que aparecem para instalar o Toolkit de desempenho do Windows.

    Por padrão, os recursos a seguir serão instalados.

    • Analisador de desempenho

    • Ajuda de Toolkit de desempenho do Windows

    • GPUView

    • Suite de desempenho do WPF

Iniciando o conjunto de desempenho do WPF

Você deve iniciar o conjunto de desempenho do WPF antes de executar o aplicativo que você deseja para o perfil. Usar o conjunto de desempenho do WPF, sua conta de usuário deve ter privilégios administrativos.

As etapas a seguir descrevem como iniciar o conjunto de desempenho do WPF.

  1. Sobre o Iniciar menu, selecione Todos os programas e Toolkit de desempenho do Microsoft Windows.

  2. Clique em Suite de desempenho do WPF.

  3. Se for exibida uma caixa de diálogo controle de conta de usuário, clique em Sim.

    O conjunto de desempenho do WPF é iniciado.

Na primeira vez que você inicia o conjunto de desempenho do WPF, o Adicionar ferramentas caixa de diálogo aparece. A caixa de diálogo Adicionar ferramentas lhe permite adicionar ferramentas de criação de perfil de desempenho. Para adicionar uma ferramenta, você pode selecionar de um assembly que contém uma ferramenta e, em seguida, clique em Digitalizar Assembly. Você pode abrir a caixa de diálogo Adicionar ferramenta a qualquer momento clicando em A ferramenta Adicionar da arquivo menu. A ilustração a seguir mostra a caixa de diálogo Adicionar ferramentas.

Adicionar caixa de diálogo Ferramentas

Caixa de diálogo Adicionar Ferramentas

Por padrão, o conjunto de desempenho do WPF inclui o seguinte ferramentas de perfis de desempenho.

Tool

Description

Perforator

Analisa o comportamento de processamento.

Visual Profiler

Perfis de serviços o uso do WPF como, por exemplo, layout e manipulação de eventos, os elementos da árvore visual.

Certifique-se de que o Perforator e Profiler Visual caixas de seleção estão selecionadas e clique em OK.

Perforator

Perforator é uma ferramenta para analisar o comportamento de processamento do seu aplicativo WPF de criação de perfil de desempenho. A interface do usuário Perforator exibe um conjunto de gráficos que permitem analisar o comportamento de processamento muito específico em partes do seu aplicativo, como, por exemplo, a taxa de adição de retângulo sujo e a taxa de quadros. WPF usa uma técnica de processamento chamada retângulo sujo, o que significa que somente as partes da tela que foram alterados são processadas em uma nova passagem de renderização. Além disso, o Perforator tem várias opções que você pode usar para procurar por problemas de processamento específico. Perforator também relata os destinos de processamento de software e um controle deslizante para controlar a duração dos gráficos. A ilustração a seguir mostra a Perforator de interface do usuário.

Interface de usuário perforator

Caixa de diálogo Adicionar Ferramenta

Usando Perforator

Para usar Perforator, inicie o aplicativo do WPF que você deseja analisar. Depois que o aplicativo foi iniciado, clique no Perforator , clique no Ações menu e clique Selecionar processo. Na caixa de diálogo Selecionar processo, selecione o processo de aplicativo que você deseja analisar e, em seguida, clique em Selecionar. O nome do processo e a identificação de processo agora devem aparecer na parte superior do Perforator guia. Selecione as opções de processamento que você deseja analisar. Os valores de dados Perforator, como, por exemplo, taxa de quadros imediatamente refletem o comportamento de processamento do aplicativo. A ilustração a seguir mostra um exemplo.

Perforator com o aplicativo e processar as opções selecionadas

Janela principal do Perforator com opções selecionadas

Gráficos de perforator

É importante que a taxa de quadros, a taxa de inclusão do retângulo sujo e o número de destinos de processamento intermediário permanecem baixas para seu aplicativo do WPF processar com eficiência. Perforator possui muitos gráficos úteis para monitorar esses níveis.

A tabela a seguir descreve as métricas relatadas por cada gráfico.

Gráfico de histórico

Description

Notes

Taxa de quadros

Reporta a taxa na qual o aplicativo está sendo processado na tela.

Para aplicativos sem animação, esse valor deve ser perto 0. Durante as animações em um aplicativo com bom desempenho, a taxa de quadros deve ser Fechar para a taxa de atualização do monitor (normalmente 60 ou 75).

Taxa de adição de Rect suja

Indica quantas regiões retangulares que o WPF tem para atualizar para cada quadro.

Retângulo sujo refere-se uma técnica de processamento, onde somente as partes da tela que foram alterados são renderizadas. Um valor alto indica uma alteração de muitas das regiões. Isso não é necessariamente bom ou ruim, mas um valor a considerar com o desempenho geral do seu aplicativo.

SW IRTs por quadro

Mostra o número de destinos de processamento intermediário de software (IRTs) necessários para processar um quadro do aplicativo.

IRTs são superfícies de caros de software que o WPF deve alocar e copiar dados de e para. IRTs de software são mais caros que os IRTs de hardware.

IRTs são geralmente causados por meio de DrawingBrush, VisualBrush, Opacity propriedade em um Visual, ou lado a lado modos em uma TileBrush. Se esse número for alto (por exemplo, maior que 5), ele indica que o tempo de execução do WPF é realizando uma grande quantidade de trabalho para processar seu aplicativo.

Em um computador que oferece suporte à aceleração de hardware, esse número deve ser 0. Caso contrário, esse número indica que alguns dos seu cena é processado usando o pipeline de software mais lento.

IRTs de HW por quadro

Mostra o número de destinos de processamento intermediário de hardware (IRTs) necessários para processar um quadro do aplicativo.

IRTs são superfícies de hardware caro que o WPF deve alocar e copiar dados de e para.

Destinos de processamento intermediário geralmente são causados por meio de DrawingBrush, VisualBrush, ou Opacity propriedade em um Visual, ou lado a lado modos em uma TileBrush. Se esse número for alto (por exemplo, maior que 5), ele indica que o tempo de execução do WPF é realizando uma grande quantidade de trabalho para processar seu aplicativo. Nesse caso, você terá que analisar todas as áreas do seu código, usam os elementos mencionados anteriormente.

IRTs de hardware são mais baratos do que o software IRTs.

Uso de memória de vídeo

Rastreia grandes alocações de memória de vídeo ao WPF para destinos de textura e render. Essa métrica não controla as alocações de memória para as alocações de memória ou o driver de vídeo para compilação e carregamento de sombreadores de pixel e vértice.

Exceder a quantidade disponível de memória de textura geralmente causam a lógica de renderização do WPF para retorno para o software e que exibe várias (múltiplos monitores) tem um efeito multiplicativos na quantidade de memória de vídeo que é necessário para um aplicativo.

Opções de renderização e otimizar o processamento de perforator

Perforator permite definir várias opções de processamento que afetam o comportamento de processamento em tempo real do aplicativo. Definir essas opções permitem que você veja o processamento de eventos que poderia ser problemáticos em seu aplicativo. Essas opções estão localizadas na parte inferior da interface do usuário.

A ilustração a seguir mostra a Perforator opções de processamento.

Opções de processamento de perforator

Opções de renderização do Perforator

Em geral, para melhorar o desempenho dos aplicativos WPF, você deve minimizar o processamento de software e diminuir o número de destinos de processamento intermediário. As seções a seguir discutem como o Perforator pode ajudá-lo a fazer isso.

Evitando o processamento de Software

Como o pipeline de processamento de hardware do WPF é significativamente mais rápido que, seu pipeline de processamento de software, a menos interface de usuário do aplicativo que processa no software, será o processamento mais rápido nesse aplicativo. Normalmente, o tempo que leva para processar uma área no software é proporcional ao número de pixels processados. Portanto, esteja atento a grandes áreas processadas usando o pipeline de software. Áreas pequenas são menos preocupação.

A tabela a seguir lista as opções de Perforator que podem ajudar a detectar problemas de processamento de software.

Option

Description

Notes

Desenhar o processamento de software com tonalidade roxo

Desenha todas as áreas processadas usando o pipeline de processamento de software com uma tonalidade roxa. Isso inclui os destinos de processamento de software, conteúdo 3D de software e -primitivo software de fallback.

O pipeline de processamento de hardware do WPF é significativamente mais rápido que pipeline de processamento de seu software. Muito processamento de software geralmente indica um problema. Os exemplos que poderia causar esse comportamento incluem lado a lado um Brush muito ou excedendo o tamanho de textura. a placa de vídeo

Desenhar software processado efeitos de bitmap com o tom de vermelho

Desenha a software legado processado efeitos de bitmap com o tom de vermelho.

Software processado BitmapEffect classes são lentos e devem ser evitadas. Você deve usar o hardware processado classes deEffect que foram introduzidos na.NET Framework 3.5 SP1.

A ilustração a seguir exibe o aplicativo de exemplo PhotoDemo com o desenhar o processamento de software com tonalidade roxo opção habilitada de processamento.

PhotoDemo com tonalidade roxa

Aplicativo Photodemo mostrando opções de renderização do Perforator

Monitoramento de regiões sujos

Porque o WPF atualiza somente partes de uma janela, conforme necessário, pode ser útil visualizar as atualizações a qualquer momento. Em alguns casos, embora nenhum animações estão ocorrendo no aplicativo, regiões continuarão a ser atualizados. As seguintes opções de ajudam a visualizar os comportamentos de atualização. Atualizações desnecessárias são particularmente importantes na área de trabalho remota, máquinas virtuais e situações semelhantes ao WPF deve enviar novo bitmaps pela rede. Além disso, as atualizações desnecessárias podem afetar a vida útil da bateria do laptop.

Option

Description

Notes

Mostrar sobreposição de atualização da região dirty

Causes each update WPF makes to the screen to be indicated by re-coloring. Isso permite que você veja quando e onde as áreas são redesenhadas em um aplicativo.

Porque o WPF atualiza apenas as partes da janela conforme necessário, pode ser útil visualizar o que proporção da janela está sendo atualizada a qualquer momento. Use esta opção quando a taxa de quadros e taxa de inclusão do retângulo sujo não forem zero, mas não visuais estão mudando em seu aplicativo.

Desativar o suporte de região dirty

Faz com que o WPF Redesenhar toda a janela a qualquer momento em que uma alteração é feita.

Essa opção é útil para forçar a janela inteira para atualizar. Normalmente, somente a parte da janela que mudou é redesenhada. Ativar essa opção faz com que seu aplicativo para processar muito mais lentamente.

Limpar back-buffer antes do processamento

Limpa as janelas de aplicativo antes de cada operação de desenho.

Essa opção é uma alternativa para Mostrar sobreposição de atualização da região dirty. Efetivamente, ele mostra a região dirty mais recente, enquanto a sobreposição de atualização da região dirty é mais útil para ver as alterações na região dirty ao longo do tempo.

Detectando a outras fontes de degradação do desempenho

Perforator permite que você desabilite certas operações de alto desempenho para determinar se eles estão causando gargalos em seu aplicativo. A taxa de quadros de aplicativos de monitoramento e a seleção dessas opções individualmente, você pode determinar se as operações, como processamento 3D ou rescaling de imagem, estão causando problemas de processamento. Se você selecionar uma destas opções e a taxa de quadros cair consideravelmente, provavelmente você identificou o gargalo em seu aplicativo.

Option

Description

Notes

Desativar efeitos de opacidade

Desativa determinados usos potencialmente alto de desempenho de opacidade.

Para evitar esse problema de desempenho em geral, considere a configuração de opacidade em um objeto de nível inferior, como Brush, em vez de um objeto de alto nível, como Button.

Desativar-primitivo software de fallback

Desativa o software de fallback para os primitivos de processamento individuais. Software intermediário processar destinos e renderização do software não pode ser desabilitada.

Esta opção não é necessário na maioria dos casos. Mantenha desmarcada.

Desativar a imagem de alta qualidade rescaling

Desativa a rescaling de imagens grandes em tamanhos menores.

Permite ver o efeito da imagem rescaling em seu aplicativo. Se esta opção de verificação significativamente reduz a taxa de quadros, considere a possibilidade de decodificação suas imagens para um tamanho de perto o tamanho que eles serão exibidos.

Desativar processamento 3D

Desativa todas as operações de processamento 3D

Permite que você veja o efeito das operações de processamento 3D em seu aplicativo.

Visual Profiler

Visual Profiler é uma ferramenta de criação de perfil de desempenho dos serviços do WPF, como, por exemplo, layout, processamento e animação, para elementos da árvore visual. Analisando a saída de criação de perfil dessa ferramenta, você pode determinar quais elementos visuais em seu aplicativo podem estar causando afunilamentos de desempenho.

O Profiler Visual apresenta problemas de desempenho no contexto de blocos de construção básicos que são usados para construir um visual cenas em seu aplicativo. Esses blocos de construção incluir objetos de alto nível, como Button e TextBlock controles, bem como os objetos de baixo nível, como Line e Ellipse elementos. Em vez de descrever os problemas de desempenho em termos de gráficos de chamada de nomes de funções, o Profiler Visual descreve esses problemas usando a representação de objetos visuais. Isso é semelhante à maneira como o Windows SDK ferramenta de interface do usuário Spy, representa informações. For more information, see UISpy.exe (interface do usuário Spy).

Usando o Profiler Visual

Para usar o Profiler Visual, inicie o aplicativo do WPF que você deseja analisar. Depois que o aplicativo foi iniciado, clique no Profiler Visual , clique no Ações menu e clique Selecionar processo. Na caixa de diálogo Selecionar processo, selecione o processo de aplicativo que você deseja analisar e, em seguida, clique em Selecionar. O nome do processo e a identificação de processo agora devem aparecer na parte superior do Profiler Visual guia.

Para analisar a amplitude de problemas de desempenho do WPF, você deve compreender a função e o escopo dos serviços subjacentes do WPF. Esses serviços incluem o layout, processamento e animação. Visual Profiler fornece uma representação gráfica de como os serviços do WPF são alocados entre os objetos de aplicativo. Por exemplo, quando o Profiler Visual exibe a árvore visual dos objetos de aplicativo, ele tons diferentes de sobreposições de vermelho nos objetos para representar a quantidade relativa de recursos usando o objeto. Um objeto que é exibido com uma sobreposição de vermelha mais escura representa um objeto que usa uma proporção maior de recursos que um objeto com uma sobreposição de vermelha mais clara. Mais importante, o Profiler Visual fornece uma divisão da quantidade de recursos específicos do WPF que consome de um objeto.

A ilustração a seguir mostra a interface de usuário do Profiler Visual.

Interface de usuário do Profiler Visual

interface do usuário do Visual Profiler

Há oito áreas da interface de usuário do Profiler Visual.

  1. Caixa de pesquisa de árvore de elemento

  2. Árvore de elemento Visual

  3. Visualização e detalhes de elemento

  4. Detalhes de uso de CPU exclusivos do elemento

  5. Detalhes de uso de CPU do aplicativo

  6. Controle de zoom de dados capturados

  7. Configurações de exibição gráfico de histórico

  8. Opções de sobreposição de visualização e o desempenho do aplicativo

As seguintes seções descrevem cada área.

Caixa de pesquisa de árvore de elemento

A caixa de pesquisa no Árvore de elemento seção fornece a capacidade de pesquisar os elementos na árvore de elemento do aplicativo. Quando uma pesquisa é realizada, todos os elementos correspondentes são realçados em amarelo. Você pode procurar elementos por seu nome ou tipo.

Árvore de elemento Visual

O controle de árvore no Árvore de elemento seção, exibe o tipo e o nome de elementos visuais no aplicativo juntamente com os detalhes de tamanho e layout de subárvore.

A seguir é um exemplo de um rótulo de elemento na árvore.

Borda 'border1' (26) 0,02%, (I) / 0,00% (E) - ms.24 (I) / ms 0,00 (E)

Parte do elemento Label

Description

Border

Tipo do elemento.

'border1'

Name of the element.

(26)

Tamanho de subárvore.

0,02%, (I)

Porcentagem de tamanho total para a árvore inclusive, que é o elemento e todos os seus descendentes.

0,00 (E)

Porcentagem de total elementos somente do elemento.

.24 ms (I)

Tempo em milissegundos para o layout do elemento e seus descendentes.

ms 0,00 (E)

Tempo em milissegundos, apenas o elemento de layout.

Use o Exibir menu para controlar se deseja exibir informações de %/time inclusivo/exclusivo.

Um elemento para expandir ou recolher a subárvore de atalho. Você também pode expandir o seu caminho. O caminho mostra o elemento na subárvore que consome mais da CPU nessa subárvore.

Visualização e detalhes de elemento

O Informações sobre o elemento seção exibe o tipo de elemento atualmente selecionado e o nome, se o elemento for chamado. Ele também fornece uma visualização do elemento de visualização seção. Se o elemento de nível mais alto for selecionado, a visualização mostra uma visualização do aplicativo.

Detalhes de uso de CPU exclusivos do elemento

O Uso de CPU exclusivo do elemento seção exibe um gráfico de histórico e os detalhes de tempo de CPU exclusivo que foi consumida pelo elemento selecionado ao longo do tempo. Por exemplo, um elemento pode ser gasta x % da CPU de tempo no layout organizando y % na medição do layout e z % no processamento.

Detalhes de uso de CPU do aplicativo

O O uso de CPU do aplicativo seção exibe um gráfico de histórico e os detalhes dos eventos do aplicativo. Visual Profiler escuta e captura de vários eventos de aplicativo. Os eventos de aplicativo são listados com valores absolutos e o gráfico Histórico mostra o tempo de CPU é gasto em cada evento de aplicativo ao longo do tempo com cores diferentes. Isso lhe permite ver facilmente o tempo que o aplicativo gasta em layout em vez de renderização.

A tabela a seguir descreve os eventos do aplicativo representados no gráfico.

Observação

Os eventos que correspondem às chamadas de métodos no WPF são representados pelo nome do método seguido do nome da classe entre parênteses.Por exemplo, a escala (TimeManager) representa o TimeManager.Tick método.

Eventos de aplicativo

Description

Tempo sem rótulo

Tempo gasto no WPF não é categorizado em outro evento de aplicativo todo o tempo gasto pelo aplicativo fora do WPF

RenderMessageHandler (MediaContext)

Ocorre quando a passagem de renderização é iniciada. Este evento faz com que o Gerenciador de tempo de escala entre outras coisas.

Segmento de processamento

Ocorre quando a execução de instruções de processamento no thread de processamento. Isso é útil para detectar aplicativos vinculados a renderização.

Layout

Ocorre durante a medida, organizar e processar a passagem.

UpdateRealizations

Ocorre quando a atualização de representações de bitmap interno de efeitos de texto e bitmap.

Escala (TimeManager)

Ocorre quando a animação está passando. Esse evento pode acionar o manipulador de renderização de animação.

Ao animar objetos no WPF, um Gerenciador de tempo gerencia a Clock os objetos criados para cronogramas. The time manager is the root of a tree of Clock objects and controls the flow of time in that tree. Um gerente de tempo é criado automaticamente para cada aplicativo do WPF e é invisível para o desenvolvedor do aplicativo. O Gerenciador de tempo "ticks" muitas vezes por segundo. O número real de pulsos que ocorrem a cada segundo varia dependendo dos recursos disponíveis no sistema.

AnimatedRenderMessageHandler (MediaContext)

Ocorre para atualizações e processamento de animação. Quando as animações são habilitadas, esse manipulador processa e atualiza a animação, o que faz com que propriedades para alterar e o processamento ocorra.

Render (MediaContext)

Ocorre durante o passo de renderização. Este método eventualmente chama o OnRender o método de cada elemento e é útil para compreender o custo total de OnRender para todos os elementos. Esse evento corresponde ao método MediaContext.Render em um arquivo Profiler de Visual Studio (VS).

Controle de zoom de dados capturados

O Opções de gráfico seção inclui um controle de zoom de dados de captura. Arrastando as alças da janela de zoom, você pode redimensionar e alterar o eixo de tempo dos gráficos de histórico de uso de CPU exclusivo do elemento e o uso de CPU do aplicativo.

Configurações de exibição gráfico de histórico

O Opções de gráfico seção inclui os botões de rádio e um controle deslizante para ajustar as configurações de gráfico de histórico. Você usar os botões de opção para especificar como o eixo de CPU, o eixo vertical, se comporta; Se ele exibe espessuras absolutas ou relativas. Você pode usar o controle deslizante para definir um valor máximo de exibido para o gráfico.

Opções de sobreposição de visualização e o desempenho do aplicativo

O Opções de controle seção contém três botões de alternância que executam as ações a seguir.

  • Clique no primeiro botão de alternância para pausar ou iniciar a coleta de dados Visual Profiler.

  • Clique o Visualização ao vivo o botão de alternância para exibir uma visualização ao vivo do aplicativo a visualização seção.

  • Clique o Janela de sobreposição de o botão de alternância para adicionar uma borda amarela em torno do elemento visual selecionado. Além disso, os elementos que consomem mais tempo de CPU, é adicionada uma sobreposição de vermelha. A mesma cor vermelha é usada para o elemento a Árvore de elemento seção. A intensidade da correlaciona vermelha para o uso da CPU.

Consulte também

Conceitos

Optimizing WPF Application Performance

Níveis de Renderização Gráfica

WPF Graphics Rendering Overview

UISpy.exe (interface do usuário Spy)

Outros recursos

Novidades para desempenho, ferramentas de criação de perfil para WPF