Recomendações para otimizar a 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 com bom desempenho e assegure-se de que esta transfere responsabilidades para a plataforma. Use a lógica apenas para o propósito pretendido e só quando necessário. |
---|
Este guia descreve as recomendações para otimizar o desempenho do código e da infraestrutura. Para otimizar o seu código e infraestrutura, deve usar os seus componentes apenas para a respetiva finalidade principal e só quando necessário. Quando usa em excesso código e infraestrutura, cria consumo desnecessário de recursos, estrangulamentos e respostas lentas. Para compensar essas ineficiências, tem de adicionar mais recursos para realizar as mesmas tarefas.
Definições
Termo | Definição |
---|---|
Simultaneidade | Quando várias tarefas ou processos são executados de uma vez, mas não necessariamente ao mesmo tempo. |
Paralelismo | Quando várias tarefas ou processos são executados ao mesmo tempo. |
Principais estratégias 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 executa tarefas rapidamente e não desperdiça recursos. Requer uma infraestrutura bem concebida e simplificada para evitar complexidade desnecessária. Uma carga de trabalho deve usar as capacidades inerentes da plataforma. Esta abordagem ajuda a garantir que a lógica e a infraestrutura são usadas principalmente para os respetivos objetivos principais e só quando necessário.
Otimizar o desempenho da lógica
Para otimizar o desempenho da lógica, modifique o código para reduzir a utilização de recursos, minimizar o runtime e melhorar o desempenho. Pode modificar a lógica para melhorar a eficiência e a velocidade de uma aplicação ou de um 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 adicional em vez de abordar a origem. Precisa de corrigir problemas de desempenho com a otimização. Quando otimiza o desempenho da lógica, ajuda a maximizar a utilização dos recursos do sistema, melhora o tempo de resposta, reduz a latência e melhora a experiência do utilizador.
Instrumentalize a sua lógica
A lógica de instrumentalização refere-se à prática de adicionar registos de eventos personalizado para recolher dados e monitorizar o desempenho da lógica durante o runtime. A instrumentalização da lógica permite que os programadores recolham informações sobre métricas-chave, como o runtime. Ao instrumentalizar a lógica, os programadores podem obter informações sobre os caminhos frequentes da lógica, identificar estrangulamentos de desempenho e otimizar a lógica para uma melhor eficiência de desempenho.
Idealmente, deve efetuar a análise da lógica no início do ciclo de vida de programação do software. Quanto mais cedo reparar num problema de lógica, mais barato é corrigi-lo. Pretende automatizar o máximo possível desta análise de lógica. Utilize ferramentas de análise de código dinâmica e estática para reduzir o esforço manual. Por exemplo, o Verificador de Fluxos pode realçar a lógica que não se espera que tenha bom desempenho, como uma consulta que não especifica critérios de filtro. No entanto, tenha em mente que este teste ainda é uma simulação de produção. A produção fornece a compreensão mais clara da otimização da lógica.
Troca: é provável que as ferramentas de monitorização da lógica aumentem os custos.
Identificar caminhos frequentes
Ao instrumentalizar a sua lógica, pode medir o consumo dos recursos para diferentes caminhos da lógica. Estas medições ajudam-no a identificar caminhos frequentes. Os caminhos frequentes têm um efeito significativo no desempenho e na utilização de recursos. São secções críticas ou executadas com frequência de um programa que exigem alto desempenho e baixa latência.
Para identificar caminhos frequentes de código, considere estes passos:
Analisar dados de runtime: recolha dados de runtime e analise-os para identificar áreas da lógica que consomem mais tempo decorrido. Procure por padrões ou secções de lógica que são frequentemente executados ou levam muito tempo a serem concluídos.
Medir o desempenho: use ferramentas de criação de perfis ou estruturas de testes de desempenho para medir o tempo de execução e o consumo de recursos de diferentes caminhos de lógica. Este processo ajuda a identificar estrangulamentos e áreas para melhoria. Por exemplo, pode usar o Monitor no Power Apps para obter uma melhor compreensão sobre a forma como os eventos e as fórmulas da aplicação funcionam, para que possa melhorar o desempenho.
Considere a lógica de negócio e o efeito do utilizador: avalie a importância de diferentes caminhos de lógica com base na respetiva relevância para a funcionalidade da aplicação ou operações de negócio críticas. Determine que caminhos de lógica são cruciais para fornecer valor aos utilizador ou satisfazer os requisitos de desempenho.
Otimizar a lógica
Otimizar a lógica trata-se de refinar a estrutura e o design da lógica para realizar tarefas com menos recursos. A lógica melhorada reduz as operações desnecessárias. Cria uma execução mais rápida com menos consumo de recursos. Deve remover todas as operações desnecessárias dentro do caminho da lógica que possam afetar o desempenho. Dê prioridade à otimização de caminhos frequentes para obter os maiores ganhos de eficiência de desempenho.
Para otimizar a lógica, considere as seguintes estratégias:
Remover chamadas de função desnecessárias: reveja a sua lógica e identifique quaisquer funções que não sejam essenciais para a funcionalidade pretendida e que possam afetar negativamente o desempenho. Por exemplo, se uma chamada de função executar uma validação concluída anteriormente no código, poderá remover a chamada de função de validação desnecessária.
Minimizar as operações de registo: o registo pode ser útil para depuração e análise, mas o registo excessivo pode afetar o desempenho. Avalie a necessidade de cada operação de registo e remova todas as chamadas de registo desnecessárias que não sejam críticas para a análise do desempenho. Uma boa prática é permitir que o seu sistema ative e desative o registo, para ajudar com a depuração sem causar problemas de desempenho de produção.
Otimizar ciclos e condicionais: analise ciclos e condicionais na sua lógica e identifique quaisquer iterações ou condições desnecessárias que possam ser eliminadas. Simplificar e otimizar estas estruturas pode melhorar o desempenho do seu código. Minimize as chamadas de função dentro de ciclos e elimine cálculos redundantes. Considere mover cálculos para fora do ciclo.
Reduza o processamento de dados desnecessário: reveja a sua lógica para verificar se há operações desnecessárias de processamento de dados, como cálculos ou transformações redundantes. Elimine estas operações desnecessárias para melhorar a eficiência da sua lógica. Por exemplo, use as colunas calculadas e campos de rollup do Dataverse ou colunas do Power Fx, em vez de calcular o valor no código e armazená-lo com uma operação de guardar.
Otimizar estruturas de dados. Para armazenar e obter dados de forma eficiente, selecione as estruturas de dados apropriadas e apenas 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 da aplicação.
Minimizar pedidos de rede: se a sua lógica envolver criar pedidos de rede (por exemplo, usando uma ação de conector), minimize o número de pedidos e otimize a respetiva utilização. Coloque pedidos 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: analise os requisitos de dados e elimine quaisquer campos ou propriedades desnecessários. Otimize a utilização da memória ao selecionar os tipos de dados apropriados e empacotando os dados de forma eficiente.
Trabalhar de forma assíncrona: avalie se o trabalho pode ser feito de forma assíncrona em vez de forma síncrona na sua lógica. Por exemplo, em vez de realizar a operação em linha, considere implementar um fluxo do Power Automate para processar o trabalho de forma assíncrona.
Configure antes de personalizar. Utilize componentes de aplicação padrão, se puder. As personalizações, como plug-ins e JavaScript, podem afetar o desempenho.
Minimize controlos. Apresente apenas os campos necessários nos formulários — demasiados campos podem sobrecarregar a interface do utilizador e afetar o desempenho. Minimize o número de controlos na barra de comando, na aplicação de tela ou na página personalizada. Evite aninhar galerias ou adicionar demasiados componentes a uma galeria.
Otimize consultas de dados. Carregue apenas os dados de que necessita numa aplicação ou num fluxo. Utilize vistas do lado do servidor para pré-filtrar dados e restringir os dados relevantes para a sua consulta.
Reveja as recomendações de desempenho específicas do produto do Power Platform com o qual está a trabalhar. Avalie a sua lógica em relação a estas recomendações para identificar áreas a serem melhoradas.
Troca: otimizar a lógica e os caminhos frequentes requer conhecimentos. Identificar ineficiências de lógica é subjetivo e pode requerer indivíduos altamente qualificados, dos quais pode precisar de retirar de outras tarefas.
Utilizar simultaneidade e paralelismo
A utilização da simultaneidade e do paralelismo envolve a execução de várias tarefas ou processos simultaneamente ou de forma sobreposta para fazer uso eficiente dos recursos de computação. Estas técnicas aumentam o débito geral e o número de tarefas que uma carga de trabalho pode processar. Quando executa tarefas simultaneamente ou em paralelo, pode reduzir o runtime da aplicação 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 noutros sistemas, pois pode exceder os limites. Por exemplo, um ciclo simultâneo num fluxo do Power Automate que processa cada item de cada vez pode ultrapassar os limites de pedidos de um conector usado na lógica do ciclo.
Utilize paralelismo. Paralelismo é a capacidade de um sistema de acionar simultaneamente várias tarefas ou processos em vários recursos de computação. O paralelismo divide uma carga de trabalho em tarefas menores que são executadas em paralelo. Quando executa a lógica em paralelo, o desempenho melhora porque a carga de trabalho é distribuída por vários ramos.
Utilize simultaneidade. A simultaneidade é a capacidade de um sistema 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 gerir a utilização de recursos durante o processamento. Por exemplo, os ciclos do fluxo do Power Automate podem ser configurados para processar várias ações em paralelo usando a propriedade Controlo de Simultaneidade.
Nota
Antes de ativar a simultaneidade, lembre-se de que isso significa que várias ações serão executadas ao mesmo tempo — se estiver a gravar dados como parte do ciclo, verifique se o destino dos dados pode processar pedidos simultâneos.
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, deve escalar os consumidores para satisfazer a procura. O produtor coloca tarefas numa fila. A fila armazena as tarefas até que um consumidor tenha capacidade. Geralmente, uma fila é a melhor maneira de entregar o trabalho a um serviço de processamento que experimenta picos de procura. Para mais informações, consulte Padrão de Nivelamento de Carga Baseado em Fila e Filas de armazenamento e Filas do Service Bus.
Otimizar tarefas de fundo
Muitas aplicações requerem tarefas em fundo que são executadas independentemente da interface do utilizador. A aplicação pode iniciar a tarefa e continuar a processar pedidos interativos dos utilizadores. Exemplos de tarefas de fundo incluem tarefas em lote, tarefas intensivas de processador e processos de longa execução, como fluxos de trabalho. As tarefas de fundo não devem bloquear a aplicação nem causar inconsistências devido à operação atrasada quando o sistema está sob carga. Para mais informações sobre como otimizar tarefas de fundo, consulte Recomendações para desenvolver tarefas de fundo.
Facilitação do Power Platform
Código de instrumentalização: ao criar aplicações de tela, devem ser usados padrões de desempenho para melhorar a eficiência da aplicação, enquanto antipadrões devem ser evitados. Para mais informações, consulte Descrição geral da criação do Power Apps com bom desempenho. Use o Monitor no Power Apps para diagnosticar e resolver problemas de desempenho durante o desenvolvimento.
Medir a cativação e os resultados: ao criar agentes, rastrear a cativação da conversa e os resultados é essencial para medir as métricas de desempenho do agente e descobrir áreas de melhoria.
Otimizar lógica do código: com a caraterística do verificador de soluções pode executar uma análise estática avançada em soluções contra um conjunto de regras de práticas recomendadas e rapidamente identificar padrões problemáticos. Com o Verificador de Fluxos, pode obter informações sobre que áreas da implementação do seu fluxo representam um risco de desempenho?
Utilizar simultaneidade e paralelismo: os fluxos de cloud do Power Automate suportam simultaneidade em ciclos e acionadores. Note que os limites de simultaneidade, ciclos e remoção de lote se aplicam e são baseados no seu perfil de desempenho. O Power Apps suporta a simultaneidade usando a função de Simultânea.
Otimizar o desempenho do Dataverse: o Microsoft Dataverse fornece uma estrutura extensível que permite que os programadores criem experiências altamente personalizadas e personalizadas. Quando estiver a personalizar, expandir ou a integrar com o Dataverse, esteja ciente das diretrizes e das práticas recomendadas estabelecidas. Consulte Melhores práticas e orientações ao utilizar o Microsoft Dataverse.
Informações relacionadas
- Limites de simultaneidade, ciclos e de anulação de lotes no Power Automate
- Orientações específicas do produto para otimizar o desempenho do Dynamics 365
- Aperfeiçoamento e otimização do desempenho para aplicações de interação com os clientes
- Descrição geral da criação de Power Apps com bom desempenho
- Descrição geral do Monitor
- Melhorar o desempenho, a estabilidade e a fiabilidade dos componentes com o verificador de soluções
Lista de verificação de eficiência de desempenho
Consulte o conjunto completo de recomendações.