Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os usuários esperam que seus aplicativos permaneçam responsivos, se sintam naturais e não escorram a bateria. Tecnicamente, o desempenho é um requisito não funcional, mas tratar o desempenho como um recurso ajuda você a atender às expectativas dos usuários. Especifique as metas e os resultados da medida. Esses são os principais fatores. Determine seus cenários críticos de desempenho, defina o que significa bom desempenho e, em seguida, meça cedo e frequentemente em todo o ciclo de vida do projeto para ter certeza de que você atingirá suas metas.
Especificar metas
A experiência do usuário é uma maneira básica de definir um bom desempenho. O tempo de inicialização de um aplicativo pode influenciar a percepção de desempenho de um usuário. Um usuário pode considerar que um tempo de inicialização de aplicativo de menos de um segundo é excelente, menos de cinco segundos para ser bom e maior que cinco segundos para ser ruim.
Outras métricas têm um impacto menos óbvio na experiência do usuário, como memória. As chances de um aplicativo ser encerrado enquanto suspenso ou inativo aumentam com a quantidade de memória que o aplicativo ativo usa. O alto uso de memória degrada a experiência de todos os aplicativos no sistema, portanto, ter uma meta de consumo de memória é razoável.
Defina metas iniciais específicas e mensuráveis. Eles devem se enquadrar em três categorias:
- Tempo – quanto tempo leva os usuários ou o aplicativo para concluir tarefas
- Fluidez – a taxa e a continuidade com que o aplicativo se redesenhar em resposta à interação do usuário
- Eficiência – quão bem o aplicativo conserva os recursos do sistema, incluindo a energia da bateria
Time
Pense em intervalos aceitáveis de tempo decorrido (classes de interação) para os usuários concluirem suas tarefas.
| Classe de interação | Percepção do usuário | Ideal | Máximo | Exemplos |
|---|---|---|---|---|
| Rápido | Atraso minimamente perceptível | 100 ms | 200 ms | Abra a barra de aplicativos; pressione um botão (primeira resposta) |
| Típico | Rápido, mas não rápido | 300 ms | 500 ms | Redimensionar; zoom semântico |
| Dinâmico | Não rápido, mas parece responsivo | 500 ms | 1 segundo | Navegue até uma página diferente; retomar o aplicativo |
| Lançamento | Experiência competitiva | 1 segundo | 3 Segundos | Inicie o aplicativo pela primeira vez |
| Contínuo | Não parece mais responsivo | 500 ms | 5 segundos | Baixar um arquivo da Internet |
| Cativo | Demorado; o usuário poderia mudar para outra tela | 500 ms | 10 segundos | Instalar vários aplicativos da Loja |
Atribua classes de interação aos cenários de desempenho do aplicativo. Para cada cenário, atribua a referência pontual do aplicativo, uma parte da experiência do usuário e uma classe de interação.
Fluidez
Metas de fluidez mensuráveis específicas para seu aplicativo podem incluir:
- Sem travamentos e interrupções no redesenho da tela
- Renderização de animações a 60 quadros por segundo (FPS)
- Quando o usuário arrasta ou faz rolagem, o aplicativo exibe de 3 a 6 páginas de conteúdo por segundo
Efficiency
Metas de eficiência mensuráveis específicas para seu aplicativo podem incluir:
- O percentual de CPU do seu aplicativo está igual ou abaixo de um valor-alvo, e o uso de memória em MB está igual ou abaixo de um valor-alvo o tempo todo
- Quando o aplicativo está inativo, o uso de CPU e memória é mínimo
- Seu aplicativo pode ser usado ativamente por um número previsto de horas usando a bateria
Projetar seu aplicativo para desempenho
Use suas metas de desempenho para influenciar o design do aplicativo. Considere estes aspectos:
Interface do usuário
- Maximize a análise e o tempo de carga e a eficiência de memória para cada página otimizando sua marcação XAML. Adie o carregamento da interface do usuário e do código até que seja necessário.
- Para
ListVieweGridView, torne todos os itens do mesmo tamanho e use o máximo de técnicas de otimização possível. - Declare a interface do usuário na marcação, em vez de construí-la de forma imperativa no código.
- Adie a criação de elementos da interface do usuário até que o usuário precise deles usando o atributo x:Load.
- Prefira transições de tema e animações em vez de animações baseadas em storyboard. As animações com storyboard exigem atualizações constantes na tela e mantêm o pipeline de CPU e gráfico ativo.
- Carregue imagens em um tamanho apropriado para a exibição na qual você as apresenta.
CPU, memória e energia
- Programe tarefas de menor prioridade em threads de menor prioridade. Consulte a programação assíncrona e a classe DispatcherQueue .
- Minimize o volume de memória do aplicativo liberando recursos caros (como mídia) quando eles não forem necessários.
- Evite vazamentos de memória cancelando o registro de manipuladores de eventos e desreferenciando elementos da interface do usuário sempre que possível.
- Para a eficiência da bateria, seja conservador com a frequência com que você pesquisa dados, consulta um sensor ou agenda o trabalho na CPU quando ele está ocioso.
Acesso a dados
- Se possível, faça a pré-busca do conteúdo.
- Armazenar conteúdo em cache que é caro para acessar.
- Para falhas de cache, mostre o mais rápido possível uma interface temporária que indique que o aplicativo ainda está carregando conteúdo.
Instrumento para desempenho
Conforme você codifica, adicione um código que registra mensagens e eventos em determinados pontos enquanto seu aplicativo é executado. Posteriormente, use ferramentas de criação de perfil, como Windows Gravador de Desempenho e Windows Performance Analyzer (ambos incluídos no Windows Performance Toolkit) para criar e exibir um relatório sobre o desempenho do aplicativo.
Windows fornece APIs de registro em log apoiadas pelo ETW (Rastreamento de Eventos para Windows) que oferecem uma solução avançada de registro em log e rastreamento de eventos. As APIs no Windows. O namespace Foundation.Diagnostics inclui o FileLoggingSession, LoggingActivitye LoggingChannelLoggingSession as classes.
// using Windows.Foundation.Diagnostics;
LoggingChannel myLoggingChannel = new LoggingChannel("MyLoggingChannel");
myLoggingChannel.LogMessage("Here's my logged message.", LoggingLevel.Information);
Para registrar em log os eventos de início e parada ao longo de um período:
LoggingChannel myLoggingChannel = new LoggingChannel("MyLoggingChannel");
LoggingActivity myLoggingActivity;
using (myLoggingActivity = new LoggingActivity("MyLoggingActivity", myLoggingChannel))
{
// A start event is logged when the activity begins.
// Add code here to do something of interest.
}
// An end event is logged when the activity ends.
Testar e medir em relação às metas de desempenho
Use estas técnicas e ferramentas para testar como seu aplicativo se compara às suas metas de desempenho:
- Teste em uma ampla variedade de configurações de hardware, incluindo desktops, laptops, ultrabooks e tablets.
- Teste em uma ampla variedade de tamanhos de tela. Telas mais largas mostram mais conteúdo, o que pode afetar negativamente o desempenho.
- Elimine o máximo de variáveis de teste que puder:
- Desative aplicativos em segundo plano no dispositivo de teste.
- Compile seu aplicativo na configuração Release antes de implantá-lo no dispositivo de teste.
- Execute o aplicativo várias vezes para ajudar a eliminar variáveis de teste aleatórias e garantir medidas consistentes.
- Verificar disponibilidade de energia reduzida. Os dispositivos dos usuários podem ter significativamente menos energia do que o computador de desenvolvimento.
- Use uma combinação de ferramentas como ferramentas de diagnóstico Visual Studio e Windows Performance Analyzer para medir o desempenho do aplicativo.
Responder aos resultados do teste de desempenho
Depois de analisar os resultados do teste de desempenho, determine se alguma alteração é necessária:
- Você deve alterar as decisões de design do aplicativo ou otimizar seu código?
- Você deve adicionar, remover ou alterar a instrumentação no código?
- Você deve revisar suas metas de desempenho?
Se forem necessárias alterações, faça-as e retorne à instrumentação ou teste.
Optimize
Otimize apenas os caminhos de código críticos de desempenho em seu aplicativo , aqueles em que mais tempo é gasto. A análise de desempenho mostra quais são essas áreas. Muitas vezes, há um equilíbrio entre boas práticas de design e código executado com o mais alto nível de otimização. Priorize a produtividade do desenvolvedor e o bom design de software em áreas em que o desempenho não é uma preocupação.
Conteúdo relacionado
Windows developer