Szybkie obliczenia

Wyrażenia Power Fx są potężne i automatycznie wykonują wiele obliczeń w tle. Chociaż Power Fx automatyzuje wiele rzeczy za Ciebie, możliwe jest doprecyzowanie obliczeń tak szybko, jak to możliwe.

Pobieranie danych

Używanie opcji Jawny wybór kolumny

Funkcja jawnego wyboru kolumny (ECS) jest domyślnie włączona dla wszystkich nowych aplikacji. Jeśli nie jest ona włączona w Twojej aplikacji, należy ją włączyć. ECS automatycznie redukuje liczbę pobieranych kolumn do tych, które są używane w aplikacji. Jeśli funkcja ECS nie jest włączona, możesz pobierać więcej danych, niż potrzebujesz, co może mieć wpływ na wydajność. Czasami, gdy aplikacja pobiera dane z kolekcji, może zostać utracone pierwotne pochodzenie lub źródło kolumny. Nie wiemy, czy jest używany i upuszczamy go za pomocą ECS. Zwykle można zmusić ECS do pracy z brakującą kolumną, używając wyrażenia PowerFx ShowColumns po odwołaniu do kolekcji lub używając go w kontrolce.

Ostrożnie używaj obrazów w galeriach, tabelach i formularzach

Używanie miniaturowych wersji obrazów Dataverse w galerii i tabeli. Miniatury Dataverse mają rozmiar około 1 kilobajta i są przechowywane w tekście jako część rekordu, a także są przydatne i szybkie do wyświetlenia w kontrolkach pokazujących kolekcje. Wszystkie inne odniesienia do obrazów, w tym wszystkie obrazy SharePoint wymagają osobnego wywołania i nie powinny być umieszczane w galerii lub tabeli. Umieść obrazy wymagające osobnego wywołania w formularzach szczegółowych. Rozważ, aby domyślnie nie wyświetlać pełnego obrazu. Pełne szczegółowe obrazy mogą być przydatne i ważne dla użytkowników. Możesz jednak udostępnić te obrazy użytkownikom poprzez wyraźne działanie użytkownika, na przykład przycisk lub przejście do osobnej strony. SharePoint zawiera szereg obrazów o średniej wielkości, których można używać w formularzach krótszych niż pełny obraz. Dataverse ma tylko dwa rozmiary: Miniatura i Pełny.

Obliczenia

Dziel formuły za pomocą App.formula

Użycie App.formulas i nazwanych formuł może pomóc w zwiększeniu szybkości ładowania aplikacji i nawigacji po stronie, ponieważ na to pozwala Power Fx zdecydować, kiedy ocenić formułę. Oznacza to, że niekoniecznie musi to oceniać w OnStart. Ponadto nazwane formuły mogą również ogólnie pomóc w przyspieszeniu. W szczególności, jeśli masz długi skrypt, podzielenie go na nazwane formuły pozwala na bardziej wydajne obliczenia, jak Power Fx pozwala zaplanować pracę i umożliwia ponowne wykorzystanie. Aby uzyskać więcej informacji, zobacz ten Formuły aplikacji.

Używanie współbieżności

Użyj funkcji Współbieżność, umożliwiającej jednoczesne wykonywanie formuł. Ostrożnie wybierz, gdzie używana jest współbieżność. Może zapewnić niewielkie przyspieszenie, ale jeśli używasz elementów, które są od siebie zależne, może to powodować problemy z synchronizacją i ograniczaniem przepustowości.

Odłóż istotne aktualizacje na nieblokujący krok interfejsu użytkownika

Wykonanie dużych aktualizacji źródło danych może zająć trochę czasu. Jednak użytkownicy oczekują, że interfejs użytkownika szybko przywróci im kontrolę. Zadania mogą być sekwencyjne, gdy aktualizacja musi się zakończyć, zanim użytkownik będzie mógł wykonać kolejne działania, lub asynchroniczne (aktualizacja może zakończyć się niezależnie od działań użytkownika).

