Share via


Snelle berekeningen

Power Fx-expressies zijn krachtig en voeren automatisch veel achtergrondberekeningen voor u uit. Terwijl Power Fx veel dingen voor u automatiseert, is het mogelijk om uw berekeningen zo snel mogelijk te verfijnen.

Gegevens ophalen

Expliciete kolomselectie gebruiken

De functie Expliciete kolomselectie (ECS) is standaard ingeschakeld voor alle nieuwe apps. Als het niet is ingeschakeld voor uw app, moet u het zelf inschakelen. ECS reduceert automatisch het aantal opgehaalde kolommen tot alleen de kolommen die in de applicatie worden gebruikt. Als ECS niet is ingeschakeld, haalt u mogelijk meer gegevens op dan u nodig heeft, wat de prestaties kan beïnvloeden. Soms, wanneer een app gegevens via verzamelingen binnenhaalt, kan de oorspronkelijke herkomst of bron van een kolom verloren gaan. We weten niet of het wordt gebruikt en we verwijderen het met behulp van ECS. Normaal gesproken kunt u ECS dwingen te werken voor een ontbrekende kolom door de PowerFx-expressie ShowColumns te gebruiken na een verzamelreferentie of door deze in een besturingselement te gebruiken.

Zorgvuldig afbeeldingen op galerijen, tabellen en formulieren gebruiken

Gebruik Dataverse-miniatuurversies van afbeeldingen voor galerijen en tabellen. Dataverse-miniaturen zijn klein, ongeveer 1 kilobyte, en worden inline opgeslagen als onderdeel van de record. Bovendien zijn ze handig en snel voor weergave op besturingselementen die verzamelingen tonen. Alle andere afbeeldingsreferenties, inclusief alle SharePoint-afbeeldingen vereisen een aparte oproep en mogen niet op een galerij of tabel worden geplaatst. Plaats afbeeldingen waarvoor een aparte oproep nodig is op detailformulieren. Overweeg om nooit standaard een volledige afbeelding weer te geven. Volledig gedetailleerde afbeeldingen kunnen nuttig en belangrijk zijn voor gebruikers. U kunt deze afbeeldingen echter wel beschikbaar maken voor gebruikers via een expliciete gebruikersactie, bijvoorbeeld een knop of navigatie naar een aparte pagina. SharePoint heeft een reeks afbeeldingen van gemiddelde grootte die u kunt gebruiken op een formulier dat niet de volledige afbeelding bevat. Dataverse heeft slechts twee formaten: miniatuur en volledig.

Berekeningen

Formules opsplitsen met App.formula

Het gebruik van App.formulas en benoemde formules kan helpen bij het laden van apps en de paginanavigatie, omdat hierdoor Power Fx kan beslissen wanneer een formule moet worden geëvalueerd. Dat betekent dat het niet noodzakelijkerwijs in OnStart hoeft te worden geëvalueerd. Bovendien kunnen benoemde formules over het algemeen ook de snelheid helpen. Vooral als u een lang script hebt, kunt u door het opsplitsen in benoemde formules efficiëntere berekeningen maken, omdat Power Fx het werk kan plannen en hergebruik mogelijk maakt. Zie App.Formulas voor meer informatie.

Gebruik van Concurrent

Gebruik de functie Concurrent om ervoor te zorgen dat formules tegelijkertijd worden uitgevoerd. Kies zorgvuldig waar u Concurrent gebruikt. Het kan een bescheiden snelheidswinst opleveren, maar als u items gebruikt die van elkaar afhankelijk zijn, kan dit timings- en aanvraagbeperkingsproblemen veroorzaken.

Belangrijke updates uitstellen voor een niet-blokkerende UI-stap

Het kan enige tijd duren voordat grote updates voor een gegevensbron zijn voltooid. Maar gebruikers verwachten dat de gebruikersinterface hen snel de controle teruggeeft. Taken kunnen opeenvolgend zijn, waarbij de update moet worden voltooid voordat de gebruiker nog een actie kan ondernemen, of asynchroon (de update kan afzonderlijk van gebruikersacties worden voltooid).

