Melhorar a capacidade de resposta do seu aplicativo do Windows
Este guia vai ajudar você a melhorar a capacidade de resposta dos aplicativos do Windows, otimizando a latência para inicialização e interações importantes. Interações rápidas e responsivas (também conhecidas como interações de baixa latência) criam uma melhor experiência do usuário. Compreender as expectativas de interação, medir as durações atuais e definir metas de melhoria dependendo da classe de interação pode levar a melhorias significativas na experiência e satisfação dos usuários.
Guia passo a passo para otimizar interações para comportamento responsivo
Os clientes podem sentir quando a inicialização de um aplicativo, a navegação no menu ou o carregamento de página/conteúdo estão lentos. Eles passaram a esperar uma experiência rápida e perfeita e compartilhamos algumas etapas e orientações para entender melhor essas expectativas abaixo.
As etapas básicas para impulsionar a otimização de latência são:
Defina o cenário e adicione eventos TraceLogging.
Faça uma lista das principais interações pelas quais um usuário passará ao usar seu aplicativo, como iniciar, abrir um menu, navegar para uma nova página e renderizar conteúdo, etc. Para cada uma dessas interações, adicione um evento start e um evento stop a serem usados para medição e análise. Saiba mais sobre como adicionar o TraceLogging, um formato para autodescrição do Rastreamento de Eventos para Windows (ETW).
Definir metas com base na classe de interação.
Os usuários têm expectativas diferentes para o desempenho e a capacidade de resposta de um aplicativo, dependendo do tipo de interação. Por exemplo, a rapidez com que um aplicativo é iniciado versus a rapidez com que uma página é carregada. Pense nos intervalos aceitáveis de tempo decorrido (classes de interação) que leva para os usuários realizarem tarefas no aplicativo. Isso pode variar de 200 milissegundos (ms) a 5 segundos (seg). Em seguida, atribua a cada tarefa um rótulo de classe de interação com uma meta associada. Veja abaixo algumas diretrizes básicas, juntamente com sugestões de como é possível incluir uma interface do usuário (UI) para melhorar a percepção de capacidade de resposta:
Rótulo da classe de interação | Percepção do usuário | Intervalo de atraso | Exemplos | Interface do usuário sugerida |
---|---|---|---|---|
Rápido | Atraso minimamente perceptível | 100 a 200 milissegundos | Abrir a barra de aplicativos, clicar com o botão direito do mouse no menu | |
Interativo | Ágil, mas não rápido | 300 a 500 ms | Sair de um aplicativo, exibir resultados de pesquisa armazenados em cache | |
Pausar | Não rápido, mas perceptivelmente responsivo | 500 ms a 1 segundo | Navegar até uma página diferente; retomar o aplicativo de um estado suspenso, exibir os resultados da pesquisa na Web | Uma animação de entrada (por exemplo, fazer novo conteúdo voar para a tela) pode ser usada para mascarar o tempo necessário para esse cenário. |
Aguardar | Não é rápido devido à quantidade de trabalho para o cenário | 1 a 3 segundos | Inicialização do aplicativos | Um cursor girando/aguardando pode ser usado para observar o progresso. Uma animação de saída e entrada (por exemplo, fazer o conteúdo antigo sair voando e o novo conteúdo voar para a tela) pode ser usada para mascarar o tempo necessário para esse cenário. |
Longa espera | Não há mais a percepção de resposta | 2 a 5 segundos | Inicialização de aplicativos grandes (use a tela inicial estendida), iniciando um fluxo de vídeo HD | Uma "interface do usuário de carregamento" é exibida. Sempre que possível, inclua uma opção de "cancelar" para o usuário. A interface do usuário de carregamento deve aparecer dentro da classe de interação rápida. A interface do usuário de carregamento não precisa exibir uma porcentagem ou tempo restante. |
Cativo | Uma longa espera – reservada para cenários inevitavelmente longos/complexos | 5 a 10 segundos | Login do sistema | Uma "interface do usuário de carregamento" ou caixa de diálogo é exibida. Sempre que possível, inclua uma opção de "cancelar" para o usuário. A caixa de diálogo deve aparecer dentro da classe de interação rápida. A caixa de diálogo deve exibir uma porcentagem ou tempo restante se isso fornecer contexto útil para o usuário. |
Execução prolongada | Operações longas – os usuários provavelmente farão várias tarefas (alternarão durante a operação) | 10 a mais de 30 segundos | Instalar novos recursos ou atualizações, downloads de arquivos grandes | A interface do usuário deve ser projetada para refletir a possibilidade de multitarefa. Uma caixa de diálogo de progresso deve ser exibida, incluindo uma estimativa de conclusão (porcentagem, tempo restante etc.). Como alternativa, a interface do usuário pode minimizar completamente e notificar o usuário somente quando o cenário for concluído usando uma notificação do sistema. |
Para verificar as durações exatas de interações específicas, é possível capturar e analisar um rastreamento usando o WPA (Windows Performance Analyzer).
Antes de capturar o rastreamento, deixe o dispositivo de teste ocioso abrindo o Gerenciador de Tarefas e garantindo que a utilização da CPU seja inferior a 5%. Isso minimizará a interferência na medição e fornecerá rastreamentos de tamanho razoáveis. Isso ajudará você a isolar melhor a interação que pretende medir.
Para capturar um rastreamento, abra uma linha de comando (PowerShell ou Prompt de Comando) no modo de administrador.
Insira o comando:
wpr -start GeneralProfile -filemode
Execute o cenário de interação no aplicativo.
Insira o comando:
wpr -stop Trace.etl
Analise o rastreamento e encontre oportunidades de melhoria.
Analise a duração de cada interação de chave compatível com o aplicativo abrindo o rastreamento que você acabou de capturar no WPA (Windows Performance Analyzer).
- Para abrir o rastreamento no WPA, na linha de comando, digite:
wpa.exe Trace.etl
- Expanda o menu suspenso Atividade do sistema e clique duas vezes em "Eventos genéricos" para abrir a visualização da análise.
- Escolha a série de eventos relacionada ao seu aplicativo e expanda a lista suspensa "Nome do provedor" até conseguir encontrar o nome do processo, da tarefa e do evento associados à interação principal que você está procurando. A duração do evento de interação será listada na coluna Hora, bem como no gráfico, mostrando Duração, Hora de Início e Hora de Término.
Se a duração do rastreamento não atender às metas de classe de interação (por exemplo, 500ms), identifique os principais threads do seu Aplicativo (provavelmente o thread da interface do usuário) e examine as pilhas superiores para uso da CPU e esperas. *Lembre-se de que, ao realizar a análise, alguns problemas podem não ser específicos do código do seu próprio aplicativo.
- Para abrir o rastreamento no WPA, na linha de comando, digite:
Recursos adicionais
Windows developer