Windows Dev Center

Planejar o desempenho

Experiências de aplicativos lentos, sem resposta e que consomem muita bateria estão entre as maiores causas de frustração dos usuários. Aplicativos rápidos, ágeis e econômicos no consumo de bateria podem ajudar a manter os usuários satisfeitos e empenhados. Ao planejar seus aplicativos da Windows Store, sempre mantenha o desempenho em mente.

Desempenho é um recurso que deve ser planejado, projetado e testado, assim como os outros recursos dos seus aplicativos. Siga este processo para ajudar a planejar o desempenho dos seus aplicativos.

  1. Defina metas de desempenho para seus aplicativos.
  2. Crie um design voltado para o desempenho.
  3. Instrumente seus aplicativos visando ao desempenho.
  4. Faça testes e avaliações dos seus aplicativos com base nas suas metas de desempenho.
  5. Repita e aprimore os designs dos seus aplicativos com base nos resultados de testes de desempenho.

Veja a seguir os detalhes de cada uma das etapas desse processo.

Definir metas de desempenho para os aplicativos

As metas de desempenho dos seus aplicativos devem ser específicas e mensuráveis. Para tornar essas metas específicas, pode ser útil considerar como os seus aplicativos podem ser rápidos, fluidos e eficientes: quanto tempo os usuários demoram para concluírem suas tarefas nos aplicativos, com que agilidade os aplicativos respondem às interações dos usuários e com que eficiência eles conservam a vida útil da bateria.

Rápido

Uma abordagem inicial é considerar os intervalos de tempo aceitáveis para os usuários concluírem tarefas nos seus aplicativos. Chamamos esses intervalos de tempo de classes de interação. Para cada uma dessas classes de interação, você pode atribuir, por exemplo, um rótulo, um sentimento de percepção do usuário, um período de tempo pretendido e um período de tempo máximo. Veja a seguir algumas classes de interação sugeridas, com exemplos para cada uma.

Rótulo da classe de interaçãoPercepção do usuárioAlvoMáximoExemplos
RápidoAtraso minimamente perceptível100 milissegundos200 milissegundosAtivar a barra de aplicativos; pressionar um botão (primeira resposta)
TípicoÁgil, mas não rápido300 milissegundos500 milissegundosRedimensionar; zoom semântico
ResponsivoNão rápido, mas perceptivelmente responsivo500 milissegundos1 segundoNavegar até uma página diferente; retomar o aplicativo de um estado suspenso
InicializaçãoExperiência competitiva1 segundo3 segundosIniciar o aplicativo pela primeira vez ou depois que ele foi encerrado anteriormente
ContínuoNão há mais a percepção de resposta500 milissegundos5 segundosBaixar um arquivo da Internet
CativoLongo tempo; o usuário pode alternar para outro aplicativo500 milissegundos10 segundosInstalar vários aplicativos da Windows Store

 

Uma vez estabelecido um conjunto de classes de interação, você pode atribuí-las a cenários de desempenho dos seus aplicativos. Para cada cenário, você pode atribuir, por exemplo, a referência pontual do aplicativo, uma parte da experiência do usuário e uma classe de interação. Veja a seguir alguns cenários de desempenho sugeridos para um aplicativo de exemplo para alimentos e refeições.

CenárioPonto no tempoExperiência do usuárioClasse de interação
Navegar até uma página de receita Primeira respostaAnimação de transição de página iniciadaRápido (100 a 200 milissegundos)
ResponsivoLista de ingredientes carregada; sem imagensResponsivo (500 milissegundos a 1 segundo)
Visibilidade completaTodo o conteúdo carregado; imagens exibidasContínuo (500 milissegundos a 5 segundos)
Procurar uma receitaPrimeira respostaBotão de pesquisa clicadoRápido (100 a 200 milissegundos)
Visibilidade completaLista de títulos de receitas locais exibidaTípico (300 a 500 milissegundos)

 

Uma vez estabelecido um conjunto de cenários de desempenho, você estará mais apto a testar, analisar e aumentar a rapidez do seu aplicativo.

Fluido