Een voorbeeld van een tijdrovende synchrone taak is het bevestigen van een zitplaats bij een concert. Voor de meeste tijdrovende synchrone taken zoals deze is het gebruikelijk om een ​​voortgangsbalk op te zetten. Deze gebruikersinterface blokkeert feitelijk de gebruiker, maar zorgt ervoor dat de taak is voltooid voordat andere gebruikersinterface-elementen worden bijgewerkt. Deze aanpak werkt mogelijk niet voor uw toepassing. Bedrijven behandelen doorgaans langere opeenvolgende stappen als een expliciete bedrijfsstap af. Via een bedrijfsprocessignaal wordt u goedgekeurd om de volgende stap te zetten. Een voorbeeld is een goedkeuring. Een goedkeuring kan snel verschijnen of zijn uitgesteld. In de gebruikersinterface kunt u op verschillende manieren aangeven dat het proces is voltooid. U kunt een knop inschakelen, een bericht weergeven, een e-mail verzenden of een deel van de gebruikersinterface inschakelen, zoals een menuopdracht.

Een voorbeeld van een asynchrone taak is het afronden van een order. Een klant werkt een winkelmandje bij, verwerkt zijn bestelling en plaatst vervolgens de order. Maar er moeten verschillende updates plaatsvinden voordat de klant een bevestigde verzenddatum krijgt. In dit voorbeeld is de verzenddatum niet iets dat u meteen kunt opgeven. , u kunt dit deel van de update uitstellen naar een e-mail die later naar de klant wordt verzonden.

Voor synchrone taken gebruikt u vaak de code Power Apps voor UI-blokkeertaken. De code wacht bijvoorbeeld totdat deze een retourwaarde krijgt en laat vervolgens de voortgangsbalk los. Het is het beste om dit soort situaties tot een minimum te beperken. Maar voor taken die gebruik maken van een expliciete bedrijfsstap of asynchrone taken is het gebruikelijk om een ​​externe service te gebruiken om de taak te voltooien, zoals een Dataverse-actie, opgeslagen procedure of een Power Automate-stroom.

Plaats 'ForAll' op passende wijze

Als u over een expressie beschikt met 'ForAll' en 'collect' die er als volgt uitziet:

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

'Then', dit omkeren naar

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

In het eerste patroon wordt elke afhankelijke regel van verzameling y op de hoogte gesteld van wijzigingen en geëvalueerd voor elke iteratie van x. In het tweede patroon worden deze regels slechts één keer geëvalueerd.

Overweeg om verwijzingen naar Gallery.AllItems te vermijden

Wanneer u met Power Apps werkt, kunt u het beste niet verwijzen naar Gallery.AllItems, tenzij u gebruikerswaarden nodig heeft. Dit komt omdat elke keer dat AllItems wordt gelezen, er een nieuwe uitvoertabel wordt gegenereerd. Gebruik in plaats daarvan Gallery.AllItemsCount als u alleen wilt weten hoeveel items er zijn geladen.

Gebruik Gallery.TemplateSize zorgvuldig

Om ervoor te zorgen dat galerieën met flexibele hoogte correct worden weergegeven, is het belangrijk om een ​​redelijke standaardgrootte in te stellen. In eerste instantie proberen we zoveel mogelijk rijen weer te geven op basis van deze waarde. Als u de standaardgrootte instelt op 0, proberen we alles weer te geven, behalve enkele randgevallen. Als u een formule gebruikt, zorg er dan voor dat u een minimumwaarde instelt voor wanneer de formule mogelijk 0 oplevert. U kunt bijvoorbeeld Max (20, varFoo + rectbar.Height) gebruiken. Op deze manier gebruiken we, als varFoo en rectbar.Height nog niet beschikbaar zijn, in ieder geval een redelijke waarde van 20.

Er is een vertraging van één seconde voordat de wijzigingen worden gedetecteerd, waardoor u het typen kunt voltooien in plaats van dat u de wijzigingen bij elke keer typen moet detecteren.