Compartilhar via


Cálculos rápidos

As expressões do Power Fx são eficientes e fazem automaticamente muitos cálculos em segundo plano. Embora o Power Fx automatize muitas coisas para você, é possível ajustar os cálculos, de maneira que eles sejam os mais rápidos possíveis.

Recuperação de dados

Usar seleção de coluna explícita

O recurso Seleção de Coluna Explícita (ECS) permanece habilitado por padrão para todos os novos aplicativos. Se ele não estiver habilitado para o aplicativo, você deverá fazer isso. O ECS reduz automaticamente o número de colunas recuperadas apenas àquelas usadas no aplicativo. Se o ECS não estiver habilitado, você poderá recuperar mais dados do que precisa, o que pode afetar o desempenho. Às vezes, quando um aplicativo extrai dados por meio de coleções, a linhagem original ou a fonte de uma coluna pode ser perdida. Não sabemos se ele está sendo usado e o descartamos usando ECS. Você normalmente pode forçar o ECS a trabalhar para uma coluna não encontrada usando a expressão PowerFx ShowColumns após uma referência de coleção ou a usando em um controle.

Usar imagens em galerias, tabelas e formulários com cuidado

Use versões em miniatura do Dataverse de imagens para galerias e tabelas. As miniaturas do Dataverse são pequenas, com aproximadamente 1 kilobyte, e são armazenadas em linha como parte do registro e são úteis e rápidas para exibição em controles que mostram coleções. Todas as outras referências de imagem, inclusive todas as imagens do SharePoint exigem uma chamada à parte e não devem ser colocadas em uma galeria ou tabela. Coloque imagens que exijam uma chamada à parte em formulários de detalhes. Leve em consideração jamais mostrar uma imagem completa por padrão. As imagens totalmente detalhadas podem ser úteis e importantes para usuários. No entanto, você pode disponibilizar essas imagens aos usuários por meio de uma ação do usuário explícita; por exemplo, um botão ou uma navegação para uma página à parte. O SharePoint tem uma grande variedade de imagens de tamanho intermediário que você pode usar em um formato menor que a imagem completa. O Dataverse só tem dois tamanhos: Miniatura e Completo.

Cálculos

Dividir fórmulas com App.formula

O uso de App.formulas e fórmulas nomeadas pode ajudar na velocidade de carregamento do aplicativo e da navegação na página porque permite que o Power Fx decida quando avaliar uma fórmula. Isso significa que ele não precisa necessariamente avaliá-lo em OnStart. Além disso, as fórmulas nomeadas normalmente também podem ajudar a agilizar. Em especial, se você tiver um script longo, a divisão dele em fórmulas nomeadas possibilita cálculos mais eficientes, pois o Power Fx pode agendar o trabalho e viabiliza a reutilização. Para obter mais informações, consulte Fórmulas de aplicativo.

Usar Concurrent

Use a função Concurrent para permitir que fórmulas sejam executadas simultaneamente. Escolha atentamente onde a simultaneidade é usada. Ela pode oferecer algumas acelerações modestas, mas, se você estiver executando itens que dependerem uns dos outros, isso poderá causar problemas de tempo e limitação.

Adiar atualizações significativas para uma etapa da interface do usuário sem bloqueio

Grandes atualizações feitas em uma fonte de dados podem demorar um pouco para serem concluídas. Porém, os usuários esperam que a interface do usuário devolva rapidamente o controle a eles. As tarefas podem ser sequenciais, quando a atualização deve terminar antes do usuário realizar outras ações ou assíncronas (a atualização pode terminar à parte das ações do usuário).

Um exemplo de tarefa síncrona demorada é a confirmação de um ingresso em um show. Para a maioria das tarefas síncronas demoradas como essa, é comum colocar uma barra de progresso. Na verdade, essa interface do usuário bloqueia o usuário, mas garante que a tarefa seja concluída antes que outros elementos da interface do usuário sejam atualizados. Essa abordagem pode não funcionar para o aplicativo. As empresas normalmente processam etapas sequenciais mais longas como uma etapa de negócios explícita. Você recebe aprovação para avançar à próxima etapa por meio de um sinal do processo empresarial. Um exemplo disso é uma aprovação. Uma aprovação pode vir rapidamente ou ser adiada. Na interface do usuário, você pode sinalizar que o processo foi concluído de diversas maneiras. Você pode habilitar um botão, mostrar uma mensagem, enviar email ou habilitar uma parte da interface do usuário, como um item de menu.

Um exemplo de uma tarefa assíncrona é a conclusão de um pedido. Um cliente atualiza uma cesta de pedidos, processa e faz a ordem. Porém, diversas atualizações devem acontecer para que o cliente receba uma data de envio confirmada. Neste exemplo, a data da remessa não é algo que você possa fornecer de imediato. Você pode adiar essa parte da atualização para um email que será enviado ao cliente depois.

Para tarefas síncronas, você normalmente usará o código no Power Apps para tarefas de bloqueio da interface do usuário. Por exemplo, o código vai aguardar até obter um valor de retorno e, em seguida, liberar a barra de progresso. O melhor é minimizar esse tipo de situação. Mas, para tarefas que usam uma etapa de negócios explícita ou tarefas assíncronas, é comum usar um serviço externo para concluir a tarefa, como uma ação do Dataverse, um procedimento armazenado ou um fluxo do Power Automate.

Colocar "ForAll" de maneira devida

Se você tiver uma expressão com ForAll e uma coleção parecida com esta:

ForAll(x, Collect(y, { … }))

Logo, inverta para

Collect(y, ForAll(x, { … }))

No primeiro padrão, qualquer regra dependente da coleção y é notificada sobre alterações e avaliada para cada iteração de x. No segundo padrão, essas regras só são avaliadas uma vez.

Levar em consideração evitar referências a Gallery.AllItems

Ao trabalhar com o Power Apps, é melhor evitar referenciar Gallery.AllItems, a menos que você precise de valores do usuário. Isso acontece porque, sempre que AllItems é lido, uma nova tabela de saída é gerada. Em vez disso, use Gallery.AllItemsCount, se você só quiser saber quantos itens estão carregados.

Usar Gallery.TemplateSize com cuidado

Para garantir que as galerias de altura flexível sejam renderizadas corretamente, é importante definir um tamanho padrão razoável. Inicialmente, tentamos renderizar o máximo de linhas possível com base nesse valor. Se você definir o tamanho padrão como 0, tentaremos renderizar tudo, exceto alguns casos extremos. Se você estiver usando uma fórmula, não se esqueça de definir um valor mínimo para quando a fórmula pode ser avaliada como 0. Por exemplo, você poderia usar Max (20, varFoo + rectBar.Height). Assim, se varFoo e rectBar.Height ainda não estiverem disponíveis, usaremos pelo menos um valor razoável de 20.

Há um atraso de um segundo até que as alterações sejam detectadas, o que permite concluir a digitação, em vez de detectar as alterações a cada digitação.