Compartilhar via


Pacote de desempenho WPF

O Windows SDK inclui um conjunto de ferramentas para aplicativos do Windows Presentation Foundation (WPF) chamados de pacote de desempenho do WPF de perfis de desempenho. O pacote de desempenho do WPF permite analisar o comportamento em tempo de execução de seus aplicativos do WPF e determinar as otimizações de desempenho que você pode aplicar. O conjunto de desempenho do WPF inclui ferramentas chamadas Perforator e Visual Profiler de perfis de desempenho. Este tópico descreve como instalar e usar as ferramentas Perforator e Visual Profiler no conjunto de desempenho do WPF.

Este tópico contém as seções a seguir:

  • Instalando o pacote de desempenho do WPF

  • Iniciando o pacote de desempenho do WPF

  • Perforator

  • Visual Profiler

Instalando o pacote de desempenho do WPF

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

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

  2. Instalar o Windows SDK.

    Nas opções de instalação, certifique-se de que você selecione o Windows Performance Toolkit opção utilitários comuns. Para obter informações de download, consulte o página de Download do Windows SDK.

  3. Depois que o SDK do Windows é instalado, no Iniciar menu, selecione todos os programas, v 7.1 SDK do Microsoft Windows, e então ferramentas.

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

    O Assistente de instalação é exibida.

  5. Siga as instruções instalar o Kit de ferramentas de desempenho do Windows.

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

    • Analisador de desempenho

    • Ajuda de ferramentas de desempenho do Windows

    • GPUView

    • Pacote de desempenho WPF

Iniciando o pacote de desempenho do WPF

Você deve iniciar o conjunto de desempenho do WPF antes de executar o aplicativo que você deseja para o perfil. Para usar o pacote 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 Kit de ferramentas de desempenho do Microsoft Windows.

  2. Clique em pacote de desempenho do WPF.

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

    O pacote de desempenho do WPF é iniciado.

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

Adicionar caixa de diálogo Ferramentas

Add Tools Dialog

Por padrão, o conjunto de desempenho do WPF inclui o ferramentas de criação de perfil de desempenho a seguir.

Ferramenta

Descrição

Perforator

Analise o comportamento de renderização.

Visual Profiler

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

Verifique se o Perforator e Visual Profiler caixas de seleção estão selecionadas e, em seguida, clique em OK.

Perforator

Perforator é uma ferramenta para analisar o comportamento de renderização 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 muito específico da renderização em partes do seu aplicativo, como a taxa de adição de retângulo sujas e a taxa de quadros. WPF usa uma técnica de renderização chamada retângulo sujo, o que significa que somente as partes da tela que foram alteradas são renderizadas em uma nova passagem de renderização. Além disso, Perforator tem várias opções que você pode usar para procurar problemas de renderização específica. Perforator também relata os destinos de renderização de software e um controle deslizante para controlar a duração dos gráficos. A ilustração a seguir mostra o Perforator interface do usuário.

Interface de usuário do Perforator

Add Tool dialog box

Aa969767.collapse_all(pt-br,VS.110).gifUsando Perforator

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

Perforator com o aplicativo e a renderização opções selecionadas

Perforator main window with options selected

Aa969767.collapse_all(pt-br,VS.110).gifPerforator gráficos

É importante que a taxa de quadros, taxa de adição de retângulo sujas e o número de destinos de renderização intermediário permanecem baixos para seu aplicativo do WPF para processar com eficiência. Perforator tem 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

Descrição

Observações

Taxa de quadros

Relata a taxa na qual o aplicativo está processando na tela.

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

Taxa de adição Rect suja

Indica quantas regiões retangulares WPF com a atualização de cada quadro.

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

Software IRTs por quadro

Mostra o número de destinos de renderização intermediário de software (IRTs) necessários para renderizar um quadro do aplicativo.

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

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

Em um computador que ofereça suporte à aceleração de hardware, esse número deve ser 0. Caso contrário, esse número indica que alguns sua cena é renderizado utilizando o pipeline de software mais lento.

HW IRTs por quadro

Mostra o número de destinos de renderização intermediário de hardware (IRTs) necessários para renderizar um quadro do aplicativo.

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

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

Hardware IRTs custam menos 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 renderização. Essa métrica não controla as alocações de memória para as alocações de memória ou driver de vídeo para compilar e carregamento de sombreadores de pixel e vértice.

Exceder a quantidade de textura memória geralmente fará com que a lógica de renderização do WPF de fallback para o software e vários monitores (vários monitores) tem um efeito de multiplicação na quantidade de memória de vídeo que é necessário para um aplicativo.