Przykładem czasochłonnego zadania synchronicznego jest potwierdzenie miejsca na koncercie. W przypadku większości czasochłonnych zadań synchronicznych, takich jak to, często umieszcza się pasek postępu. Ten interfejs użytkownika faktycznie blokuje użytkownika, ale zapewnia wykonanie zadania przed zaktualizowaniem innych elementów interfejsu użytkownika. To podejście może nie działać w przypadku Twojej aplikacji. Firmy zwykle traktują dłuższe kolejne kroki jako wyraźny krok biznesowy. Otrzymano zgodę na przejście do następnego kroku na podstawie sygnału procesu biznesowego. Przykładem jest zatwierdzenie. Zatwierdzenie może nastąpić szybko lub może zostać opóźnione. W interfejsie użytkownika możesz zasygnalizować zakończenie procesu na kilka sposobów. Możesz włączyć przycisk, wyświetlić wiadomość, wysłać e-mail lub włączyć część interfejsu użytkownika, taką jak element menu.

Przykładem zadania asynchronicznego jest realizacja zamówienia. Klient aktualizuje koszyk zamówień, przetwarza zamówienie, a następnie składa zamówienie. Zanim jednak klient otrzyma potwierdzoną datę wysyłki, musi nastąpić kilka aktualizacji. W tym przykładzie daty wysyłki nie można łatwo podać od razu. , możesz odłożyć tę część aktualizacji na wiadomość e-mail, która zostanie wysłana do klienta w późniejszym terminie.

W przypadku zadań synchronicznych często będziesz używać kodu w Power Apps do zadań blokowania interfejsu użytkownika. Na przykład kod czeka, aż otrzyma wartość zwracaną, a następnie zwalnia pasek postępu. Najlepiej jest minimalizować tego typu sytuacje. Jednak w przypadku zadań, które wykorzystują jawny krok biznesowy lub zadania asynchroniczne, do wykonania zadania często używa się usługi zewnętrznej, np. akcja Dataverse, procedura składowana lub przepływ Power Automate.

Umieść odpowiednio „ForAll”

Jeśli masz wyrażenie z ForAll i zbierasz, które wygląda tak:

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

Następnie odwróć to do

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

W pierwszym wzorcu każda reguła zależna od kolekcji y jest powiadamiana o zmianach i oceniana dla każdej iteracji x. W drugim wzorcu reguły te są oceniane tylko raz.

Rozważ unikanie odniesień do Gallery.AllItems

Podczas pracy z Power Apps, najlepiej unikać odwoływania się do Gallery.AllItems, chyba że potrzebujesz wartości użytkownika. Dzieje się tak, ponieważ przy każdym czytaniu AllItems generowana jest nowa tabela wyjściowa. Zamiast tego użyj Gallery.AllItemsCount, jeśli chcesz tylko wiedzieć, ile elementów zostało załadowanych.

Ostrożnie korzystaj z Gallery.TemplateSize

Aby mieć pewność, że galerie o zmiennej wysokości będą poprawnie renderowane, ważne jest ustawienie rozsądnego rozmiaru domyślnego. Początkowo staramy się wyrenderować jak najwięcej wierszy na podstawie tej wartości. Jeśli ustawisz domyślny rozmiar na 0, spróbujemy wyrenderować wszystko, z wyjątkiem kilku przypadków brzegowych. Jeśli używasz formuły, pamiętaj o ustawieniu minimalnej wartości, przy której formuła może wynosić 0. Na przykład możesz użyć Max (20, varFoo + rectBar.Height). W ten sposób, jeśli zmienne varFoo i rectBar.Height nie są jeszcze dostępne, użyjemy przynajmniej rozsądnej wartości 20.

Wykrycie zmian następuje z sekundowym opóźnieniem, co umożliwia dokończenie wpisywania zamiast wykrywania zmian przy każdym wpisaniu.