透過最大限度地減少背景工作來改善耗電和電池使用時間

本指南將示範如何改善 Windows 應用程式使用電源的方式,提供原則來協助您改善整體裝置效能和電池使用時間。

改善耗電量的最基本原則是確保您的應用程式處於背景時,不會:

  • 使用系統資源、
  • 透過定時器喚醒 CPU、
  • 等候 vsync 事件來喚醒 CPU。

「在背景中」表示使用者看不見也聽不到應用程式。 在背景中喚醒 CPU 或利用系統資源的原因應該很少。 檢查您的應用程式是否觸發這些事件並解決原因,可大幅改善應用程式的耗電量、電池使用時間,以及 減少客戶使用應用程式所產生的碳排放量

若要檢查 CPU 在您的應用程式未使用時是否仍在進行不必要的工作,您可以使用 Windows 效能分析器 (WPA) 來擷取並分析追蹤。 我們將在下面的步驟中逐步解說如何進行。

擷取追蹤並檢查不必要的工作

請務必在執行應用程式時設定正確的條件,再擷取追蹤以分析是否執行不必要的工作而耗盡電源。 您也可以執行多個追蹤,以便在各種條件下測試您的應用程式。

設定

  1. 開啟 [工作管理員] 並確保 CPU 使用率小於 5%,讓您的測試裝置閒置。 這樣做會將測量干擾降至最低,並提供合理的大小追蹤。

  2. 啟動您的應用程式並流覽至預期常用的檢視。

  3. 最小化您的應用程式。 *您可能想要在應用程式視窗完全遮蔽 (無法檢視) 時、當應用程式處於前景時,以及在使用者沒有互動期間之後,重複下列步驟,以確保應用程式不會起始不必要的工作。

測量和評估背景中的 CPU 使用量

  1. 系統管理員模式開啟命令列 (PowerShell 或命令提示字元)。 (如果未以系統管理員模式執行,您可能會收到錯誤碼:0xc5585011「無法啟用原則來分析系統效能」。)

  2. 輸入命令:wpr -start power -filemode

  3. 讓裝置保持閒置 5 分鐘。

  4. 輸入命令:wpr -stop idletrace.etl

  5. 若要使用 Windows 效能分析器 (WPA) 開啟追蹤,請輸入以下命令:wpa.exe idletrace.etl

  6. 開啟計算>CPU 使用量 (精確) 圖表。

    • 瀏覽至您的處理序 (或如果您有多處理序模型,則前往與應用程式相關的所有處理序),並評估「依 CPU 使用率」的 Cswitch 計數。 在理想情況下,在應用程式處於背景時這些會盡可能接近 0。 查看堆疊是尋找資源使用位置以及如何加以改善的絕佳方式。

    • 在尋找過度喚醒時,可透過新增「新執行緒堆疊」來查看執行緒是在哪個堆疊上喚醒的。

    顯示 CPU 進程、計數和使用量百分比的 WPA 圖表

  7. 開啟計算>CPU 使用量 (取樣) 圖表。 評估程式碼中執行所花費的時間,以追蹤 CPU 使用量問題。

測量和評估背景中等候的 vsync

注意

在調查此更進階的案例之前,請先將焦點放在上一節的基本 CPU 使用量。

  1. 以系統管理員模式開啟命令列 (PowerShell 或命令提示字元)。

  2. 輸入命令:wpr -start gpu -filemode

  3. 讓裝置保持閒置 5 分鐘。

  4. 輸入命令:wpr -stop gputrace.etl

  5. 若要使用 Windows 效能分析器 (WPA) 開啟追蹤,請輸入以下命令:wpa.exe gputrace.etl

  6. 開啟 [系統活動>泛型事件] 圖形。

    • 篩選至「Microsoft-Windows-Dxgkrnl」事件。
    • 將 [處理序] 資料欄拖曳到第 2 欄。
    • 檢查您是否呼叫 WaitForVsync。 例如,透過 WaitForVerticalBlankEventInternal 事件透過像 IDXGIOutput::WaitForVBlank (dxgi.h) 等的 API。

    顯示 MS Edge Webview2 事件的 WPA 圖表

若要瞭解詳細資訊,請參閱「使用 Windows 效能分析器分析新式待機問題」文章。

其他資源