共用方式為


快速計算

Power Fx 運算式的功能強大,可以自動為您執行許多後台計算。 因為 Power Fx 可以為您自動化許多作業,能夠盡可能快速地微調您的計算。

資料檢索

使用明確資料行選項

根據預設,所有新應用程式都會啟用明確資料行選擇 (ECS) 功能。 如果您的應用程式未啟用該功能,則您應啟用它。 ECS 會自動將檢索的資料行數減少為僅在應用程式中使用的行數。 如果未啟用 ECS,您可能會檢索到超過所需的資料,這可能會影響效能。 有時,當應用程式透過集合提取資料時,資料行的原始譜系或來源可能會遺失。 我們不知道是否有人正在使用它,因此我們使用 ECS 卸除它。 您通常可以使用 PowerFx 運算式 ShowColumns,在集合引用之後或在控制項中使用它,強制 ECS 處理缺少的行。

小心地在圖庫、表格和表單上使用圖像

使用 Dataverse 圖庫和表格的圖像縮圖版本。 Dataverse 縮圖很小,大約 1 KB,內嵌儲存為記錄的一部分,且在顯示集合的控制項上顯示時有用又快速。 所有其他圖像引用,包括所有 SharePoint 圖像需要單獨調用,且不應放置在圖庫或表格上。 將需要單獨調用的圖像放置在詳細表單上。 考慮將永遠不要顯示完整圖像設為預設。 完整詳細的圖像對使用者來說非常有用且重要。 但是,您可以透過明確使用者動作 (例如按鈕或瀏覽到單獨頁面) 向使用者提供這些圖像。 SharePoint 具有一系列中等尺寸的圖像,您可以在缺少完整圖像的表單上使用。 Dataverse 只有兩種尺寸:縮圖和完整尺寸。

計算

使用 App.formula 拆分公式

使用 App.formulas 和命名公式有助於加速應用程式載入和頁面瀏覽,因為它允許 Power Fx 決定何時估算公式。 這代表它不必在 OnStart 中對其進行評估。 此外,命名公式通常也有助於加快速度。 特別是如果您有一個很長的指令碼,將其分為命名公式可以實現更有效率的計算,因為 Power Fx 可以安排工作時間並允許重複使用。 如需詳細資訊,請參閱應用程式公式

使用並行

使用並行函數以允許同時執行公式。 仔細選擇並行使用的位置。 它可以提供一些適度的加速,但如果您正在執行相互依賴的項目,則可能會導致計時和節流問題。

延遲對非阻塞 UI 步驟的重大更新

對資料來源的大型更新可能需要一段時間才能完成。 但使用者希望 UI 能夠快速將控制權歸還給他們。 工作可以是有順序的 (更新必須在使用者可以執行其他動作之前完成),也可以是非同步的 (更新可以獨立於使用者動作單獨完成。)

確認音樂會的座位是一個耗時同步工作的例子。 對於大多數像這樣耗時的同步工作,通常會設定進度條。 該 UI 實際上會阻止使用者,但會確保工作在其他 UI 元素更新之前完成。 此方法可能不適用於您的應用程式。 企業通常會將較長的連續步驟作為顯式業務步驟來處理。 您已獲准透過商務程序訊號執行下一步。 核准是一個例子。 批准可能會很快,也可能會延遲。 在 UI 中,您可以透過多種方式表示程序已完成。 您可以啟用按鈕、顯示訊息、傳送電子郵件或啟用 UI 的一部分 (例如選單項目)。

非同步工作的一個範例是完成訂單。 顧客更新購物籃、處理訂單,然後下訂。 但在向客戶提出確認的出貨日期之前,必須先進行多次更新。 在此範例中,您無法立即輕鬆提供出貨日期。 ,您可以將這部分更新延遲到稍後發送給客戶的電子郵件。

對於同步工作,您通常會使用 Power Apps 中的程式碼來執行 UI 阻塞工作。 例如,程式碼會等到取得傳回值後,才發佈進度條。 最好盡量減少此類情況的發生。 但對於使用明確商務步驟或非同步工作的工作,通常使用外部服務來完成工作,例如 Dataverse 動作、預存程序或 Power Automate 流程。

適當地放置「ForAll」

如果您有一個包含 ForAll 和集合的運算式,如下所示:

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

然後,將其反轉為

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

在第一個模式中,集合 y 上的任何依賴規則都會收到變更通知,並針對 x 的每次反覆運算進行評估。 在第二種模式中,這些規則僅評估一次。

考慮避免引用 Gallery.AllItems

使用 Power Apps 時,最好避免引用 Gallery.AllItems,除非您需要使用者值。 這是因為每次讀取 AllItems 時,都會產生一個新的輸出表。 相反地,如果您只想知道載入了多少個項目,請使用 Gallery.AllItemsCount。

小心使用 Gallery.TemplateSize

為了確保正確呈現具有高度靈活性的圖庫,設定合理的預設大小非常重要。 一開始,我們會根據該值試著盡可能呈現越多的行。 如果您將預設大小設為 0,我們會嘗試呈現所有內容,除了一些邊緣情況。 如果您使用公式,請確定設定公式計算結果可能為 0 的最小值。 例如,您可以使用 Max (20, varFoo + rectBar.Height)。 這樣的話,如果 varFoo 和 rectBar.Height 尚不無法使用,我們至少可以使用合理的值 20。

在偵測到更改之前,會有一秒鐘的延遲,這讓您可以完成輸入,而不是偵測到每次輸入時的更改。