Compartilhar via


Recomendações para otimização da lógica

Aplica-se a esta recomendação da lista de verificação de Eficiência de Desempenho do Power Platform Well-Architected:

PE:06 Use uma lógica que tenha bom desempenho e certifique-se de as responsabilidades são delegadas à plataforma. Use a lógica apenas para o propósito pretendido e somente quando necessário.

Este guia descreve as recomendações para otimizar o desempenho do código e da infraestrutura. Para otimizar seu código e infraestrutura, você deve usar seus componentes apenas para seu objetivo principal e somente quando necessário. Quando você usa código e infraestrutura em excesso, isso cria consumo desnecessário de recursos, gargalos e respostas lentas. Para compensar essas ineficiências, você deve adicionar mais recursos para realizar as mesmas tarefas.

Definições

Termo Definição
Simultaneidade Quando várias tarefas ou processos são executados ao mesmo tempo, mas não necessariamente exatamente no mesmo instante.
Paralelismo Quando várias tarefas ou processos são executados ao mesmo tempo.

Estratégias-chave de design

A otimização da lógica e da infraestrutura implica o ajuste da lógica e da infraestrutura de suporte para melhorar a eficiência do desempenho. Requer uma lógica de desempenho que execute tarefas rapidamente e não desperdice recursos. Ela requer uma infraestrutura bem projetada e simplificada para evitar complexidade desnecessária. Uma carga de trabalho deve usar os recursos inerentes da plataforma. Essa abordagem ajuda a garantir que a lógica e a infraestrutura sejam usadas principalmente para seus propósitos principais e somente quando necessário.

Otimizar o desempenho da lógica

Para otimizar o desempenho da lógica, modifique o código para reduzir o uso de recursos, minimizar o runtime e melhorar o desempenho. Você pode modificar a lógica para melhorar a eficiência e a velocidade de um aplicativo ou fluxo. Não mascare problemas de desempenho com força bruta. Força bruta significa adicionar recursos de computação para compensar o desempenho do código, como adicionar capacidade extra em vez de abordar a origem. Você precisa corrigir problemas de desempenho com a otimização. Quando você otimiza o desempenho lógico, ele ajuda a maximizar a utilização dos recursos do sistema, melhora o tempo de resposta, reduz a latência e aprimora a experiência do usuário.

Instrumente sua lógica

A lógica de instrumentação refere-se à prática de adicionar log de eventos personalizado para coletar dados e monitorar o desempenho da lógica durante o runtime. A instrumentação lógica permite que os desenvolvedores reúnam informações sobre as principais métricas, como o runtime. Ao instrumentar a lógica, os desenvolvedores podem obter insights sobre os caminhos mais frequentes da lógica, identificar gargalos de desempenho e otimizar a lógica para obter melhor eficiência de desempenho.

De preferência, você deve executar a análise lógica no início do ciclo de vida de desenvolvimento de software. Quanto mais cedo você detectar um problema de lógica, menor será o custo para corrigir. Você deseja automatizar o máximo possível dessa análise lógica. Use ferramentas de análise de código dinâmicas e estáticas para reduzir o esforço manual. Por exemplo, o Verificador de Fluxo pode realçar a lógica que não se espera que tenha alto desempenho, como uma consulta que não especifica critérios de filtro. No entanto, tenha em mente que esse teste ainda é uma simulação da produção. A produção fornece a compreensão mais clara da otimização lógica.

Vantagens e desvantagens: as ferramentas de monitoramento lógico provavelmente aumentarão os custos.

Identificar caminhos críticos

Ao instrumentar sua lógica, você pode medir o consumo de recursos para diferentes caminhos lógicos. Essas medições ajudam a identificar caminhos críticos. Os caminhos críticos têm um efeito significativo no desempenho e no uso de recursos. São seções críticas ou executadas com frequência de um programa que exigem alto desempenho e baixa latência.

Para identificar caminhos críticos de código, considere estas etapas:

  • Analisar dados de runtime: colete dados de runtime e analise-os para identificar áreas da lógica que consomem mais tempo decorrido. Procure padrões ou seções de lógica que são executados com frequência ou levam muito tempo para serem concluídos.

  • Medir o desempenho: use ferramentas de criação de perfil ou estruturas de teste de desempenho para medir o tempo de execução e o consumo de recursos de diferentes caminhos lógicos. Esse processo ajuda a identificar gargalos e pontos de melhoria. Por exemplo, você pode usar o Monitor no Power Apps para obter uma compreensão melhor de como os eventos e fórmulas do seu aplicativo funcionam, a fim de melhorar o desempenho.

  • Considere a lógica de negócios e o efeito do usuário: avalie a importância de diferentes caminhos lógicos com base em sua relevância para a funcionalidade do aplicativo ou operações críticas de negócios. Determine quais caminhos lógicos são cruciais para proporcionar valor aos usuários ou para atender aos requisitos de desempenho.

