Partage via


Recommandations pour l’optimisation de la logique

S’applique à cette recommandation de liste de contrôle Efficacité des Performances Power Platform Well-Architected :

PE:06 Utilisez une logique performante et assurez-vous qu’elle décharge les responsabilités sur la plateforme. Utilisez la logique uniquement pour l’usage auquel elle est destinée 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 de ressources inutile, des goulots d’étranglement et des réponses lentes. Pour compenser ces inefficacités, vous devez ajouter des ressources pour accomplir les mêmes tâches.

Définitions

Terme Définition
Concurrence Quand plusieurs tâches ou processus sont exécutés en même temps, mais pas nécessairement 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. Elle 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 une complexité inutile. Une charge de travail doit utiliser les capacités inhérentes de la plateforme. Cette approche permet de s’assurer que la logique et l’infrastructure sont utilisées principalement pour leurs objectifs principaux et uniquement en cas de besoin.

Optimiser les performances de la logique

Pour optimiser les performances de la logique, modifiez le code afin de réduire l’utilisation des ressources, de minimiser le temps d’exécution et d’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 par la force brute. La force brute consiste à ajouter des ressources de calcul pour compenser les performances du code, par exemple ajouter de la capacité supplémentaire au lieu de résoudre le problème à la source. Vous devez résoudre les problèmes de performances grâce à l’optimisation. Lorsque vous optimisez les performances logiques, cela permet d’optimiser 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.

Instrumenter 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 d’accès 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 dès le début du cycle de vie du développement logiciel. Plus tôt vous détectez un problème de logique, moins il est coûteux 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, le Contrôleur de flux peut mettre en évidence la logique qui ne devrait pas être performante, comme une requête qui ne spécifie pas de critères de filtre. Cependant, gardez à l’esprit que ces tests sont toujours une simulation de production. La production fournit la compréhension la plus claire de l’optimisation logique.

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

Identifier les chemins réactifs

En instrumentant votre logique, vous pouvez mesurer la consommation de ressources pour différents chemins logiques. Ces mesures vous aident à identifier les chemins réactifs. Les chemins réactifs 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 réactifs du code, procédez comme suit :

  • 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 la plus grande partie du temps écoulé. Recherchez des modèles ou des sections de logique qui sont fréquemment exécutés ou qui prennent beaucoup de temps à se terminer.

  • Mesurer les performances : utilisez des outils de profilage ou des cadres de test des 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 sur l’utilisateur : évaluez l’importance des différents chemins logiques en fonction de leur pertinence pour les fonctionnalités de l’application ou les opérations métier 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. L’amélioration de la logique réduit les opérations inutiles. Cela permet une exécution plus rapide avec moins de consommation de ressources. Vous devez supprimer toutes les opérations inutiles dans le chemin logique qui pourraient affecter les performances. Donnez la priorité à l’optimisation des chemins chauds pour obtenir les meilleurs gains d’efficacité en matière de performances.

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

  • Supprimer les appels de fonction inutiles : examinez votre logique et identifiez toutes les fonctions qui ne sont pas essentielles pour la fonctionnalité souhaitée et qui pourraient avoir un impact négatif sur les performances. Par exemple, si un appel de fonction effectue une validation terminée plus tôt dans le code, vous pouvez supprimer l’appel de fonction de validation inutile.

  • Réduire 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 causer de problèmes de performances de production.

  • Optimiser les boucles et les conditions : analysez les boucles et les conditions dans votre logique et identifiez 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. Minimisez les appels de fonction dans les boucles et éliminez les calculs redondants. Envisagez de déplacer les calculs en dehors de la boucle.

  • Réduire le traitement de données inutile : examinez votre logique pour identifier les opérations de traitement de données inutiles, comme des calculs ou des transformations redondants. Éliminez ces opérations inutiles pour améliorer l’efficacité de votre logique. Par exemple, utilisez les colonnes calculées Dataverse, les champs cumulatifs ou les colonnes Power Fx au lieu de calculer la valeur dans le code et de la stocker avec une opération d’enregistrement.

  • 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 appropriée améliore les performances de l’application.

  • Réduire les demandes réseau: si votre logique implique d’effectuer des demandes réseau (par exemple, en utilisant une action de connecteur), réduisez le nombre de demandes et optimisez leur utilisation. Regroupez les demandes lorsque cela est possible et évitez les allers-retours inutiles pour améliorer les performances.

  • Réduire la taille de la structure de données : examinez les exigences 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 compressant efficacement les données.

  • Effectuer le travail de manière asynchrone : évaluez si le travail peut être effectué de manière asynchrone plutôt que de manière synchrone dans votre logique. Par exemple, au lieu d’effectuer l’opération en ligne, envisagez d’implémenter un flux Power Automate 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 les JavaScript peuvent affecter les performances.

  • Réduisez les contrôles. N’affichez que les champs dont vous avez besoin dans les formulaires : un trop grand nombre de champs peut 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.

