優化邏輯的建議
適用於此 Power Platform Well-Architected 性能效率檢查表建議:
PE:06 | 使用高性能的 logic,並確保它將責任分擔給平臺。 僅將 logic 用於其預期目的,並且僅在必要時使用。 |
---|
本指南介紹了優化代碼和基礎設施性能的建議。 要優化您的代碼和基礎設施,您應該僅將元件用於其核心目的,並且僅在需要時使用。 當您過度使用代碼和基礎設施時,會產生不必要的資源消耗、瓶頸和回應緩慢。 為了補償這些低效率,您必須添加更多資源來完成相同的任務。
定義
詞彙 | 定義 |
---|---|
並行 | 一次執行多個任務或流程,但不一定同時執行。 |
排比 | 當同時執行多個任務或流程時。 |
關鍵設計原則
優化 logic 和 infrastructure 需要微調 logic 和支援 infrastructure 以提高性能效率。 它需要能夠快速執行任務且不浪費資源的高性能邏輯。 它需要一個設計良好的基礎設施,該基礎設施經過簡化以避免不必要的複雜性。 工作負載應使用平臺的固有功能。 這種方法有助於確保 logic 和 infrastructure 主要用於其核心目的,並且僅在需要時使用。
優化邏輯性能
要優化邏輯性能,請修改代碼以減少資源使用、最小化運行時並提高性能。 您可以修改邏輯以提高應用程式或流程的效率和速度。 不要用暴力破解來掩蓋性能問題。 暴力破解意味著添加計算資源來補償代碼性能,例如添加額外的容量而不是尋址源。 您需要通過優化來修復性能問題。 當您優化 logic 性能時,它有助於最大限度地提高系統資源的利用率,縮短回覆時間,減少延遲並增強用戶體驗。
檢測您的邏輯
Instrumenting logic 是指在運行時添加自定義事件日誌記錄以收集數據和監控 logic 性能的做法。 Logic Instrumentation 允許開發人員收集有關關鍵指標 (如執行時間) 的資訊。 通過插樁邏輯,開發人員可以深入瞭解邏輯熱路徑,識別性能瓶頸,並優化邏輯以提高性能效率。
理想情況下,您應該在軟體開發生命週期的早期執行 logic analysis。 您越早發現邏輯問題,修復成本就越低。 您希望盡可能多地自動化此 logic analysis。 使用動態和靜態代碼分析工具來減少手動工作。 例如, Flow Checker 可以突出顯示預期不會執行的邏輯,例如未指定篩選條件的查詢。 但是,請記住,此測試仍然是對 production 的類比。 Production 提供了對 Logic 優化的最清晰的理解。
權衡:邏輯監控工具可能會增加成本。
識別熱路徑
通過檢測 logic,您可以測量不同 logicpaths 的資源消耗。 這些測量可幫助您識別熱路徑。 熱路徑對性能和資源使用有重大影響。 它們是程式中需要高性能和低延遲的關鍵或頻繁執行的部分。
要識別代碼熱路徑,請考慮以下步驟:
Analyze runtime data:收集運行時數據並對其進行分析,以識別消耗運行時間最多的 logic 區域。 查找經常執行或需要很長時間才能完成的模式或邏輯部分。
性能測量:使用分析工具或性能測試框架來測量不同 logicpath 的執行時間和資源消耗。 此過程有助於識別瓶頸和需要改進的領域。 例如,您可以使用 Monitor in Power Apps 更好地了解應用程式的事件和公式的工作原理,從而提高性能。
考慮業務邏輯和使用者效果:根據不同邏輯路徑與應用程式功能或關鍵業務操作的相關性,評估它們的重要性。 確定哪些 logic paths 對於向使用者提供價值或滿足性能要求至關重要。
優化邏輯
優化 logic 就是改進 logic 的結構和設計,以更少的資源執行任務。 改進的邏輯減少了不必要的操作。 它以更少的資源消耗創建更快的執行速度。 您應該刪除 logic path 中可能影響性能的任何不必要操作。 優先優化熱路徑,以獲得最大的性能效率提升。
要優化邏輯,請考慮以下策略:
刪除不必要的函數調用:檢查您的邏輯並識別任何對於所需功能不是必需的函數,這些函數可能會對性能產生負面影響。 例如,如果函數調用執行在代碼中較早完成的驗證,則可以刪除不必要的驗證函數調用。
最大限度地減少日誌記錄操作:日誌記錄有助於調試和分析,但過多的日誌記錄會影響性能。 評估每個日誌記錄操作的必要性,並刪除任何對性能分析不重要的不必要的日誌記錄調用。 一個好的做法是允許系統打開和關閉日誌記錄,以説明調試,同時不會導致生產性能問題。
優化迴圈和條件語句:分析邏輯中的迴圈和條件語句,並確定可以消除的任何不必要的反覆運算或條件。 簡化和優化這些結構可以提高代碼的性能。 最大限度地減少迴圈中的函數調用,並消除冗餘計算。 考慮將計算移出迴圈。
減少不必要的數據處理:檢查您的邏輯中是否存在任何不必要的數據處理操作,例如冗餘計算或轉換。 消除這些不必要的操作以提高邏輯的效率。 例如,使用 Dataverse 計算列、匯總字段 或 Power Fx 列 ,而不是在代碼中計算值並通過保存操作存儲它。
優化數據結構。 要有效地存儲和檢索數據,請選擇適當的數據結構,並且只選擇所需的數據列。 為特定問題選擇最佳數據結構。 合適的數據結構可以提高應用程式性能。
最大限度地減少網路請求:如果您的邏輯涉及發出網路請求 (例如,使用連接器操作),請最大限度地減少請求數量並優化其使用。 盡可能批量請求,避免不必要的往返以提高性能。
減小數據結構大小:查看數據要求並消除任何不必要的欄位或屬性。 通過選擇適當的數據類型並有效地打包數據來優化記憶體使用。
Do work asynchronously(異步工作):評估是否可以在 logic 中異步而不是同步完成工作。 例如,請考慮實現一個 Power Automate 流來異步處理工作,而不是內聯執行操作。
在自定義之前進行配置。 如果可以,請使用標準應用程式元件。 外掛程式和 JavaScript 等自定義項可能會影響性能。
最小化控制。 僅顯示表單中所需的欄位 - 字段過多會使用戶介面混亂並影響性能。 盡量減少命令列、畫布應用或自定義頁面中的控件數量。 避免嵌套庫或向庫添加過多元件。
優化數據查詢。 僅載入應用程式或流中所需的數據。 使用伺服器端檢視對數據進行預篩選,以縮小與查詢相關的數據範圍。
查看特定於 Power Platform 您正在使用的產品的性能建議。 根據這些建議評估您的邏輯,以確定需要改進的領域。
權衡:優化 logic 和 hot paths 需要專業知識。 識別邏輯效率低下是主觀的,可能需要高技能的人員,您可能需要從其他任務中提取他們。
使用併發和並行
使用併發和並行涉及同時或以重疊方式執行多個任務或進程,以有效利用計算資源。 這些技術可以提高工作負載可以處理的總體輸送量和任務數。 當您併發或並行運行任務時,它可以縮短應用程式的運行時間並增加回覆時間。
併發和並行性有效地在計算資源之間分配工作負載。 在增加併發性或並行度時,請考慮對其他系統的影響,因為您可能會超出其限制。 例如,一次處理每個專案的流中的 Power Automate 併發迴圈可能會超過迴圈邏輯中使用的連接器的請求限制。
使用並行度。 並行性是系統在多個計算資源上同時發射鍵多個任務或進程的能力。 並行性將工作負載劃分為並行運行的較小任務。 當您並行運行邏輯時,性能會提高,因為工作負載分佈在多個分支中。
使用併發。 併發是系統運行多個任務或進程的能力。 併發使工作負載的不同部分能夠獨立取得進展,從而提高整體性能。
併發執行:併發執行允許相同的邏輯同時運行。 將併發執行限制為 1 可能會產生序列化邏輯的效果,從而導致一次處理一個專案。 控制工作負載項的併發執行量有助於管理處理期間的資源使用方式。 例如, Power Automate 可以使用 Concurrent Control 屬性將流迴圈配置為並行處理多個操作。
注意
在啟用併發之前,請記住,這意味著將同時執行多個操作—如果您在迴圈中寫入數據,請確保數據的目標可以處理同時發生的請求。
佇列:佇列是位於工作負載的請求元件 (生產者) 和處理元件 (使用者) 之間的存儲緩衝區。 單個佇列可以有多個消費者。 隨著任務的增加,您應該擴展消費者以滿足需求。 建立者將任務放入佇列中。 佇列會存儲任務,直到消費者有容量為止。 佇列通常是將工作移交給需求高峰的處理服務的最佳方式。 有關詳細資訊,請參閱 基於佇列的負載調節模式 和存儲 佇列和服務總線佇列。
優化後台作業
許多應用程式需要獨立於使用者介面運行的後台任務。 應用程式可以啟動作業並繼續處理來自使用者的互動式請求。 後台作業的範例包括批處理作業、處理器密集型任務和長時間運行的進程,例如工作流。 當系統處於負載狀態時,後台任務不應阻止應用程式或由於延遲操作而導致不一致。 有關優化後台作業的更多資訊,請參閱 開發後台作業的建議。
Power Platform 簡易化
檢測代碼:在構建畫布應用程式時,應使用高性能模式來提高應用程式效率,同時應避免使用反模式。 有關更多資訊,請參閱 創建 performant Power Apps概述。 使用 Monitor in Power Apps 在開發過程中診斷和排查性能問題。
衡量參與度和結果:在構建 Copilot 時,跟蹤 對話參與度 和 結果 對於衡量 Copilot 績效指標和發現需要改進的領域至關重要。
優化代碼邏輯:藉助 解決方案檢查器 功能,您可以根據一組最佳實踐規則對解決方案執行豐富的靜態分析檢查,並快速識別有問題的模式。 使用 Flow Checker,您可以深入瞭解 Flow 實施的哪些方面會帶來性能風險?
使用併發和並行: Power Automate 雲端流支援迴圈和觸發器中的併發。 請注意, 併發、迴圈和取消批處理限制 適用,並且基於您的性能配置檔。 Power Apps 支援使用 Concurrent 函數進行 併發。
優化 Dataverse 性能: Microsoft Dataverse 提供可擴展的框架,允許開發人員構建高度自定義和定製的體驗。 在自定義、擴展或集成 Dataverse時,請注意已建立的指南和最佳實踐。 請參閱使用 Microsoft Dataverse 的最佳做法和指南。
相關資訊
- 中的併發、迴圈和取消批處理限制 Power Automate
- 用於優化 Dynamics 365 性能的產品特定指南
- Customer Engagement 應用程式的性能調整和優化
- 創建 performant 概述 Power Apps
- Monitor 概述
- 使用 Solution Checker 提高元件性能、穩定性和可靠性
效能效益檢查清單
請參閱完整的建議集。