Partager via


Recommandations pour optimiser la logique

S’applique à cette Power Platform recommandation de la liste de contrôle pour une efficacité des performances bien architecturée :

PE:06 Utilisez une logique performante et assurez-vous qu’elle décharge les responsabilités sur la plateforme. Utilisez la logique uniquement aux fins prévues et uniquement lorsque cela est nécessaire.

Ce guide décrit les recommandations pour optimiser les performances du code et de l’infrastructure. Pour optimiser votre code et votre infrastructure, vous devez utiliser vos composants uniquement pour leur objectif principal et uniquement lorsque cela est nécessaire. Lorsque vous abusez du code et de l’infrastructure, cela crée une consommation inutile de ressources, des goulots d’étranglement et des réponses lentes. Pour compenser ces inefficacités, vous devez ajouter davantage de ressources pour accomplir les mêmes tâches.

Définitions

Terme Définition
Concurrence Lorsque plusieurs tâches ou processus sont exécutés en même temps mais pas nécessairement exactement au même moment.
Parallélisme Lorsque plusieurs tâches ou processus sont exécutés en même temps.

Stratégies de conception clés

L’optimisation de la logique et de l’infrastructure implique d’affiner la logique et l’infrastructure de support pour améliorer l’efficacité des performances. Cela nécessite une logique performante qui exécute les tâches rapidement et ne gaspille pas de ressources. Cela nécessite une infrastructure bien conçue et rationalisée pour éviter toute complexité inutile. Une charge de travail doit utiliser les capacités inhérentes de la plateforme. Cette approche permet de garantir que la logique et l’infrastructure sont utilisées principalement pour leurs objectifs principaux et uniquement en cas de besoin.

Optimiser les performances logiques

Pour optimiser les performances logiques, modifiez le code pour réduire l’utilisation des ressources, minimiser le temps d’exécution et améliorer les performances. Vous pouvez modifier la logique pour améliorer l’efficacité et la vitesse d’une application ou d’un flux. Ne masquez pas les problèmes de performances avec la force brute. La force brute consiste à ajouter des ressources de calcul pour compenser les performances du code, comme ajouter une capacité supplémentaire au lieu de s’adresser à la source. Vous devez résoudre les problèmes de performances grâce à l’optimisation. Lorsque vous optimisez les performances logiques, cela permet de maximiser l’utilisation des ressources système, d’améliorer le temps de réponse, de réduire la latence et d’améliorer l’expérience utilisateur.

Instrumentez votre logique

La logique d’instrumentation fait référence à la pratique consistant à ajouter une journalisation d’événements personnalisée pour collecter des données et surveiller les performances de la logique pendant l’exécution. L’instrumentation logique permet aux développeurs de recueillir des informations sur des mesures clés telles que le temps d’exécution. En instrumentant la logique, les développeurs peuvent obtenir des informations sur les chemins chauds de la logique, identifier les goulots d’étranglement des performances et optimiser la logique pour une meilleure efficacité des performances.

Idéalement, vous devriez effectuer une analyse logique au début du cycle de vie du développement logiciel. Plus tôt vous détectez un problème de logique, moins il coûte cher de le résoudre. Vous souhaitez automatiser autant que possible cette analyse logique. Utilisez des outils d’analyse de code dynamiques et statiques pour réduire l’effort manuel. Par exemple, Flow Checker peut mettre en évidence une logique qui n’est pas censée être performante, comme une requête qui ne spécifie pas de critères de filtre. Gardez toutefois à l’esprit que ces tests restent une simulation de production. La production offre la compréhension la plus claire de l’optimisation logique.

Compromis : les outils de surveillance logique sont susceptibles d’augmenter les coûts.

Identifier les chemins chauds

En instrumentant votre logique, vous pouvez mesurer la consommation de ressources pour différents chemins logiques. Ces mesures vous aident à identifier les chemins chauds. Les hot paths ont un effet significatif sur les performances et l’utilisation des ressources. Il s’agit de sections critiques ou fréquemment exécutées d’un programme qui nécessitent des performances élevées et une faible latence.

Pour identifier les chemins chauds du code, considérez ces étapes :

  • Analyser les données d’exécution : collectez les données d’exécution et analysez-les pour identifier les zones de la logique qui consomment le plus de temps écoulé. Recherchez des modèles ou des sections de logique qui sont fréquemment exécutés ou qui prennent beaucoup de temps.

  • Mesurer les performances : utilisez des outils de profilage ou des cadres de tests de performances pour mesurer le temps d’exécution et la consommation de ressources de différents chemins logiques. Ce processus permet d’identifier les goulots d’étranglement et les domaines à améliorer. Par exemple, vous pouvez utiliser Monitor dans Power Apps pour mieux comprendre le fonctionnement des événements et des formules de votre application afin d’améliorer les performances. .

  • Tenir compte de la logique métier et de l’effet utilisateur : évaluez l’importance des différents chemins logiques en fonction de leur pertinence par rapport aux fonctionnalités de l’application ou aux opérations commerciales critiques. Déterminez quels chemins logiques sont cruciaux pour apporter de la valeur aux utilisateurs ou pour répondre aux exigences de performances.