Examinez les recommandations de performances spécifiques au produit Power Platform que vous utilisez. Évaluez votre logique par rapport à ces recommandations afin d’identifier les domaines à améliorer.

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

Utiliser la simultanéité et le parallélisme

L’utilisation de la simultanéité et du parallélisme implique l’exécution simultanée ou superposée de plusieurs tâches ou processus afin d’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 de calcul. Lorsque vous augmentez la concurrence ou le parallélisme, tenez compte de l’impact sur d’autres systèmes, car vous pourriez dépasser leurs limites. Par exemple, une boucle simultanée dans un flux Power Automate traitant chaque élément à la fois pourrait dépasser les limites de demande 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 qui sont exécutées en parallèle. Lorsque vous exécutez la 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 simultanéité est la capacité d’un système à exécuter plusieurs tâches ou processus. La simultanéité permet aux différentes parties d’une charge de travail de progresser indépendamment, 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 de la quantité d’exécutions simultanées des éléments de la charge de travail peut aider à gérer l’utilisation des ressources pendant le traitement. Par exemple, les boucles de flux Power Automate peuvent être configurées pour traiter plusieurs actions en parallèle à l’aide de la propriété Contrôle simultané.

    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 demandes simultanées.

  • Files d’attente : une file d’attente est une mémoire tampon de stockage située entre un composant de demande (producteur) et le composant de traitement (consommateur) de la charge de travail. Il peut y avoir plusieurs consommateurs pour une même file d’attente. Au fur et à 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 dispose de la capacité. Une file d’attente est souvent le meilleur moyen de transférer le travail à un service de traitement qui connaît des pics de demande. Pour plus d’informations, consultez 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 la tâche et continuer à traiter les demandes interactives des utilisateurs. Des exemples de tâches en arrière-plan incluent les tâches par lots, les tâches gourmandes en ressources processeur et les processus de longue durée, tels que les workflows. 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, consultez Recommandations pour le développement de 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é de l’application, tandis que les anti-modèles doivent être évités. Pour plus d’informations, consultez Vue d’ensemble de la création de Power Apps performantes. Utilisez Monitor dans Power Apps pour diagnostiquer et résoudre les problèmes de performances pendant le développement.

Mesurer l’engagement et les résultats : lors de la création d’agents, le suivi de l’engagement et des résultats des conversations est essentiel pour mesurer les indicateurs de performance de l’agent et découvrir les domaines à améliorer.

Optimisation de la logique du code : avec la fonctionnalité du vérificateur de solution, vous pouvez effectuer une vérification d’analyse statique enrichie sur vos solutions par rapport à un ensemble de règles de bonnes pratiques et identifier rapidement les schémas problématiques. Avec le Vérificateur de flux, vous pouvez obtenir des informations sur les zones de l’implémentation de votre flux qui présentent un risque pour les performances.

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

Optimiser les performances de Dataverse : Microsoft Dataverse offre 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. Voir Bonnes pratiques et conseils pour utiliser Microsoft Dataverse.

Liste de contrôle Efficacité des performances

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