Aa969767.collapse_all(pt-br,VS.110).gifOpções de processamento e otimizar o processamento de Perforator

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

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

Opções de renderização do Perforator

Perforater Render Options

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

Aa969767.collapse_all(pt-br,VS.110).gifEvitando a renderização de Software

Como o pipeline de renderização de hardware do WPF é significativamente mais rápido que o pipeline de processamento de software, menos interface de usuário que processa em software, será o processamento mais rápido no aplicativo. Normalmente, o tempo necessário para processar uma área em software é proporcional ao número de pixels processados. Portanto, esteja atento a grandes áreas renderizadas utilizando o pipeline de software. São pequenas áreas de menor importância.

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

Opção

Descrição

Observações

Desenhar a renderização de software com tonalidade roxa

Desenha todas as áreas renderizadas utilizando o pipeline de renderização de software com um tom roxo. Isso inclui os destinos de renderização de software, conteúdo 3D de software e software por primitivo fallback.

O pipeline de renderização de hardware do WPF é significativamente mais rápido do 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 da textura da placa de vídeo.

Software de desenho renderizado efeitos de bitmap com o tom de vermelho

Desenha um software herdado renderizado efeitos de bitmap com o tom de vermelho.

Renderizados por software BitmapEffect classes estão lentos e deve ser evitados. Você deve usar o hardware renderizado Effect classes que foram introduzidos no .NET Framework 3.5 SP1.

A ilustração a seguir mostra o exemplo PhotoDemo com o Desenhar a renderização de software com tonalidade roxa opção habilitada de renderização.

PhotoDemo com tonalidade roxa

Photodemo app showing Perforator rending options

Aa969767.collapse_all(pt-br,VS.110).gifMonitoramento de regiões sujas

Como o WPF atualiza apenas 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 opções a seguir 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 cenários semelhantes ao WPF deve enviar novos bitmaps pela rede. Além disso, atualizações desnecessárias podem afetar a vida útil da bateria de laptop.

Opção

Descrição

Observações

Mostrar sobreposição de atualização de região suja

Faz com que cada atualização que WPF faz na tela para ser indicados por cores novamente. Isso permite que você veja quando e onde as áreas são redesenhadas em um aplicativo.

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

Desabilite o suporte de região suja

Faz com que o WPF Redesenhar toda a janela sempre que uma alteração for feita.

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

Limpar back-buffer antes da renderização

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

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

Aa969767.collapse_all(pt-br,VS.110).gifDetecção de outras fontes de degradação do desempenho

Perforator permite que você desative a determinadas operações de alto desempenho para determinar se eles estão causando afunilamentos em seu aplicativo. A taxa de quadros de aplicativos de monitoramento e selecionando essas opções individualmente, você pode determinar se operações, como processamento 3D ou imagem redimensionando, estão causando problemas de processamento. Se você selecionar uma dessas opções e sua taxa de quadros diminua significativamente, provavelmente você identificou o afunilamento em seu aplicativo.

Opção

Descrição

Observações

Desativar efeitos de opacidade

Desabilita a 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 baixo nível, como Brush, em vez de um objeto de alto nível, como Button.

Desabilitar o software por primitivo fallback

Desabilita o software de fallback de primitivos de processamento individuais. Destinos de renderização de software intermediário e outro processamento de software não pode ser desabilitado.

Essa opção não é necessário na maioria dos casos. Manter desmarcada.

Desabilitar redimensionando imagens de alta qualidade

Desabilita o redimensionando de grandes imagens em tamanhos menores.

Permite que você veja o efeito de imagem redimensionando em seu aplicativo. Se marcar essa opção significativamente reduz a taxa de quadros, considere a possibilidade de decodificação de imagens para um tamanho de perto o tamanho que elas sejam exibidas.

Desabilitar a renderização 3D

Desabilita todas as operações de renderização 3D

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

Visual Profiler

Visual Profiler é uma ferramenta de criação de perfil de desempenho de serviços do WPF, como o layout, renderização e animação de elementos na á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.

Criador de perfil visual apresenta problemas de desempenho no contexto de blocos de construção básicos que são usados para construir cenas visuais no seu aplicativo. Esses blocos de construção incluem objetos de alto nível, como Button e TextBlock controles, bem como objetos de baixo nível, como Line e Ellipse elementos. Em vez de descrever os problemas de desempenho em termos de gráfico de chamada de nomes de funções, o Visual Profiler descreve esses problemas usando a representação de objetos visuais. Isso é semelhante à forma como o Windows SDK ferramenta UI Spy representa informações. Para obter mais informações, consulte UISpy.exe (UI Spy).

Aa969767.collapse_all(pt-br,VS.110).gifUsando o criador de perfil Visual

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