Para uma resposta estável do usuário, metas de desempenho específicas e mensuráveis para os seus aplicativos podem incluir:

  • Não há interrupções e reinícios para o redesenho da tela (falhas).
  • As animações de tela são feitas a 60 quadros por segundo (FPS), 16 milissegundos de trabalho da CPU e da GPU (unidade de processamento gráfico) por quadro.
  • Quando um usuário usa movimento panorâmico no seu aplicativo, você deve planejar a apresentação de 3 a 6 páginas de conteúdo por segundo.

Eficiente

Para eficiência, metas de desempenho específicas e mensuráveis para os seus aplicativos podem incluir:

  • Uso de memória máxima em ou abaixo de uma determinada porcentagem da CPU e uma quantidade de memória em megabytes em todas as ocasiões.
  • Sempre que o usuário não estiver usando o aplicativo, as percentagens de CPU e disco se mantêm em zero.

Reduzir o consumo de bateria

A maior parte do trabalho de desempenho que você executa naturalmente reduz a quantidade de energia que seu aplicativo consome. A CPU é uma grande consumidora de energia da bateria nos dispositivos, mesmo com utilização baixa. O Windows 8 procura manter a CPU em um estado de baixo consumo de energia quando ocioso, mas a ativa toda vez que você agenda um trabalho. Você pode reduzir ainda mais o consumo de energia da bateria pelo aplicativo, ao garantir que ele não faça os timers agendarem trabalho na CPU desnecessariamente quando estiver ocioso. Por exemplo, um aplicativo pode sondar dados de serviços Web e sensores (como o GPS). Considere o consumo da bateria ao decidir a frequência da sondagem de dados.

Essa também é uma consideração importante para animações que requerem atualizações constantes na tela e mantêm a CPU e o pipeline de elementos gráficos ativos. As animações podem ser eficazes para proporcionar uma excelente experiência do usuário, mas convém fazer uma escolha consciente ao usá-las. Isso é particularmente importante para aplicativos controlados por dados, em que o usuário pode estar olhando para o seu aplicativo, mas não interagindo com ele. Por exemplo, um usuário pode passar um tempo vendo conteúdo em um leitor de notícias ou visualizador de fotos sem interagir com o aplicativo. Também pode ser um desperdício usar animações em modo Snap, pois o usuário não está dando ao aplicativo atenção total.

Muitos aplicativos se conectam a serviços Web para obter novas informações para o usuário. A redução da frequência com que você sonda novas informações pode melhorar o consumo da bateria.

Reduzir o consumo de memória

A redução da memória ajuda a evitar a lentidão e é ainda mais importante para os aplicativos da Windows Store devido ao sistema PLM (Gerenciamento do Tempo de Vida do Processo). O sistema PLM determina quais aplicativos serão encerrados, em parte, pelo volume de memória do aplicativo. Mantendo baixo o volume de memória do aplicativo, você reduz a chance de ele ser encerrado quando não estiver sendo usado. Por exemplo, você pode reduzir o volume de memória do aplicativo liberando recursos desnecessários, como imagens em suspensão.

O sistema PLM também pode optar por alternar o aplicativo para o disco e alterná-lo de volta para a memória na próxima vez em que ele for acessado. Se você diminuir o volume de memória do aplicativo, ele será retomado mais rapidamente.

Uma vez estabelecidas as metas de desempenho, você pode usá-las para ajudar a influenciar o design do seu aplicativo.

Criar com objetivo no desempenho

Ao projetar seu aplicativo, sempre tenha em mente as suas metas de desempenho. Usando nosso aplicativo de exemplo para alimentos e refeições, depois que o usuário navega até a página da receita, você pode usar a virtualização como técnica para carregar mais rapidamente a lista de ingredientes inicial e só exibir as imagens vinculadas mais tarde. Veja a seguir algumas outras áreas que devem ser levadas em consideração.

Várias páginas de conteúdo

