Hurtige beregninger

Power Fx udtryk er kraftfulde og udfører mange baggrundsberegninger for dig automatisk. Mens Power Fx automatiserer mange ting for dig, er det muligt at finjustere dine beregninger, så der er så hurtigt som muligt.

Datahentning

Brug eksplicit valg af kolonner

Funktionen Explicit Column Selection (ECS) er aktiveret som standard for alle nye apps. Hvis det ikke er aktiveret for din app, bør du aktivere det. ECS reducerer automatisk antallet af hentede kolonner til kun dem, der bruges i applikationen. Hvis ECS ikke er aktiveret, henter du muligvis flere data, end du har brug for, hvilket kan påvirke ydeevnen. Nogle gange, når en app trækker data ind gennem samlinger, kan den oprindelige afstamning eller kilde til en kolonne gå tabt. Vi ved ikke, om det bliver brugt, og vi dropper det ved hjælp af ECS. Du kan normalt tvinge ECS til at arbejde for en manglende kolonne ved at bruge PowerFx-udtrykket Vis kolonner efter en samlingsreference eller ved at bruge den i en kontrol.

Brug billeder på gallerier, tabeller og formularer omhyggeligt

Brug Dataverse-miniatureversioner af billeder til gallerier og tabeller. Dataverse-miniaturer er små omkring 1 kilobyte og gemmes inline som en del af posten og er nyttige og hurtige til visning på kontroller, der viser samlinger. Alle andre billedreferencer inklusive alle SharePoint-billeder kræver et separat opkald og bør ikke placeres på et galleri eller et bord. Placer billeder, der kræver et separat opkald på detailformularer. Overvej aldrig at vise et fuldt billede som standard. Fuldt detaljerede billeder kan være nyttige og vigtige for brugerne. Du kan dog gøre disse billeder tilgængelige for brugerne gennem en eksplicit brugerhandling, for eksempel en knap eller navigation til en separat side. SharePoint har en række billeder i mellemstørrelse, som du kan bruge til brug på en formular, der er mindre end det fulde billede. Dataverse har kun to størrelser: Thumbnail og Full.

Beregninger

Opdel formler med App.formula

Brugen af ​​App.formulas og navngivne formler kan hjælpe med hastigheden af ​​app-indlæsning og sidenavigation, fordi det tillader Power Fx at bestemme, hvornår en formel skal evalueres. Det betyder, at det ikke nødvendigvis behøver at evaluere det i OnStart. Derudover kan navngivne formler generelt også hjælpe med at fremskynde. Især hvis du har et langt script, giver opdeling af det i navngivne formler mulighed for mere effektive beregninger, da Power Fx kan planlægge arbejdet, og det muliggør genbrug. Du kan finde flere oplysninger under App-formler.

Brug Samtidig

Brug Samtidig-funktionen til at tillade, at formler udføres på samme tid. Vælg omhyggeligt, hvor samtidig bruges. Det kan give nogle beskedne hastigheder, men hvis du kører elementer, der er afhængige af hinanden, kan det forårsage problemer med timing og begrænsning.

Udskyd væsentlige opdateringer til et ikke-blokerende UI-trin

Store opdateringer til en datakilde kan tage et stykke tid at gennemføre. Men brugerne forventer, at brugergrænsefladen hurtigt giver dem kontrol tilbage. Opgaver kan enten være sekventielle, hvor opdateringen skal afsluttes, før brugeren kan foretage andre handlinger, eller asynkrone (opdateringen kan afsluttes adskilt fra brugerhandlinger).

Et eksempel på en tidskrævende synkron opgave er at bekræfte en plads ved en koncert. For de fleste tidskrævende synkrone opgaver som denne er det almindeligt at sætte en statuslinje op. Denne UI blokerer faktisk brugeren, men sikrer, at opgaven er fuldført, før andre UI-elementer opdateres. Denne tilgang virker muligvis ikke for din ansøgning. Virksomheder håndterer normalt længere sekventielle trin som et eksplicit forretningstrin. Du er godkendt til at gå det næste trin via et forretningsprocessignal. Et eksempel er en godkendelse. En godkendelse kan komme hurtigt eller kan blive forsinket. I brugergrænsefladen kan du signalere, at processen er gennemført på flere måder. Du kan aktivere en knap, vise en besked, sende e-mail eller aktivere en del af brugergrænsefladen, såsom et menupunkt.

Et eksempel på en asynkron opgave er færdiggørelsen af ​​en ordre. En kunde opdaterer en ordrekurv, gennemgår sin ordre og afgiver derefter ordren. Men der skal ske flere opdateringer, før kunden får en bekræftet afsendelsesdato. I dette eksempel er afsendelsesdatoen ikke noget, du nemt kan angive med det samme. , kan du udskyde denne del af opdateringen til en e-mail, der sendes til kunden senere.

Til synkrone opgaver vil du ofte bruge koden i Power Apps til UI-blokeringsopgaver. For eksempel venter koden, indtil den får en returværdi, og frigiver derefter statuslinjen. Det er bedst at minimere disse typer situationer. Men for opgaver, der bruger et eksplicit forretningstrin eller asynkrone opgaver, er det almindeligt at bruge en ekstern tjeneste til at fuldføre opgaven, såsom en Dataverse handling, lagret procedure eller et Power Automate flow.

Placer "ForAll" korrekt

Hvis du har et udtryk med ForAll og samler, der ser sådan ud:

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

Inverter derefter dette til

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

I det første mønster underrettes enhver afhængig regel om samling y om ændringer og evalueres for hver iteration af x. I det andet mønster evalueres disse regler kun én gang.

Overvej at undgå henvisninger til Gallery.AllItems

Når du arbejder med Power Apps, er det bedst at undgå at henvise til Gallery.AllItems, medmindre du har brug for brugerværdier. Dette skyldes, at hver gang AllItems læses, genereres en ny outputtabel. Brug i stedet Gallery.AllItemsCount, hvis du bare vil vide, hvor mange elementer der er indlæst.

Brug forsigtigt Gallery.TemplateSize

For at sikre, at gallerier med fleksibel højde gengives korrekt, er det vigtigt at indstille en rimelig standardstørrelse. I første omgang forsøger vi at gengive så mange rækker som muligt baseret på denne værdi. Hvis du indstiller standardstørrelsen til 0, forsøger vi at gengive alt, undtagen nogle få kanttilfælde. Hvis du bruger en formel, skal du sørge for at angive en minimumsværdi for, hvornår formlen kan evalueres til 0. For eksempel kan du bruge Max (20, varFoo + rectBar.Height). På denne måde, hvis varFoo og rectBar.Height endnu ikke er tilgængelige, bruger vi i det mindste en rimelig værdi på 20.

Der er et sekunds forsinkelse, før ændringerne registreres, hvilket giver dig mulighed for at fuldføre indtastningen i stedet for at registrere ændringerne for hver indtastning.