Para analisar a variedade 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, renderização 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 criador de perfil Visual exibe a árvore visual de objetos do 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, Visual Profiler fornece uma análise da quantidade de recursos específicos do WPF que consome um objeto.

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

Interface de usuário do Visual Profiler

Visual Profiler User Interface

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

  1. Caixa de pesquisa de árvore de elemento

  2. Árvore visual do elemento

  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 de gráfico de histórico

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

As seções a seguir descrevem cada área.

Aa969767.collapse_all(pt-br,VS.110).gifCaixa de pesquisa de árvore de elemento

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

Aa969767.collapse_all(pt-br,VS.110).gifÁrvore visual do elemento

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

Este é um exemplo de uma etiqueta de elemento na árvore.

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

Parte do elemento Label

Descrição

Borda

Tipo do elemento.

'border1'

Nome do elemento.

(26)

Tamanho de subárvore.

0,02% (I)

Porcentagem do tamanho total inclusivo árvore, que é o elemento e todos os seus descendentes.

0,00 (E)

Porcentagem de total elementos apenas do elemento.

.24 ms (I)

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

ms 0,00 (E)

Tempo em milissegundos para apenas o elemento de layout.

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

Clique em um elemento para expandir ou recolher a subárvore. Você também pode expandir seu caminho. O caminho mostra o elemento na subárvore que consome mais da CPU na subárvore.

Aa969767.collapse_all(pt-br,VS.110).gifVisualização e detalhes de elemento

O informações sobre o elemento seção exibe o tipo do 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 mais alto for selecionado, a visualização exibe uma visualização do aplicativo.

Aa969767.collapse_all(pt-br,VS.110).gifDetalhes de uso de CPU exclusivos do elemento

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

Aa969767.collapse_all(pt-br,VS.110).gifDetalhes de uso de CPU do aplicativo

O uso de CPU do aplicativo seção exibe um gráfico de histórico e os detalhes de eventos do aplicativo. Criador de perfil visual escuta e captura de vários eventos do aplicativo. Os eventos de aplicativo são listados com valores absolutos e o gráfico de histórico mostra o tempo de CPU é gasto em cada evento do aplicativo ao longo do tempo com cores diferentes. Isso permite que você veja facilmente o tempo que o aplicativo gasta no layout e renderização.

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

Dica

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

Eventos de aplicativo

Descrição

Tempo sem rótulo

Tempo gasto no WPF não é categorizada 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.

Thread de processamento

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

Layout

Ocorre durante a medida, organize e renderize passagem.

UpdateRealizations

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

Escala (TimeManager)

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

Quando você anima objetos no WPF, um Gerenciador de tempo gerencia a Clock objetos criados para suas linhas de tempo. O Gerenciador de tempo é a raiz de uma árvore de Clock objetos e controla o fluxo de tempo nesta árvore. Um Gerenciador de tempo é automaticamente criado para cada aplicativo do WPF e é invisível para o desenvolvedor do aplicativo. O Gerenciador de tempo "tica" muitas vezes por segundo. O número real de tiques que ocorrem em cada segundo varia dependendo dos recursos disponíveis no sistema.

AnimatedRenderMessageHandler (MediaContext)

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

Renderizar (MediaContext)

Ocorre durante a fase de processamento. Este método, por fim, chama o OnRender método de cada elemento e é útil para entender o custo total de OnRender para todos os elementos. Esse evento corresponde ao método MediaContext.Render em um arquivo do Visual Studio Profiler (VSP).

Aa969767.collapse_all(pt-br,VS.110).gifControle de zoom de dados capturados

O Opções de gráfico seção inclui um controle de zoom captura de dados. Arrastando as alças de 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.

Aa969767.collapse_all(pt-br,VS.110).gifConfigurações de exibição de gráfico de histórico

O Opções de gráfico seção inclui botões de opção e um controle deslizante para ajustar as configurações de gráfico de histórico. Use os botões de opção para especificar como o eixo de CPU, o eixo vertical, se comporta; Se ele exibe pesos absolutos ou relativos. Use o controle deslizante para definir um valor máximo exibido para o gráfico.

Aa969767.collapse_all(pt-br,VS.110).gifOpçõ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 seguintes.

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

  • Clique o visualização dinâmica botão de alternância para exibir uma visualização dinâmica do aplicativo a visualização seção.

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

Consulte também

Conceitos

UISpy.exe (UI Spy)

Outros recursos

Otimizando o desempenho do aplicativo WPF

Camadas de renderização de gráficos

Visão geral de renderização de gráficos do WPF

Novidades for Performance Profiling Tools for WPF