Sdílet prostřednictvím


Rychlé výpočty

Výrazy Power Fx jsou výkonné a automaticky provádějí mnoho výpočtů na pozadí. Zatímco Power Fx automatizuje mnoho věcí za vás, vaše výpočty lze doladit, aby byly co nejrychlejší.

Načítání dat

Použití funkce Explicitní výběr sloupce

Funkce Explicitní výběr sloupce (ECS) je ve výchozím nastavení povolena pro všechny nové aplikace. Pokud není pro vaši aplikaci povolena, měli byste ji povolit. ECS automaticky snižuje počet načtených sloupců pouze na ty, které jsou používány v aplikaci. Pokud není funkce ECS povolena, možná načítáte více dat, než potřebujete, což může ovlivnit výkon. Občas, když aplikace stahuje data prostřednictvím kolekcí, může dojít ke ztrátě původního rodokmenu nebo zdroje sloupce. Nevíme, jestli se používají, a uvolňujeme je pomocí ECS. Obvykle můžete přinutit funkci ECS pracovat za chybějící sloupec pomocí výrazu PowerFx ShowColumns za odkazem na kolekci nebo jeho použitím v ovládacím prvku.

Opatrné použití obrázků v galeriích, tabulkách a formulářích

Pro galerie a tabulky používejte verze miniatur obrázků Dataverse. Miniatury Dataverse mají velikost asi 1 kilobajt a jsou uloženy jako součást záznamu, přičemž jsou užitečné a rychlé pro zobrazení v ovládacích prvcích, které zobrazují kolekce. Všechny ostatní odkazy na obrázky, včetně všech obrázků SharePoint, vyžadují samostatné volání a nesmí být umístěny v galerii nebo tabulce. Obrázky, které vyžadují samostatné volání, umístěte do podrobných formulářů. Zvažte, aby se ve výchozím nastavení nikdy nezobrazoval celý obrázek. Úplné podrobné obrázky mohou být pro uživatele užitečné a důležité. Tyto obrázky však můžete uživatelům zpřístupnit prostřednictvím explicitní uživatelské akce, například tlačítkem nebo přechodem na samostatnou stránku. SharePoint má řadu obrázků střední velikosti, které můžete použít pro formulář kratší než úplný obrázek. Dataverse má pouze dvě velikosti: miniaturu a úplný obrázek.

Výpočty

Rozdělení vzorců pomocí App.formula

Použití App.formulas a pojmenovaných vzorců může pomoci s rychlostí načítání aplikace a přecházení mezi stránkami, protože umožňuje Power Fx rozhodnout, kdy se má vzorec vyhodnotit. To znamená, že to nemusí nutně vyhodnocovat funkce OnStart. Kromě toho mohou s urychlením obecně pomoci také pojmenované vzorce. Zejména pokud máte dlouhý skript, jeho rozdělení do pojmenovaných vzorců umožňuje efektivnější výpočty, protože Power Fx může naplánovat práci a umožňuje opakované použití. Další informace viz Vzorce aplikace.

Použití funkce Concurrent

Funkce Concurrent umožňuje souběžné provádění vzorců. Pečlivě vybírejte, kde použít funkci Concurrent. Může poskytnout určité mírné zrychlení, ale pokud používáte položky, které na sobě závisí, může to způsobit problémy s načasováním a omezením.

Odložení významných aktualizací do nezpomalujícího kroku uživatelského rozhraní

Velké aktualizace zdrojů dat mohou chvíli trvat. Uživatelé však očekávají, že se uživatelské rozhraní rychle vrátí pod jejich kontrolu. Úlohy mohou být buď sekvenční, kdy aktualizace musí skončit, než uživatel může provést další akce, nebo asynchronní (aktualizace může být dokončena odděleně od uživatelských akcí.)

Příkladem časově náročné synchronní úlohy je potvrzení místa na koncertě. U většiny časově náročných synchronních úloh, jako je tato, je běžné poskytnout ukazatel průběhu. Toto uživatelské rozhraní prakticky blokuje uživatele, ale zajišťuje, že úloha bude dokončena před aktualizací ostatních prvků uživatelského rozhraní. Tento přístup nemusí pro vaši aplikaci fungovat. Podniky obvykle zpracovávají delší sekvenční kroky jako explicitní obchodní krok. K dalšímu kroku můžete přejít, až to schválí signál obchodního procesu. Může to být například schválení. Schválení může přijít rychle nebo může být zpožděno. V uživatelském rozhraní můžete signalizovat, že proces je dokončen, několika způsoby. Můžete povolit tlačítko, zobrazit zprávu, odeslat e-mail nebo povolit část uživatelského rozhraní, jako je položka nabídky.

Příkladem asynchronní úlohy je dokončení objednávky. Zákazník aktualizuje košík objednávky, zpracuje svou objednávku a poté ji vytvoří. Než však bude zákazníkovi potvrzeno datum expedice, musí proběhnout několik aktualizací. V tomto příkladu není datum expedice něco, co můžete ihned snadno poskytnout. Tuto část aktualizace můžete odložit na e-mail, který je zákazníkovi zaslán později.

U synchronních úloh často použijete kód v Power Apps pro úlohy blokování uživatelského rozhraní. Kód například čeká, dokud nezíská návratovou hodnotu, a poté uvolní ukazatel průběhu. Nejlepší je tyto typy situací minimalizovat. Ovšem v případě úloh, které používají explicitní obchodní krok nebo asynchronní úlohy, je běžné použít k dokončení úlohy externí službu, jako je akce Dataverse, uložená procedura nebo tok Power Automate.

Vhodné umístění funkce „ForAll“

Pokud máte výraz s ForAll a Collect, který vypadá takto:

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

Pak jej invertujte na

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

V prvním vzoru je každé závislé pravidlo na kolekci y upozorněno na změny a vyhodnoceno pro každou iteraci x. Ve druhém vzoru jsou tato pravidla vyhodnocena pouze jednou.

Zvážení nepoužít odkazy na Gallery.AllItems

Při práci s Power Apps je nejlepší neodkazovat na Gallery.AllItems, pokud nepotřebujete uživatelské hodnoty. Důvodem je, že při každém čtení AllItems se vygeneruje nová výstupní tabulka. Místo toho použijte Gallery.AllItemsCount, pokud chcete vědět, kolik položek je načteno.

Opatrné použití vlastnosti Gallery.TemplateSize

Chcete-li zajistit, aby se galerie s flexibilní výškou vykreslovaly správně, je důležité nastavit přiměřenou výchozí velikost. Zpočátku dojde k pokusu o vykreslení co nejvíce řádků na základě této hodnoty. Pokud nastavíte výchozí velikost na 0, dojde k pokusu o vykreslení všeho kromě několika okrajových případů. Pokud používáte vzorec, nezapomeňte nastavit minimální hodnotu pro případy, kdy může být vzorec vyhodnocen jako 0. Můžete například použít Max (20, varFoo + rectBar.Height). Tímto způsobem, pokud ještě nejsou k dispozici hodnoty varFoo a rectBar.Height, se použije alespoň přiměřená hodnota 20.

Rozpoznání změn trvá jednu sekundu, což vám umožňuje dokončit psaní namísto zjišťování změn pro každé psaní.