Para exibir várias páginas de conteúdo, as técnicas de codificação e design de desempenho incluem:

  • Use a virtualização para listas e grades, com itens de tamanho constante, sempre que possível. Para ver detalhes, confira Usando a virtualização com uma lista ou grade.
  • Desenvolva aplicativos de forma que apenas a primeira página da interface do usuário seja responsiva. Não carregue elementos adicionais da interface do usuário até que o usuário precise deles.
  • Agende trabalhos de prioridade mais baixa para execução posterior. Para ver detalhes em aplicativos da Windows Store que usam JavaScript, confira o namespace WinJS.Utilities.Scheduler e a Amostra de Agendador HTML. Para aplicativos da Windows Store que usam C++, C# ou Visual Basic, veja Programação assíncrona, a propriedade Dispatcher, a classe CoreDispatcher e a Amostra de Vários Modos de Exibição.
  • Recolha o conteúdo até que o usuário precise dele. Para ver detalhes em aplicativos da Windows Store em JavaScript, veja a propriedade display para display:none. Para aplicativos da Windows Store que usam C++, C# ou Visual Basic, veja a propriedade Visibility para Collapsed.

Visuais e funcionalidade aprimorados

Para exibir visuais e funcionalidade aprimorados, as técnicas de codificação e design de desempenho incluem:

  • Adie tanto quanto possível o carregamento da interface do usuário e do código.
  • Use a interface do usuário  sem código— partes extensas de HTML ou linguagem XAML embutidas em código que o tempo de execução pode carregar em lotes, —sempre que possível.
  • Identifique uma funcionalidade distinta para o seu aplicativo e carregue elementos mínimos sempre que possível.
  • Mostre partes da interface do usuário para os usuários em vários estágios.
  • As imagens que você carregar devem ser carregadas em um tamanho apropriado ao modo de exibição de apresentação, usando o método GetThumbnailAsync.
  • Para animações em aplicativos da Windows Store em JavaScript, use o namespace Animações de CSS (Folhas de Estilos em Cascata)., o WinJS.UI.Animation, ou os dois. Veja também a amostra da biblioteca de animação HTML.
  • Para aplicativos da Windows Store que usam JavaScript, posicione os componentes da interface do usuário com HTML e CSS, evitando um layout embutido, como as propriedades offsetWidth e offsetHeight.
  • Para aplicativos da Windows Store que usam C++, C# ou Visual Basic, use animações e transições de temas XAML. Para ver detalhes, confira Animações rápidas e fluidas no seu aplicativo da Windows Store e a amostra de animações de personalidades XAML.

Conteúdo dinâmico

Para exibir conteúdo dinâmico, as técnicas de codificação e design de desempenho incluem:

  • Identifique metas de renovação de conteúdo. Por exemplo, a meta é atualizar o conteúdo a cada poucos segundos? Ou, atualizar o conteúdo a cada poucos minutos ou horas, ou até mesmo uma vez por dia, é uma experiência aceitável para o usuário?
  • Armazene o conteúdo no cache sempre que possível. Para saber mais, veja:
  • Quando o cache de conteúdo não for possível, mostre uma interface de usuário responsível da forma mais rápida possível—uma interface de usuário na qual os usuários podem navegar, mas que mostra uma certa indicação para o usuário de que o aplicativo ainda está tentando carregar conteúdo.
  • Faça a transição do conteúdo em cache para o conteúdo dinâmico de uma forma que não seja chocante para o usuário. Por exemplo, o aplicativo não vai mudar a posição do conteúdo ao carregar conteúdo dinâmico enquanto o usuário estiver interagindo por toque.
  • Faça uma pré-busca do conteúdo. Para ver detalhes, confira:

Inicialização de aplicativos

Para a inicialização de aplicativos, as técnicas de codificação e design de desempenho incluem:

Retomada de aplicativos

Para a retomada de aplicativos, as técnicas de codificação e design de desempenho incluem:

  • Faça a transição suave do conteúdo em cache para o conteúdo dinâmico de uma forma que não seja chocante para o usuário. Por exemplo, o aplicativo não vai mudar a posição do conteúdo ao carregar conteúdo dinâmico enquanto o usuário estiver interagindo por toque.
  • Não reinicie o aplicativo nem reanime o conteúdo.
  • O uso mais intenso de memória resulta em retomadas mais lentas do aplicativo. Gerencie a memória do seu aplicativo da seguinte maneira:
    • Reduza o conjunto de trabalho do seu código.
    • Evite vazamentos de memória, cancelando o registro de manipuladores de eventos e a referência a elementos visuais sempre que possível.
    • Para aplicativos da Windows Store que usam JavaScript, use o método createObjectUrl e a propriedade oneTimeOnly.
    • Se possível, evitar criar aplicativos híbridos que usam tanto HTML/JavaScript e XAML para minimizar referências circulares.

