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:

  1. 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).

  2. 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.
  1. 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

  2. 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 próprio aplicativo.

    Analysis of trace event duration

Recursos adicionais