Empfehlungen zur Optimierung der Logik
Gilt für diese Power Platform Well-Architected Performance Efficiency-Checkliste-Empfehlung:
PE:06 | Verwenden Sie eine leistungsfähige Logik und stellen Sie sicher, dass Verantwortlichkeiten auf die Plattform verlagert werden. Verwenden Sie Logik nur für den vorgesehenen Zweck und nur, wenn es nötig ist. |
---|
Dieses Anleitung beschreibt die Empfehlungen zur Optimierung der Code- und Infrastrukturleistung. Um Ihren Code und Ihre Infrastruktur zu optimieren, sollten Sie Ihre Komponenten nur für ihren Kernzweck und nur bei Bedarf verwenden. Eine übermäßige Nutzung von Code und Infrastruktur führt zu unnötigem Ressourcenverbrauch, Engpässen und langsamen Reaktionen. Um diese Ineffizienzen auszugleichen, müssen Sie weitere Ressourcen hinzufügen, um die gleichen Aufgaben zu erledigen.
Definitionen
Begriff | Definition |
---|---|
Parallelität | Wenn mehrere Aufgaben oder Prozesse gleichzeitig, aber nicht unbedingt zur gleichen Zeit ausgeführt werden. |
Parallelität | Wenn mehrere Aufgaben oder Prozesse gleichzeitig ausgeführt werden. |
Wichtige Designstrategien
Die Optimierung von Logik und Infrastruktur erfordert eine Feinabstimmung der Logik und der unterstützenden Infrastruktur, um die Leistungseffizienz zu verbessern. Es erfordert eine leistungsfähige Logik, die Aufgaben schnell ausführt und keine Ressourcen verschwendet. Es erfordert eine gut konzipierte Infrastruktur, die so optimiert ist, dass unnötige Komplexität vermieden wird. Eine Arbeitslast sollte die inhärenten Funktionen der Plattform nutzen. Mit diesem Ansatz wird sichergestellt, dass sowohl Logik als auch Infrastruktur in erster Linie für ihre Kernzwecke und nur bei Bedarf verwendet werden.
Optimieren Sie die Logikleistung
Um die Logikleistung zu optimieren, ändern Sie den Code, um die Ressourcennutzung zu reduzieren, die Laufzeit zu minimieren und die Leistung zu verbessern. Sie können die Logik ändern, um die Effizienz und Geschwindigkeit einer App oder eines Flows zu verbessern. Verdecken Sie Leistungsprobleme nicht mit roher Gewalt. Brute Force bedeutet, Rechenressourcen hinzuzufügen, um die Codeleistung zu kompensieren, etwa durch das Hinzufügen zusätzlicher Kapazität, anstatt sich an die Quelle zu wenden. Sie müssen Leistungsprobleme durch Optimierung beheben. Wenn Sie die Logikleistung optimieren, trägt dies dazu bei, die Nutzung der Systemressourcen zu maximieren, die Antwort-Zeit zu verbessern, die Latenz zu verringern und das Benutzererlebnis zu verbessern.
Instrumentieren Sie Ihre Logik
Unter Instrumentierungslogik versteht man das Hinzufügen einer benutzerdefinierten Ereignisprotokollierung, um Daten zu sammeln und die Logikleistung während der Laufzeit zu überwachen. Mithilfe der Logikinstrumentierung können Entwickler Informationen zu wichtigen Kennzahlen wie der Ausführungszeit sammeln. Durch die Instrumentierung der Logik können Entwickler Einblicke in logische Hot Paths gewinnen, Leistungsengpässe identifizieren und die Logik für eine bessere Leistungseffizienz optimieren.
Idealerweise sollten Sie die Logikanalyse früh im Softwareentwicklungszyklus durchführen. Je früher Sie ein Logikproblem erkennen, desto günstiger ist die Behebung. Sie möchten diese Logikanalyse möglichst weitgehend automatisieren. Verwenden Sie dynamische und statische Codeanalysetools, um den manuellen Aufwand zu reduzieren. Beispielsweise kann der Flow Checker Logik hervorheben, bei der keine hohe Leistung erwartet wird, etwa eine Abfrage, die keine Filterkriterien angibt. Bedenken Sie jedoch, dass es sich bei diesem Test immer noch um eine Simulation der Produktion handelt. Die Produktion bietet das klarste Verständnis der Logikoptimierung.
Kompromiss: Logiküberwachungstools erhöhen wahrscheinlich die Kosten.
Identifizieren von Hot Paths
Durch die Instrumentierung Ihrer Logik können Sie den Ressourcenverbrauch für verschiedene Logikpfade messen. Diese Messungen helfen Ihnen, Hot Paths zu identifizieren. Hot Paths haben erhebliche Auswirkungen auf die Leistung und Ressourcennutzung. Dabei handelt es sich um kritische oder häufig ausgeführte Abschnitte eines Programms, die eine hohe Leistung und geringe Latenz erfordern.
Um Code-Hotpaths zu identifizieren, berücksichtigen Sie die folgenden Schritte:
Laufzeitdaten analysieren: Sammeln Sie Laufzeitdaten und analysieren Sie diese, um die Bereiche der Logik zu identifizieren, die am meisten Zeit in Anspruch nehmen. Suchen Sie nach Mustern oder Logikabschnitten, die häufig ausgeführt werden oder deren Ausführung lange dauert.
Leistung messen: Verwenden Sie Profiling-Tools oder Leistungstest-Frameworks, um die Ausführungszeit und den Ressourcenverbrauch verschiedener Logikpfade zu messen. Dieser Prozess hilft dabei, Engpässe und Verbesserungsbereiche zu identifizieren. Mithilfe von Monitor können Sie beispielsweise in Power Apps ein besseres Verständnis für die Funktionsweise der Ereignisse und Formeln Ihrer App gewinnen und so die Leistung verbessern.
Berücksichtigen Sie Geschäftslogik und Benutzereffekt: Bewerten Sie die Bedeutung verschiedener Logikpfade basierend auf ihrer Relevanz für die Funktionalität der Anwendung oder kritische Geschäftsvorgänge. Bestimmen Sie, welche Logikpfade entscheidend sind, um den Benutzern einen Mehrwert zu bieten oder Leistungsanforderungen zu erfüllen.
Optimieren Sie die Logik
Bei der Logikoptimierung geht es darum, die Struktur und das Design der Logik zu verfeinern, um Aufgaben mit weniger Ressourcen auszuführen. Eine verbesserte Logik reduziert unnötige Vorgänge. Es ermöglicht eine schnellere Ausführung bei geringerem Ressourcenverbrauch. Sie sollten alle unnötigen Vorgänge im Logikpfad entfernen, die die Leistung beeinträchtigen könnten. Priorisieren Sie die Optimierung von Hot Paths, um die größten Leistungssteigerungen zu erzielen.
Um die Logik zu optimieren, sollten Sie die folgenden Strategien in Betracht ziehen:
Entfernen Sie unnötige Funktionsaufrufe : Überprüfen Sie Ihre Logik und identifizieren Sie alle Funktionen, die für die gewünschte Funktionalität nicht unbedingt erforderlich sind und sich negativ auf die Leistung auswirken könnten. Wenn beispielsweise ein Funktionsaufruf eine zuvor im Code abgeschlossene Validierung durchführt, können Sie den unnötigen Validierungsfunktionsaufruf entfernen.
Minimieren Sie Protokollierungsvorgänge : Protokollierung kann beim Debuggen und Analysieren hilfreich sein, übermäßige Protokollierung kann jedoch die Leistung beeinträchtigen. Bewerten Sie die Notwendigkeit jedes Protokollierungsvorgangs und entfernen Sie alle unnötigen Protokollierungsaufrufe, die für die Leistungsanalyse nicht kritisch sind. Es empfiehlt sich, Ihrem System die Möglichkeit zu geben, die Protokollierung ein- und auszuschalten, um die Fehlerbehebung zu unterstützen, ohne Leistungsprobleme in der Produktion zu verursachen.
Optimieren Sie Schleifen und Bedingungen : Analysieren Sie Schleifen und Bedingungen in Ihrer Logik und identifizieren Sie alle unnötigen Iterationen oder Bedingungen, die eliminiert werden können. Durch die Vereinfachung und Optimierung dieser Strukturen können Sie die Leistung Ihres Codes verbessern. Minimieren Sie Funktionsaufrufe innerhalb von Schleifen und eliminieren Sie redundante Berechnungen. Erwägen Sie, Berechnungen außerhalb der Schleife zu verschieben.
Reduzieren Sie unnötige Datenverarbeitung : Überprüfen Sie Ihre Logik auf unnötige Datenverarbeitungsvorgänge, wie etwa redundante Berechnungen oder Transformationen. Eliminieren Sie diese unnötigen Vorgänge, um die Effizienz Ihrer Logik zu verbessern. Verwenden Sie beispielsweise Dataverse berechnete Spalten, Rollup-Felder oder Power Fx Spalten anstatt den Wert im Code zu berechnen und mit einem Speichervorgang zu speichern.
Datenstrukturen optimieren. Um Daten effizient zu speichern und abzurufen, verwendet Auswählen geeignete Datenstrukturen und nur die erforderlichen Datenspalten. Wählen Sie die beste Datenstruktur für ein bestimmtes Problem. Eine geeignete Datenstruktur verbessert die Anwendungsleistung.
Netzwerkanforderungen minimieren: Wenn Ihre Logik Netzwerkanforderungen beinhaltet (z. B. mithilfe einer Connector-Aktion), minimieren Sie die Anzahl der Anforderungen und optimieren Sie deren Nutzung. Führen Sie wenn möglich Batch-Anfragen durch und vermeiden Sie unnötige Roundtrips, um die Leistung zu verbessern.
Reduzieren Sie die Größe der Datenstruktur: Überprüfen Sie die Datenanforderungen und entfernen Sie alle unnötigen Felder oder Eigenschaften. Optimieren Sie die Speichernutzung, indem Sie geeignete Datentypen auswählen und Daten effizient packen.
Arbeiten Sie asynchron: Bewerten Sie, ob die Arbeit in Ihrer Logik asynchron statt synchron Fertig ausgeführt werden könnte. Anstatt den Vorgang beispielsweise inline auszuführen, könnten Sie einen Power Automate Flow implementieren, um die Arbeit asynchron zu verarbeiten.
Vor dem Anpassen konfigurieren Verwenden Sie nach Möglichkeit Standardanwendungskomponenten. Anpassungen wie Plug-Ins und JavaScript können die Leistung beeinträchtigen.
Bedienelemente minimieren. Zeigen Sie in den Formularen nur die Felder an, die Sie benötigen. Zu viele Felder können die Benutzeroberfläche überladen und die Leistung beeinträchtigen. Minimieren Sie die Anzahl der Steuerelemente in der Befehlsleiste, der Canvas-App oder der benutzerdefinierten Seite. Vermeiden Sie das Verschachteln von Galerien oder das Hinzufügen zu vieler Komponenten zu einer Galerie.
Optimieren Sie Datenabfragen. Laden Sie nur die Daten, die Sie in einer App oder einem Flow benötigen. Verwenden Sie serverseitige Ansichten, um Daten vorzufiltern und so die für Ihre Abfrage relevanten Daten einzugrenzen.
Überprüfen Sie die Leistungsempfehlungen speziell für das Power Platform Produkt, mit dem Sie arbeiten. Bewerten Sie Ihre Logik anhand dieser Empfehlungen, um Bereiche zu identifizieren, die verbessert werden können.
Kompromiss: Die Optimierung von Logik und Hot Paths erfordert Fachwissen. Das Erkennen logischer Ineffizienzen ist subjektiv und erfordert möglicherweise hochqualifizierte Mitarbeiter, die Sie möglicherweise von anderen Aufgaben abziehen müssen.
Nutzen Sie Gleichzeitigkeit und Parallelität
Bei der Verwendung von Gleichzeitigkeit und Parallelität werden mehrere Aufgaben oder Prozesse entweder gleichzeitig oder überlappend ausgeführt, um die Rechenressourcen effizient zu nutzen. Diese Techniken erhöhen den Gesamtdurchsatz und die Anzahl der Aufgaben, die eine Workload verarbeiten kann. Wenn Sie Aufgaben gleichzeitig oder parallel ausführen, kann dies die Laufzeit der Anwendung verkürzen und die Antwort-Zeiten verlängern.
Gleichzeitigkeit und Parallelität verteilen die Arbeitslast effektiv auf die Rechenressourcen. Wenn Sie die Gleichzeitigkeit oder Parallelität erhöhen, bedenken Sie die Auswirkungen auf andere Systeme, da Sie möglicherweise deren Grenzen überschreiten. Beispielsweise könnte eine parallele Schleife in einem Power Automate Flow, in der jeweils ein Element gleichzeitig verarbeitet wird, die Anforderungsgrenzen eines in der Logik der Schleife verwendeten Konnektors überschreiten.
Verwenden Sie Parallelität. Parallelität ist die Fähigkeit eines Systems, mehrere Aufgaben oder Prozesse gleichzeitig auf mehreren Computerressourcen auszuführen. Durch Parallelität wird eine Arbeitslast in Trigger-Aufgaben aufgeteilt, die parallel ausgeführt werden. Wenn Sie die Logik parallel ausführen, verbessert sich die Leistung, da die Arbeitslast auf mehrere Zweige verteilt wird.
Verwenden Sie Parallelität. Gleichzeitigkeit ist die Fähigkeit eines Systems, mehrere Aufgaben oder Prozesse auszuführen. Durch Parallelität können verschiedene Teile einer Arbeitslast unabhängig voneinander Fortschritte erzielen, was die Gesamtleistung verbessern kann.
Gleichzeitige Ausführung: Durch die gleichzeitige Ausführung kann die gleiche Logik gleichzeitig ausgeführt werden. Die Beschränkung der gleichzeitigen Ausführung auf eine kann zu einer Serialisierung der Logik führen, sodass immer nur ein Element gleichzeitig verarbeitet wird. Durch die Kontrolle der Menge gleichzeitig ausgeführter Workload-Elemente können Sie die Ressourcennutzung während der Verarbeitung besser verwalten. Beispielsweise können Power Automate Flussschleifen so konfiguriert werden, dass mithilfe der Eigenschaft „Parallele Steuerung“ mehrere Aktionen parallel verarbeitet werden.
Anmerkung
Bevor Sie die Parallelität aktivieren, bedenken Sie, dass dies bedeutet, dass mehrere Aktionen gleichzeitig ausgeführt werden. Wenn Sie Daten als Teil der Schleife schreiben, stellen Sie sicher, dass das Ziel der Daten gleichzeitige Anforderungen verarbeiten kann.
Warteschlangen: Eine Warteschlange ist ein Speicherpuffer, der sich zwischen einer anfordernden Komponente (Produzent) und der verarbeitenden Komponente (Verbraucher) der Arbeitslast befindet. Für eine einzelne Warteschlange kann es mehrere Verbraucher geben. Wenn die Aufgaben zunehmen, sollten Sie die Verbraucher skalieren, um die Nachfrage zu decken. Der Produzent stellt Aufgaben in eine Warteschlange. Die Warteschlange speichert die Aufgaben, bis ein Verbraucher Kapazität hat. Eine Warteschlange ist häufig die beste Möglichkeit, Arbeit an einen Verarbeitungsdienst zu übergeben, bei dem es zu Nachfragespitzen kommt. Weitere Informationen finden Sie unter Warteschlangenbasiertes Lastenausgleichsmuster und Speicherwarteschlangen und Service Bus-Warteschlangen.
Optimieren von Hintergrundjobs
Viele Anwendungen erfordern Hintergrundaufgaben, die unabhängig von der Benutzeroberfläche ausgeführt werden. Die Anwendung kann den Job starten und mit der Verarbeitung interaktiver Anfragen von Benutzern fortfahren. Beispiele für Hintergrundjobs sind Batchjobs, prozessorintensive Aufgaben und Prozesse mit langer Laufzeit, wie etwa Workflows. Hintergrundaufgaben sollten die Anwendung nicht blockieren oder durch verzögerte Vorgänge Inkonsistenzen verursachen, wenn das System ausgelastet ist. Weitere Informationen zur Optimierung von Hintergrundjobs finden Sie unter Empfehlungen für die Entwicklung von Hintergrundjobs.
Umsetzung in Power Platform
Instrumentierungscode : Beim Erstellen von Canvas-Apps sollten leistungsfähige Muster verwendet werden, um die App-Effizienz zu verbessern, während Anti-Muster vermieden werden sollten. Weitere Informationen finden Sie unter Übersicht über die Erstellung von leistungsfähigen Power Apps. Verwenden Monitor In Power Apps um Leistungsprobleme während der Entwicklung zu diagnostizieren und zu beheben.
Engagement und Ergebnisse messen : Beim Bau von Copiloten, Tracking Konversation Und Ergebnisse ist wichtig, um die Leistungskennzahlen des Copiloten zu messen und Bereiche zu erkennen, die verbessert werden können.
Optimieren der Codelogik: Mit der Funktion Lösungsprüfer können Sie Ihre Lösungen anhand einer Reihe von Best-Practice-Regeln einer umfassenden statischen Analyse unterziehen und problematische Muster schnell erkennen. Mit dem Flow Checker erhalten Sie Erkenntnisse darüber, welche Bereiche der Implementierung Ihres Flows ein Leistungsrisiko darstellen.
Verwenden von Gleichzeitigkeit und Parallelität: Power Automate Cloud Flows unterstützen Gleichzeitigkeit in Schleifen und Triggern. Beachten Sie, dass Grenzwerte für Parallelität, Schleifen und Debatching gelten und auf Ihrem Leistungsprofil basieren. Power Apps unterstützen Parallelität mit der Funktion Concurrent .
Optimieren der Dataverse Leistung: Microsoft Dataverse bietet ein erweiterbares Framework, mit dem Entwickler hochgradig angepasste und maßgeschneiderte Erlebnisse schaffen können. Beim Anpassen, Erweitern oder Integrieren mit Dataverse sollten Sie die etablierten Richtlinien und bewährten Verfahren kennen. Weitere Informationen finden Sie unter Bewährte Verfahren und Hilfen für die Verwendung von Microsoft Dataverse.
Verwandte Informationen
- Parallelitäts-, Schleifen- und Debatching-Grenzen in Power Automate
- Produktspezifische Anleitung zur Optimierung der Dynamics 365-Leistung
- Leistungsoptimierung und -anpassung für Apps zur Kundenbindung
- Übersicht über die Erstellung von leistungsfähigen Power Apps
- Monitorübersicht
- Verbessern Sie die Leistung, Stabilität und Zuverlässigkeit Ihrer Komponenten mit dem Lösungschecker
Leistungsfähigkeitscheckliste
Lesen Sie die vollständigen Empfehlungen.