Redimensionamento e rotação de aplicativos

Para o redimensionamento e a rotação de aplicativos, as técnicas de codificação e design de desempenho incluem:

  • Para aplicativos da Windows Store em C++, C# ou Visual Basic, use a classe VisualStateManager.
  • Para aplicativos da Windows Store em JavaScript, use HTML/CSS em vez de JavaScript tanto quanto possível.
  • Conclua imediatamente apenas o trabalho necessário, adiando para depois o trabalho que requer o uso intenso do aplicativo. —Seu aplicativo tem entre 200 e 800 milissegundos para concluir o trabalho antes que o usuário veja a interface do usuário do aplicativo cortada.

Movimento panorâmico do conteúdo

Para movimento panorâmico no conteúdo, as técnicas de codificação e design de desempenho incluem:

  • Planeje de 3 a 6 páginas por segundo para movimento panorâmico do usuário.
  • Virtualize conjuntos grandes de itens. Para ver detalhes, confira Usando a virtualização com uma lista ou grade.
  • Use modelos de projeto com o menor número possível de elementos.
  • Renderize conteúdo em vários estágios.

Observe que, conforme você avança, pode descobrir que existem outras considerações de design relacionadas ao desempenho em geral que não correspondem a nenhum desses cenários de desempenho. Por exemplo, o que acontece quando o dispositivo tem uma conexão sem fio intermitente ou uma conexão discada mais lenta, ou até mesmo quando ele não tem nenhuma conexão com a Internet? No caso do nosso aplicativo de exemplo para alimentos e refeições, uma abordagem pode ser armazenar as imagens vinculadas no cache depois que elas forem baixadas inicialmente. Para outras técnicas, consulte Dados de uso de conexão.

Com seus designs de desempenho formulados, você pode iniciar o codificação do aplicativo.

Instrumentar com objetivo no desempenho

Ao codificar seu aplicativo, você pode adicionar código que registra mensagens e eventos em determinados pontos durante a execução. Mais tarde, quando estiver testando o aplicativo, você poderá usar ferramentas, como o Gravador de Desempenho do Windows e o Analisador de Desempenho do Windows (ambos incluídos no Kit de Ferramentas de Desempenho do Windows) para criar e visualizar um relatório sobre o desempenho do seu aplicativo. Nesse relatório, você pode examinar essas mensagens e eventos para facilitar a análise dos resultados.

O Tempo de Execução do Windows fornece APIs de registro em log com o suporte do ETW (Rastreamento de Eventos para Windows). Juntos, esses recursos oferecem uma solução aprimorada de rastreamento e registro de log de eventos para aplicativos da Windows Store. As APIs, que fazem parte do namespace Windows.Foundation.Diagnostics, incluem as classes FileLoggingSession, LoggingActivity, LoggingChannel e LoggingSession.

Para registrar uma mensagem no relatório em um ponto específico enquanto o aplicativo está em execução, crie um objeto LoggingChannel e, em seguida, chame o método LogMessage desse objeto, como este.



// using Windows.Foundation.Diagnostics;
// ...

LoggingChannel myLoggingChannel = new LoggingChannel("MyLoggingChannel");

myLoggingChannel.LogMessage(LoggingLevel.Information, "Here's my logged message.");

// ...


Para registrar eventos de início e interrupção no relatório ao longo de um período de tempo enquanto o aplicativo está em execução, crie um objeto LoggingActivity e, em seguida, chame o construtor LoggingActivity desse objeto, como este.



// using Windows.Foundation.Diagnostics;
// ...

LoggingActivity myLoggingActivity;

// myLoggingChannel is defined and initialized in the previous code example.
using (myLoggingActivity = new LoggingActivity("MyLoggingActivity"), myLoggingChannel))
{   // After this logging activity starts, a start event is logged.
    
    // Add code here to do something of interest.
    
}   // After this logging activity ends, an end event is logged.

// ...


Para ver mais exemplos, confira a amostra de LoggingSession e a amostra de FileLoggingSession.

Depois de instrumentar o código do aplicativo, você pode testar e medir seu desempenho.