Optimiser la logique

L’optimisation de la logique consiste à affiner la structure et la conception de la logique pour effectuer des tâches avec moins de ressources. Une logique améliorée réduit les opérations inutiles. Cela crée une exécution plus rapide avec moins de consommation de ressources. Vous devez supprimer toutes les opérations inutiles du chemin logique susceptibles d’affecter les performances. Donnez la priorité à l’optimisation des chemins chauds pour obtenir les plus grands gains d’efficacité en termes de performances.

Pour optimiser la logique, envisagez les stratégies suivantes :

  • Supprimer les appels de fonction inutiles : Passez en revue votre logique et identifiez toutes les fonctions qui ne sont pas essentielles à la fonctionnalité souhaitée et qui pourraient affecter négativement les performances. Par exemple, si un appel de fonction effectue une validation effectuée plus tôt dans le code, vous pouvez supprimer l’appel de fonction de validation inutile.

  • Minimiser les opérations de journalisation : La journalisation peut être utile pour le débogage et l’analyse, mais une journalisation excessive peut affecter les performances. Évaluez la nécessité de chaque opération de journalisation et supprimez tous les appels de journalisation inutiles qui ne sont pas critiques pour l’analyse des performances. Une bonne pratique consiste à autoriser votre système à activer et désactiver la journalisation, pour faciliter le débogage sans provoquer de problèmes de performances de production.

  • Optimiser les boucles et les conditions : Analysez les boucles et les conditions dans votre logique et identifiez toutes les itérations ou conditions inutiles qui peuvent être éliminées. La simplification et l’optimisation de ces structures peuvent améliorer les performances de votre code. Réduisez les appels de fonctions dans les boucles et éliminez les calculs redondants. Envisagez de déplacer les calculs en dehors de la boucle.

  • Réduisez le traitement inutile des données : Vérifiez votre logique pour détecter toute opération de traitement de données inutile, telle que des calculs ou des transformations redondants. Éliminez ces opérations inutiles pour améliorer l’efficacité de votre logique. Par exemple, utilisez des Dataverse colonnes calculées, des champs de cumul ou Power Fx colonnes au lieu de calculer la valeur dans le code et de la stocker avec une opération de sauvegarde.

  • Optimisez les structures de données. Pour stocker et récupérer efficacement les données, sélectionnez les structures de données appropriées et uniquement les colonnes de données requises. Choisissez la meilleure structure de données pour un problème spécifique. Une structure de données adaptée améliore les performances des applications.

  • Minimiser les requêtes réseau : si votre logique implique d’effectuer des requêtes réseau (par exemple, à l’aide d’une action de connecteur), minimisez le nombre de requêtes et optimisez leur utilisation. Regroupez les demandes lorsque cela est possible et évitez les allers-retours inutiles pour améliorer les performances.

  • Réduisez la taille de la structure des données : examinez les exigences en matière de données et éliminez tous les champs ou propriétés inutiles. Optimisez l’utilisation de la mémoire en sélectionnant les types de données appropriés et en regroupant efficacement les données.

  • Travaillez de manière asynchrone : évaluez si le travail peut être effectué de manière asynchrone plutôt que synchrone dans votre logique. Par exemple, au lieu d’effectuer l’opération en ligne, envisagez d’implémenter un Power Automate flux pour traiter le travail de manière asynchrone.

  • Configurez avant de personnaliser. Utilisez des composants d’application standard si vous le pouvez. Les personnalisations telles que les plug-ins et JavaScript peuvent affecter les performances.

  • Réduire les contrôles. Affichez uniquement les champs dont vous avez besoin dans les formulaires : trop de champs peuvent encombrer l’interface utilisateur et affecter les performances. Réduisez le nombre de contrôles dans la barre de commandes, l’application canevas ou la page personnalisée. Évitez d’imbriquer des galeries ou d’ajouter trop de composants à une galerie.

  • Optimisez les requêtes de données. Chargez uniquement les données dont vous avez besoin dans une application ou un flux. Utilisez les vues côté serveur pour préfiltrer les données afin d’affiner les données pertinentes pour votre requête.

Consultez les recommandations de performances spécifiques au Power Platform produit avec lequel vous travaillez. Évaluez votre logique par rapport à ces recommandations pour identifier les domaines à améliorer.

Compromis : l’optimisation de la logique et des hot paths nécessite une expertise. L’identification des inefficacités logiques est subjective et peut nécessiter des personnes hautement qualifiées, que vous devrez peut-être retirer d’autres tâches.

Utiliser la concurrence et le parallélisme

L’utilisation de la concurrence et du parallélisme implique l’exécution de plusieurs tâches ou processus simultanément ou de manière superposée pour utiliser efficacement les ressources informatiques. Ces techniques augmentent le débit global et le nombre de tâches qu’une charge de travail peut traiter. Lorsque vous exécutez des tâches simultanément ou en parallèle, cela peut réduire le temps d’exécution de l’application et augmenter les temps de réponse.

