Partager via


Calculs rapides

Les expressions Power Fx sont puissantes et effectuent automatiquement de nombreux calculs en arrière-plan pour vous. Alors que Power Fx automatise beaucoup de choses pour vous, il est possible d’affiner vos calculs pour qu’ils soient plus rapides.

Récupération des données

Utiliser la sélection de colonne explicite

La fonctionnalité de sélection explicite de colonne (ECS) est activée par défaut pour toutes les nouvelles applications. Si elle n’est pas activée pour votre application, vous devez l’activer. ECS réduit automatiquement le nombre de colonnes récupérées à celles utilisées dans l’application. Si ECS n’est pas activé, vous récupérez peut-être plus de données que nécessaire, ce qui peut affecter les performances. Parfois, lorsqu’une application extrait des données via des collections, la lignée ou la source d’origine d’une colonne peut être perdue. Nous ne savons pas s’il est utilisé et nous le supprimons en utilisant ECS. Vous pouvez généralement forcer ECS à fonctionner pour une colonne manquante en utilisant l’expression PowerFx Afficher les colonnes après une référence de collection ou en l’utilisant dans un contrôle.

Utilisez soigneusement les images dans les galeries, les tableaux et les formulaires

Utilisez les versions miniatures de Dataverse des images pour les galeries et les tables. Les miniatures de Dataverse sont petites, environ 1 kilo-octet et sont stockées en ligne dans le cadre de l’enregistrement, et sont utiles et rapides pour l’affichage sur les contrôles qui affichent des collections. Toutes les autres références d’images, y compris toutes les images SharePoint nécessitent un appel séparé et ne doivent pas être placées sur une galerie ou une table. Placez les images qui nécessitent un appel séparé sur les formulaires détaillés. Pensez à ne jamais afficher une image complète par défaut. Des images complètes et détaillées peuvent être utiles et importantes pour les utilisateurs. Cependant, vous pouvez mettre ces images à la disposition des utilisateurs via une action utilisateur explicite, par exemple un bouton ou une navigation vers une page distincte. SharePoint propose une gamme d’images de taille intermédiaire que vous pouvez utiliser sur un formulaire inférieur à l’image complète. Dataverse n’a que deux tailles : Miniature et Complet.

Calculs

Divisez les formules avec App.formula

L’utilisation d’App.formulas et de formules nommées peut accélérer le chargement des applications et la navigation dans les pages, car elles permettent à Power Fx de décider quand évaluer une formule. Cela signifie qu’il n’est pas nécessaire de l’évaluer nécessairement dans OnStart. De plus, les formules nommées peuvent généralement également contribuer à la vitesse. En particulier si vous avez un long script, le diviser en formules nommées permet des calculs plus efficaces car Power Fx peut planifier le travail et permet la réutilisation. Pour en savoir plus, consultez App.Formulas.

Utiliser Concurrent

Utilisez la fonction Concurrent pour permettre aux formules d’être exécutées en même temps. Choisissez soigneusement où le concurrent est utilisé. Il peut fournir quelques accélérations modestes, mais si vous exécutez des éléments qui dépendent les uns des autres, cela peut entraîner des problèmes de synchronisation et de limitation.

Différer les mises à jour importantes à une étape non bloquante de l’interface utilisateur

Les mises à jour importantes d’un source de données peuvent prendre un certain temps. Mais les utilisateurs s’attendent à ce que l’interface utilisateur leur rende rapidement le contrôle. Les tâches peuvent être soit séquentielles où la mise à jour doit se terminer avant que l’utilisateur puisse effectuer une autre action, soit asynchrones (la mise à jour peut se terminer indépendamment des actions de l’utilisateur.)

Un exemple de tâche synchrone chronophage consiste à confirmer une place à un concert. Pour la plupart des tâches synchrones qui prennent beaucoup de temps comme celle-ci, il est courant d’afficher une barre de progression. Cette interface utilisateur bloque en fait l’utilisateur mais garantit que la tâche est terminée avant que les autres éléments de l’interface utilisateur ne soient mis à jour. Cette approche peut ne pas fonctionner pour votre application. Les entreprises gèrent normalement des étapes séquentielles plus longues comme une étape commerciale explicite. Vous êtes autorisé à passer à l’étape suivante via un signal de processus métier. Par exemple, une approbation. Une approbation peut arriver rapidement ou être retardée. Dans l’interface utilisateur, vous pouvez signaler que le processus est terminé de plusieurs manières. Vous pouvez activer un bouton, afficher un message, envoyer un e-mail ou activer une partie de l’interface utilisateur telle qu’un élément de menu.

Un exemple de tâche asynchrone est l’exécution d’une commande. Un client met à jour un panier de commande, traite sa commande puis passe la commande. Mais plusieurs mises à jour doivent avoir lieu avant que le client reçoive une date d’expédition confirmée. Dans cet exemple, la date d’expédition n’est pas quelque chose que vous pouvez facilement fournir immédiatement. , vous pouvez reporter cette partie de la mise à jour vers un e-mail envoyé ultérieurement au client.

Pour les tâches synchrones, vous utiliserez souvent le code dans Power Apps pour les tâches de blocage de l’interface utilisateur. Par exemple, le code attend d’obtenir une valeur de retour, puis libère la barre de progression. Il est préférable de minimiser ce type de situations. Mais pour les tâches qui utilisent une étape métier explicite ou des tâches asynchrones, il est courant d’utiliser un service externe pour terminer la tâche, comme une action Dataverse, une procédure stockée ou un flux Power Automate.

Placer « ForAll » de manière appropriée

Si vous avez une expression avec ForAll et collect qui ressemble à ceci :

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

Ensuite, inversez ceci en

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

Dans le premier modèle, toute règle dépendante de la collection y est notifiée des modifications et évaluée pour chaque itération de x. Dans le deuxième modèle, ces règles ne sont évaluées qu’une seule fois.

Pensez à éviter les références à Gallery.AllItems

Lorsque vous travaillez avec Power Apps, il est préférable d’éviter de faire référence à Gallery.AllItems, sauf si vous avez besoin des valeurs utilisateur. En effet, chaque fois que AllItems est lu, une nouvelle table de sortie est générée. Utilisez plutôt Gallery.AllItemsCount si vous souhaitez simplement savoir combien d’éléments sont chargés.

Utilisez soigneusement Gallery.TemplateSize

Pour garantir que les galeries à hauteur flexible soient rendues correctement, il est important de définir une taille par défaut raisonnable. Initialement, nous essayons de restituer autant de lignes que possible en fonction de cette valeur. Si vous définissez la taille par défaut sur 0, nous essayons de tout restituer, à l’exception de quelques cas extrêmes. Si vous utilisez une formule, assurez-vous de définir une valeur minimale pour le moment où la formule peut être évaluée à 0. Par exemple, vous pouvez utiliser Max (20, varFoo + rectBar.Height). De cette façon, si varFoo et rectBar.Height ne sont pas encore disponibles, nous utilisons au moins une valeur raisonnable de 20.

Il y a un délai d’une seconde avant que les modifications soient détectées, ce qui vous permet de terminer la saisie au lieu de détecter les modifications pour chaque saisie.