效能常見問題和回答
本篇收集了一些關於評估和除錯 Flutter 效能的常見問題。
-
哪些效能儀表盤有 Flutter 相關的指標?
-
我如何向 Flutter 新增一個基準測試?
-
有哪些捕捉和分析性能指標的工具?
-
我的 Flutter 應用程式很卡頓,效能很糟糕。怎麼樣才能修復這些問題?
-
有哪些特別消耗效能的操作是我需要注意的?
-
Opacity
、Clip.antiAliasWithSaveLayer
或任何能觸發saveLayer
的操作。 ImageFilter
-
查閱 效能最佳化最佳實踐
-
-
我如何才能知道 Flutter 應用程式中哪些 widget 在哪一幀中被重新建立?
-
將 widgets/debug.dart 中的
debugProfileBuildsEnabled
設定為 true。 -
或者,改變 widgets/framework.dart 中的
performRebuild
函式,忽略debugProfileBuildsEnabled
,並始終呼叫Timeline.startSync(...)/finish
。 -
如果你使用 IntelliJ,就可以看見這些資料的檢視。在 IntelliJ 的 Flutter Performance 工具中勾選 Track widget rebuilds,你就能在 IDE 中直觀地看見哪些 widget 進行了重建。
-
-
我如何查詢顯示器的重新整理率?
-
如何解決我的應用程式因高消耗的 Dart 非同步函式呼叫阻塞了 UI 執行緒,而導致動畫效果不佳?
-
使用
compute()
方法生成另一個 isolate,例如 在後台處理 JSON 資料解析 實用教程 (Cookbook) 中所示範的。
-
-
我如何確定使用者下載的 Flutter 應用程式套件的體積?
-
請查閱 測量你的應用體積
-
-
我如何才能看到 Flutter engine 內架構細分的體積?
-
訪問 binary size dashboard,用 GitHub 上 engine 倉庫 最近送出的 hash 值替換 URL 中的 hash 值。
-
-
我如何才能對正在執行的應用程式進行截圖,並將其匯出 SKP 檔案?
-
執行
flutter screenshot --type=skia --observatory-uri=...
指令 -
注意,一個檢視截圖的已知問題:
-
Issue 21237: 無法在真機中截圖。
-
-
分析和視覺化 SKP 檔案,請使用 Skia WASM debugger。
-
-
如何從裝置上讀取著色器持久化快取?
-
在 Android 上,你可以進行以下操作:
adb shell run-as <com.your_app_package_name> cp <your_folder> <some_public_folder, e.g., /sdcard> -r adb pull <some_public_folder/your_folder>
-
-
我如何在 Fuchsia 中進行追蹤?
-
請查閱 Fuchsia 追蹤指南
-