Schnelle Berechnungen
Power Fx-Ausdrücke sind leistungsstark und führen viele Hintergrundberechnungen automatisch für Sie durch. Während Power Fx viele Dinge für Sie automatisiert, ist es möglich, Ihre Berechnungen zu verfeinern, sodass sie so schnell wie möglich ausgeführt werden.
Datenabruf
Explizite Spaltenauswahl verwenden
Das Feature „Explizite Spaltenauswahl“ (ECS) ist standardmäßig für alle neuen Apps aktiviert. Wenn es für Ihre App nicht aktiviert ist, sollten Sie es aktivieren. ECS reduziert automatisch die Anzahl der abgerufenen Spalten auf diejenigen, die in der Anwendung verwendet werden. Wenn ECS nicht aktiviert ist, rufen Sie möglicherweise mehr Daten ab, als Sie benötigen, was die Leistung beeinträchtigen kann. Wenn eine App Daten über Sammlungen abruft, kann es gelegentlich vorkommen, dass die ursprüngliche Herkunft oder Quelle einer Spalte verloren geht. Wir wissen nicht, ob sie verwendet wird, und trennen sie mithilfe von ECS. Sie können ECS normalerweise dazu zwingen, mit einer fehlenden Spalte zu arbeiten, indem Sie den PowerFx-Ausdruck ShowColumns nach einem Sammlungsverweis oder ein Steuerelement verwenden.
Bilder in Galerien, Tabellen und Formularen mit Bedacht verwenden
Verwenden Sie Dataverse-Miniaturansichten von Bildern für Galerien und Tabellen. Dataverse-Miniaturansichten sind etwa ein Kilobyte klein und werden inline als Teil des Datensatzes gespeichert. Sie sind nützlich und lassen sich schnell auf Steuerelementen darstellen, die Sammlungen anzeigen. Alle anderen Bildverweise, einschließlich aller SharePoint-Bilder, erfordern einen separaten Aufruf und sollten nicht auf einem Katalog oder einer Tabelle platziert werden. Platzieren Sie Bilder, die einen separaten Aufruf erfordern, in Detailformularen. Erwägen Sie, standardmäßig niemals ein vollständiges Bild anzuzeigen. Vollständige detaillierte Bilder sind für Benutzende vielleicht nützlich und wichtig. Sie können diese Bilder den Benutzenden jedoch durch eine explizite Benutzeraktion, beispielsweise eine Schaltfläche oder die Navigation zu einer separaten Seite, zur Verfügung stellen. SharePoint verfügt über eine Reihe von Bildern mittlerer Größe, die Sie für den Einsatz auf einem Formular verwenden können, ohne das vollständige Bild nehmen zu müssen. Dataverse hat nur zwei Größen: Miniaturansicht und Vollbild.
Kalkulationen
Formeln mit App.formula aufteilen
Die Verwendung von App.formulas und benannten Formeln kann das Laden der App und die Seitennavigation beschleunigen, da Power Fx so entscheiden kann, wann eine Formel ausgewertet werden soll. Das heißt, sie muss nicht unbedingt in OnStart ausgewertet werden. Darüber hinaus können benannte Formeln im Allgemeinen auch zur Beschleunigung beitragen. Insbesondere wenn Sie ein langes Skript haben, ermöglicht die Aufteilung in benannte Formeln effizientere Berechnungen, da Power Fx die Arbeit planen kann und eine Wiederverwendung möglich ist. Weitere Informationen finden Sie unter App-Formeln.
Concurrent verwenden
Verwenden Sie die Concurrent-Funktion, um das gleichzeitige Ausführen von Formeln zu ermöglichen. Wählen Sie sorgfältig aus, wo die Parallelität verwendet wird. Sie kann zu geringfügigen Geschwindigkeitssteigerungen führen. Aber wenn Sie Elemente ausführen, die voneinander abhängig sind, kann es zu Zeit- und Drosselungsproblemen kommen.
Wichtige Aktualisierungen eines nicht blockierenden UI-Schritts verschieben
Große Aktualisierungen einer Datenquelle können eine Weile dauern. Benutzende erwarten jedoch, dass sie schnell wieder die Kontrolle über die Benutzeroberfläche bekommen. Aufgaben können entweder sequenziell geschehen, wobei die Aktualisierung abgeschlossen sein muss, bevor Benutzende weitere Aktionen ausführen können, oder asynchron (die Aktualisierung kann getrennt von Benutzeraktionen abgeschlossen werden).
Ein Beispiel für eine zeitaufwändige synchrone Aufgabe ist die Bestätigung eines Sitzplatzes für ein Konzert. Für zeitaufwändige synchrone Aufgaben wird üblicherweise eine Fortschrittsanzeige eingerichtet. Diese Benutzeroberfläche blockiert die Benutzenden tatsächlich, stellt jedoch sicher, dass die Aufgabe abgeschlossen ist, bevor andere Benutzeroberflächenelemente aktualisiert werden. Dieser Ansatz funktioniert für Ihre Anwendung möglicherweise nicht. Unternehmen behandeln längere aufeinanderfolgende Schritte normalerweise als expliziten Geschäftsschritt. Ihnen wird durch ein Geschäftsprozesssignal erlaubt, zum nächsten Schritt weiterzugehen. Ein Beispiel ist eine Genehmigung. Eine Genehmigung kann schnell erfolgen oder sich verzögern. Sie können auf der Benutzeroberfläche auf verschiedene Arten signalisieren, dass der Vorgang abgeschlossen ist. Sie können eine Schaltfläche aktivieren, eine Nachricht anzeigen, eine E-Mail senden oder einen Teil der Benutzeroberfläche, beispielsweise einen Menüpunkt, aktivieren.
Ein Beispiel für eine asynchrone Aufgabe ist die Erledigung eines Auftrags. Ein Kunde aktualisiert einen Warenkorb, fährt mit seiner Bestellung fort und gibt sie dann auf. Es müssen jedoch mehrere Aktualisierungen durchgeführt werden, bevor dem Kunden ein bestätigtes Versanddatum mitgeteilt wird. In diesem Beispiel können Sie das Versanddatum nicht so einfach sofort bereitstellen. Sie können diesen Teil der Aktualisierung auf eine E-Mail verschieben, die später an den Kunden gesendet wird.
Für synchrone Aufgaben verwenden Sie häufig den Code in Power Apps für Benutzeroberflächen-Blockierungsaufgaben. Der Code wartet zum Beispiel, bis er einen Rückgabewert erhält, und gibt dann die Fortschrittsanzeige frei. Solche Situationen sollten am besten minimiert werden. Für Aufgaben, die einen expliziten Geschäftsschritt verwenden, oder für asynchrone Aufgaben wird jedoch üblicherweise ein externer Dienst verwendet, um die Aufgabe abzuschließen, z. B. eine Dataverse-Aktion, eine gespeicherte Prozedur oder ein Power Automate-Flow.
„ForAll“ angemessen platzieren
Wenn Sie einen Ausdruck mit ForAll und Collect haben, sieht dieser so aus:
ForAll(x, Collect(y, { … }))
Kehren Sie dies dann um zu
Collect(y, ForAll(x, { … }))
Beim ersten Muster wird jede abhängige Regel der Sammlung y über Änderungen benachrichtigt und für jede Iteration von x ausgewertet. Beim zweiten Muster werden diese Regeln nur einmal ausgewertet.
Verweise auf Gallery.AllItems unter Umständen vermeiden
Wenn Sie mit Power Apps arbeiten, vermeiden Sie am besten den Verweis auf Gallery.AllItems, es sei denn, Sie benötigen unsere Benutzerwerte. Dies liegt daran, dass jedes Mal, wenn AllItems gelesen wird, eine neue Ausgabetabelle generiert wird. Verwenden Sie stattdessen Gallery.AllItemsCount, wenn Sie nur wissen möchten, wie viele Elemente geladen sind.
Gallery.TemplateSize mit Bedacht verwenden
Damit Kataloge mit flexibler Höhe korrekt gerendert werden, muss eine angemessene Standardgröße festgelegt werden. Zunächst versuchen wir, basierend auf diesem Wert so viele Zeilen wie möglich zu rendern. Wenn Sie die Standardgröße auf 0 setzen, versuchen wir, bis auf einige Edge-Fälle alles zu rendern. Wenn Sie eine Formel verwenden, stellen Sie sicher, dass Sie einen Mindestwert festlegen, ab dem die Formel möglicherweise 0 ergibt. Sie könnten beispielsweise Max (20, varFoo + rectBar.Height) verwenden. Auf diese Weise verwenden wir, wenn varFoo und rectBar.Height noch nicht verfügbar sind, mindestens einen sinnvollen Wert von 20.
DelayOutput speziell für die Suche beachten
Es gibt eine Verzögerung von einer Sekunde, bevor die Änderungen erkannt werden, sodass Sie die Eingabe fertigstellen können und die Änderungen nicht bei jeder Eingabe erkennen müssen.