Otimizar a lógica

Otimizar a lógica é refinar a estrutura e o design da lógica para executar tarefas com menos recursos. A lógica aprimorada reduz as operações desnecessárias. Ela cria uma execução mais rápida com menor consumo de recursos. Você deve remover todas as operações desnecessárias dentro do caminho lógico que possam afetar o desempenho. Priorize a otimização de caminhos críticos para obter os maiores ganhos de eficiência de desempenho.

Para otimizar a lógica, tenha em mente as seguintes estratégias:

  • Remover chamadas de função desnecessárias: revise sua lógica e identifique quaisquer funções que não são essenciais para a funcionalidade desejada e podem afetar o desempenho negativamente. Por exemplo, se uma chamada de função executar uma validação concluída anteriormente no código, você poderá remover a chamada de função de validação desnecessária.

  • Minimize as operações de log: o registro em log pode ser útil para depuração e análise, mas o registro em log excessivo pode afetar o desempenho. Avalie a necessidade de cada operação de registro em log e remova todas as chamadas de log desnecessárias que não sejam críticas para a análise de desempenho. Uma boa prática é permitir que o sistema ative e desative o registro em log, para ajudar na depuração e, ao mesmo tempo, não causar problemas de desempenho de produção.

  • Otimizar loops e condicionais: analise loops e condicionais em sua lógica e identifique quaisquer iterações ou condições desnecessárias que possam ser eliminadas. Simplificar e otimizar essas estruturas pode melhorar o desempenho do seu código. Minimize as chamadas de função dentro de loops e elimine cálculos redundantes. Pense em mover cálculos para fora do loop.

  • Reduza o processamento de dados desnecessário: revise sua lógica para quaisquer operações de processamento de dados desnecessárias, como cálculos ou transformações redundantes. Elimine essas operações desnecessárias para melhorar a eficiência de sua lógica. Por exemplo, use Dataverse colunas calculadas, campos de valor acumulado ou Colunas do Power Fx, em vez de calcular o valor no código e armazená-lo com uma operação de gravação.

  • Otimizar estruturas de dados. Para armazenar e recuperar dados com eficiência, selecione as estruturas de dados apropriadas e somente as colunas de dados necessárias. Escolha a melhor estrutura de dados para um problema específico. Uma estrutura de dados adequada melhora o desempenho do aplicativo.

  • Minimizar solicitações de rede: se sua lógica envolve fazer solicitações de rede (por exemplo, usando uma ação de conector), minimize o número de solicitações e otimize seu uso. Faça solicitações em lote quando possível e evite viagens de ida e volta desnecessárias para melhorar o desempenho.

  • Reduzir o tamanho da estrutura de dados: revise os requisitos de dados e elimine quaisquer campos ou propriedades desnecessários. Otimize o uso da memória selecionando os tipos de dados apropriados e empacotando dados de forma eficiente.

  • Fazer o trabalho de forma assíncrona: avalie se o trabalho pode ser feito de forma assíncrona em vez de síncrona em sua lógica. Por exemplo, em vez de executar a operação embutida, considere implementar um fluxo do Power Automate para processar o trabalho de forma assíncrona.

  • Configure antes de personalizar. Use componentes de aplicativo padrão, se possível. Personalizações como plug-ins e JavaScript podem afetar o desempenho.

  • Minimizar controles. Exiba apenas os campos necessários nos formulários, muitos campos podem sobrecarregar a interface do usuário e afetar o desempenho. Minimize o número de controles na barra de comandos, no aplicativo de tela ou na página personalizada. Evite aninhar galerias ou adicionar muitos componentes a uma galeria.

  • Otimizar consultas de dados. Carregue apenas os dados necessários em um aplicativo ou fluxo. Use exibições do lado do servidor para pré-filtrar dados para restringir os dados relevantes para sua consulta.

Analise as recomendações de desempenho específicas para o produto Power Platform com o qual você está trabalhando. Avalie sua lógica em relação a essas recomendações para identificar áreas de melhoria.

Vantagens e desvantagens: otimizar a lógica e os caminhos críticos requer experiência. Identificar ineficiências lógicas é subjetivo e pode exigir pessoas altamente qualificadas, que você pode precisar extrair de outras tarefas.

Usar simultaneidade e paralelismo

O uso de simultaneidade e paralelismo envolve a execução de várias tarefas ou processos simultaneamente ou de maneira sobreposta para fazer uso eficiente dos recursos computacionais. Essas técnicas aumentam a taxa de transferência geral e o número de tarefas que uma carga de trabalho pode processar. Ao executar tarefas simultaneamente ou em paralelo, isso pode reduzir o runtime do aplicativo e aumentar os tempos de resposta.