La concurrence et le parallélisme répartissent efficacement la charge de travail entre les ressources informatiques. Lorsque vous augmentez la concurrence ou le parallélisme, tenez compte de l’impact sur les autres systèmes, car vous pourriez dépasser leurs limites. Par exemple, une boucle concurrente dans un Power Automate flux traitant chaque élément à la fois pourrait dépasser les limites de requêtes d’un connecteur utilisé dans la logique de la boucle.

Utilisez le parallélisme. Le parallélisme est la capacité d’un système à déclencher simultanément plusieurs tâches ou processus sur plusieurs ressources informatiques. Le parallélisme divise une charge de travail en tâches plus petites exécutées en parallèle. Lorsque vous exécutez une logique en parallèle, les performances s’améliorent car la charge de travail est répartie sur plusieurs branches.

Utilisez la simultanéité. La concurrence est la capacité d’un système à exécuter plusieurs tâches ou processus. La simultanéité permet à différentes parties d’une charge de travail de progresser de manière indépendante, ce qui peut améliorer les performances globales.

  • Exécution simultanée : l’exécution simultanée permet à la même logique de s’exécuter simultanément. Limiter l’exécution simultanée à une seule peut avoir pour effet de sérialiser la logique, ce qui entraîne le traitement d’un élément à la fois. Le contrôle du nombre d’exécutions simultanées des éléments de charge de travail peut aider à gérer l’utilisation des ressources pendant le traitement. Par exemple, Power Automate des boucles de flux peuvent être configurées pour traiter plusieurs actions en parallèle à l’aide de la propriété Concurrent Control.

    Note

    Avant d’activer la simultanéité, gardez à l’esprit que cela signifie que plusieurs actions seront effectuées en même temps. Si vous écrivez des données dans le cadre de la boucle, assurez-vous que la destination des données peut gérer des requêtes simultanées.

  • Files d’attente : une file d’attente est un tampon de stockage situé entre un composant demandeur (producteur) et le composant de traitement (consommateur) de la charge de travail. Il peut y avoir plusieurs consommateurs pour une seule file d’attente. À mesure que les tâches augmentent, vous devez faire évoluer les consommateurs pour répondre à la demande. Le producteur place les tâches dans une file d’attente. La file d’attente stocke les tâches jusqu’à ce qu’un consommateur ait de la capacité. Une file d’attente est souvent le meilleur moyen de confier le travail à un service de traitement qui connaît des pics de demande. Pour plus d’informations, consultez les sections Modèle de nivellement de charge basé sur la file d’attente et Files d’attente de stockage et files d’attente Service Bus.

Optimiser les tâches en arrière-plan

De nombreuses applications nécessitent des tâches en arrière-plan qui s’exécutent indépendamment de l’interface utilisateur. L’application peut démarrer le travail et continuer à traiter les demandes interactives des utilisateurs. Les exemples de tâches en arrière-plan incluent les tâches par lots, les tâches gourmandes en processeur et les processus de longue durée, tels que les flux de travail. Les tâches en arrière-plan ne doivent pas bloquer l’application ni provoquer d’incohérences dues à un fonctionnement retardé lorsque le système est sous charge. Pour plus d’informations sur l’optimisation des tâches en arrière-plan, voir Recommandations pour développer des tâches en arrière-plan.

Facilitation de Power Platform

Code d’instrumentation : lors de la création d’applications canevas, des modèles performants doivent être utilisés pour améliorer l’efficacité des applications, tandis que les anti-modèles doivent être évités. Pour plus d’informations, voir Présentation de la création performante Power Apps. Utiliser Moniteur dans Power Apps pour diagnostiquer et résoudre les problèmes de performances pendant le développement.

Optimisation de la logique du code : avec la fonctionnalité de vérification de solutions , vous pouvez effectuer une analyse statique approfondie de vos solutions par rapport à un ensemble de règles de bonnes pratiques. et identifier rapidement les modèles problématiques. Avec Flow Checker, vous pouvez obtenir des informations sur les domaines de la mise en œuvre de votre flux qui présentent un risque en termes de performances ?

Utilisation de la concurrence et du parallélisme : Power Automate les flux cloud prennent en charge la concurrence dans les boucles et les déclencheurs. Notez que les limites de concurrence, de bouclage et de débattage s’appliquent et sont basées sur votre profil de performances. Power Apps prendre en charge la simultanéité à l’aide de la fonction Concurrent .

Optimisation des Dataverse performances : Microsoft Dataverse fournit un cadre extensible qui permet aux développeurs de créer des expériences hautement personnalisées et adaptées. Lorsque vous personnalisez, étendez ou intégrez Dataverse, vous devez connaître les bonnes pratiques et les conseils établis. Consultez les Bonnes pratiques et conseils d’utilisation Microsoft Dataverse.

Voir aussi

Liste de contrôle pour l’efficacité des performances

Référez-vous à l’ensemble complet des recommandations.