Fazer testes e avaliações com base em metas de desempenho

Depois de instrumentar o aplicativo, use as seguintes técnicas e ferramentas para testar como ele se compara às suas metas de desempenho originais:

  • Faça testes com base em várias configurações de hardware que você acha que os usuários terão, incluindo PCs de desktop e multifuncionais, laptops e ultrabooks e tablets.
  • Faça testes com base em vários tamanhos de tela que você acha que os usuários terão. Observe que, embora tamanhos de tela mais amplos possam mostrar muito mais conteúdo, trazer todo esse conteúdo extra pode prejudicar o desempenho.
  • Elimine o máximo possível de variáveis de testes aleatórias. Por exemplo:
    • Desligue aplicativos em segundo plano no dispositivo de teste. Para fazer isso, no Windows, selecione o botão Configurações > Mudar configurações do PC > PC e dispositivos. Selecione cada aplicativo ativo na área Aplicativos da tela de bloqueio e selecione Não mostrar status rápido aqui.
    • Crie imagens de código nativo no dispositivo de teste para aplicativos da Windows Store para Windows que usam C# ou Visual Basic. Para fazer isso, na Área de Trabalho do Windows, abra Central de Ações. Na área Manutenção, em Manutenção Automática, selecione Iniciar manutenção.
    • Execute o aplicativo várias vezes para ajudar a eliminar variáveis de teste aleatórias e garantir medições consistentes.
  • Faça testes para reduzir o consumo da bateria. Ao criar um aplicativo, esteja ciente de que o tipo de computador dos usuários pode ter significativamente menos poder de processamento do que o seu ambiente de desenvolvimento. O Windows 8 foi projetado para dispositivos de baixo consumo de energia, como tablets. Além disso, o Windows RT utiliza os mesmos princípios de design para usufruir das características de baixo consumo de energia das plataformas baseadas em ARM. Os aplicativos da Windows Store precisam fazer sua parte para garantir que tenham um bom desempenho nesses dispositivos. Operações que parecem ser executadas rapidamente no seu computador de desenvolvimento podem ter um grande impacto na experiência do usuário em um dispositivo de baixo poder de processamento. Como heurística, trabalhe com a expectativa de um dispositivo de baixo consumo de energia ser cerca de quatro vezes mais lento do que um computador desktop e ajuste suas metas em função disso.
  • Use uma combinação de conjuntos de ferramentas, como o Microsoft Visual Studio e o Analisador de Desempenho do Windows, para medir o desempenho do aplicativo. O Visual Studio foi projetado para fornecer análises centradas no aplicativo, como vinculação de código-fonte. O Analisador de Desempenho do Windows foi projetado para fornecer análises centradas no sistema, como o fornecimento de informações do sistema, informações sobre eventos de manipulação de toque e informações sobre E/S (entrada e saída) de disco e custo da GPU. Ambos os conjuntos de ferramentas oferecem captura e exportação de rastreamento e podem reabrir rastreamentos compartilhados e post-mortem.
  • Antes de enviar seu aplicativo à Windows Store para certificação, incorpore em seus planos de teste os casos de teste relacionados ao desempenho, conforme descrito na seção "Testes de desempenho" de Testes do Kit de Certificação de Aplicativos do Windows e na seção "Desempenho e estabilidade" de Casos de teste de aplicativos da Windows Store.

Iterar e aprimorar o design do aplicativo com base em resultados de testes de desempenho

Depois de analisar os resultados de testes de desempenho, determine se alterações são necessárias, por exemplo:

  • Você deve modificar qualquer uma das metas de desempenho existentes do seu aplicativo?
  • Você deve alterar qualquer uma das suas decisões de design atuais?
  • Você deve você adicionar, remover ou modificar qualquer uma das suas instrumentações no código?

Se mudanças forem necessárias, retorne ao início deste processo e repita-o.

Tópicos relacionados

Planejar seu aplicativo
Desempenho (aplicativos da Windows Store)
Práticas recomendadas gerais para desempenho
Práticas recomendadas de desempenho para aplicativos da Windows Store em JavaScript
Práticas recomendadas de desempenho para aplicativos da Windows Store que usam C++, C# ou Visual Basic

 

 

Mostrar:
© 2015 Microsoft