A simultaneidade e o paralelismo distribuem efetivamente a carga de trabalho entre os recursos de computação. Ao aumentar a simultaneidade ou o paralelismo, considere o impacto em outros sistemas, pois você pode exceder seus limites. Por exemplo, um loop simultâneo em um fluxo do Power Automate processando cada item por vez pode exceder os limites de solicitação de um conector usado na lógica do loop.

Use paralelismo. Paralelismo é a capacidade de um sistema acionar simultaneamente várias tarefas ou processos em vários recursos computacionais. O paralelismo divide uma carga de trabalho em tarefas menores que são executadas em paralelo. Quando você executa a lógica em paralelo, o desempenho melhora porque a carga de trabalho é distribuída em várias ramificações.

Usar simultaneidade. Simultaneidade é a capacidade de um sistema de executar várias tarefas ou processos. A simultaneidade permite que diferentes partes de uma carga de trabalho progridam de forma independente, o que pode melhorar o desempenho geral.

  • Execução simultânea: a execução simultânea permite que a mesma lógica seja executada simultaneamente. Limitar a execução simultânea a um pode ter o efeito de serializar a lógica, resultando no processamento de um item de cada vez. Controlar a quantidade de execução simultânea de itens de carga de trabalho pode ajudar a gerenciar o uso de recursos durante o processamento. Por exemplo, os loops do fluxo do Power Automate podem ser configurados para processar várias ações em paralelo usando a propriedade Concurrent Control.

    Observação

    Antes de habilitar a simultaneidade, lembre-se de que isso significa que várias ações serão executadas ao mesmo tempo, se você estiver gravando dados como parte do loop, verifique se o destino dos dados pode lidar com solicitações simultâneas.

  • Filas: uma fila é um buffer de armazenamento localizado entre um componente solicitante (produtor) e o componente de processamento (consumidor) da carga de trabalho. Pode haver vários consumidores para uma única fila. À medida que as tarefas aumentam, você deve escalar os consumidores para atender à demanda. O produtor coloca tarefas em uma fila. A fila armazena as tarefas até que um consumidor tenha capacidade. Uma fila geralmente é a melhor maneira de entregar o trabalho para um serviço de processamento que tem picos de demanda. Para obter mais informações, consulte Padrão de nivelamento de carga baseado em fila e Filas de armazenamento e filas do Barramento de Serviço.

Otimizar trabalhos em segundo plano

Muitos aplicativos exigem tarefas em segundo plano que são executadas de forma independente da interface do usuário. O aplicativo pode iniciar o trabalho e continuar a processar solicitações interativas dos usuários. Exemplos de trabalhos em segundo plano incluem trabalhos em lote, tarefas com uso intensivo de processador e processos de longa execução, como fluxos de trabalho. As tarefas em segundo plano não devem bloquear o aplicativo ou causar inconsistências devido à operação atrasada quando o sistema está sob carga. Para obter mais informações sobre como otimizar trabalhos em segundo plano, consulte Recomendações para desenvolver trabalhos em segundo plano.

Facilitação do Power Platform

Instrumentação de código: ao criar aplicativos de tela, padrões de alto desempenho devem ser usados para melhorar a eficiência do aplicativo, enquanto os antipadrões devem ser evitados. Para obter mais informações, consulte Visão geral de como criar Power Apps de alto desempenho. Use o Monitor no Power Apps para diagnosticar e solucionar problemas de desempenho durante o desenvolvimento.

Medir engajamento e resultados: ao criar agentes, rastrear engajamento da conversa e resultados é crucial para medir as métricas de desempenho do agente e descobrir áreas para melhorias.

Otimizar lógica do código: com o verificador de solução, é possível executar uma rica verificação de análise estática em suas soluções em relação a um conjunto de regras de práticas recomendadas e identificar rapidamente esses padrões problemáticos. Com o Verificador de Solução, você pode obter insights sobre quais áreas da implementação do seu fluxo representam um risco de desempenho?

Usando simultaneidade e paralelismo: os fluxos da nuvem do Power Automate oferecem suporte à simultaneidade em loops e gatilhos. Observe que os limites de simultaneidade, looping e debatching se aplicam e são baseados no seu perfil de desempenho. Suporte à simultaneidade do Power Apps usando a função Simultânea.

Otimizar desempenho do Dataverse: o Microsoft Dataverse oferece uma estrutura extensível que permite aos desenvolvedores criar experiências altamente personalizadas e adaptadas. Ao personalizar, estender ou integrar com o Dataverse, esteja ciente das diretrizes estabelecidas e das melhores práticas. Consulte Melhores práticas e orientação ao usar o Microsoft Dataverse.

Lista de verificação Eficiência de Desempenho

Consulte o conjunto completo de recomendações.