天天看點

flutter的UI幀率FPS監測1 profile / release 模式2 監測FPS幀率3 UI幀率 和 GPU幀率

文章目錄

  • 1 profile / release 模式
  • 2 監測FPS幀率
    • 2.1 在Android Studio 和 IntelliJ IDEA中
    • 2.2 代碼中
    • 2.3 打開Flutter開發者工具監控
      • 2.3.1 安裝DevTools
  • 3 UI幀率 和 GPU幀率

App 流暢性的關鍵名額有 UI幀率,GPU幀率,我們期望它能達到 60fps,也就是16ms每幀。

1 profile / release 模式

那麼如何擷取到呢?

前面文章介紹了Flutter的三種運作模式,要擷取FPS最好在profile / release 模式。

說明:

因為debug模式會有一些額外的檢查工作,比如assert()等

為了加速開發效率,debug模式是以 JIT(Just in time)模式編譯 dart 代碼的,而profile和release是提前編譯為機器碼 AOT(Ahead Of Time),是以 debug 會慢很多

是以為了擷取最接近生産環境的資料,我們應該選擇一台盡可能低端的真機,并且以 profile 模式或者 release 模式下運作app。

2 監測FPS幀率

Flutter提供了監測幀率工具。那麼如何開啟呢?

2.1 在Android Studio 和 IntelliJ IDEA中

選中 View > Tool Windows > Flutter Inspector。

flutter的UI幀率FPS監測1 profile / release 模式2 監測FPS幀率3 UI幀率 和 GPU幀率

或者使用快捷方式,點選視窗右側的Flutter Inspector。

flutter的UI幀率FPS監測1 profile / release 模式2 監測FPS幀率3 UI幀率 和 GPU幀率

然後點選上面圖中的箭頭所指的按鈕。就會在手機或模拟器中打開了。如下圖所示。

flutter的UI幀率FPS監測1 profile / release 模式2 監測FPS幀率3 UI幀率 和 GPU幀率

2.2 代碼中

打開 在MaterialApp 或者 WidgetsApp的構造函數中設定showPerformanceOverlay屬性為 true。同樣可以在手機和模拟器中看的幀率檢測。代碼如下:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      showPerformanceOverlay: true, // 開啟FPS監控
      title: 'My Awesome App',
      home: MyHomePage(title: 'My Awesome App'),
    );
  }
}
           

2.3 打開Flutter開發者工具監控

使用Flutter開發跨平台應用時,經常需要用到一個開發者工具,即Dart DevTools,Dart DevTools是一套用于Dart和Flutter應用開發的性能和調試工具,可以用它來檢測和分析應用的性能,以及用它來調試應用日志和進行記憶體分析等。

目前,Dart DevTools支援的功能有如下一些:

  • 檢查和分析應用程式的UI布局和狀态。
  • 診斷應用的UI 性能問題。
  • 檢測和分析應用程式的CPU使用情況。
  • 分析應用程式的網絡使用情況。
  • Flutter或Dart應用程式的源代碼級調試。
  • 調試Flutter或Dart應用程式的記憶體使用情況和分析記憶體問題。
  • 檢視運作的Flutter或Dart應用程式的一般日志和診斷資訊。

2.3.1 安裝DevTools

使用DevTools之前需要先安裝DevTools插件,如果還沒有安裝,可以先安裝它。

1 Android Studio

預設情況下,隻要安裝了Flutter開發環境,基本就已經安裝了DevTools工具,安裝之後運作項目會在DevTools工具欄看到如下圖所示的工具集。

如下圖箭頭所示。

flutter的UI幀率FPS監測1 profile / release 模式2 監測FPS幀率3 UI幀率 和 GPU幀率

點選圖示,就在浏覽器中打開了DevTools界面。在TimeLine中就可以看到正在運作的應用的FPS了。如下圖所示。

flutter的UI幀率FPS監測1 profile / release 模式2 監測FPS幀率3 UI幀率 和 GPU幀率

3 UI幀率 和 GPU幀率

在上面打開的圖表上觀察是否出現紅色線條。綠色代表目前幀,當頁面有變動,圖表會不斷繪制。

蒙版上有2個圖表,每個圖表上有三橫格,每個橫格代表16ms。如果大多數幀都在第一格,說明達到了期望的幀率。

圖表分别展現了 UI幀率 和 GPU幀率。

如果出現了紅色,說明對應的線程有太多work要做。

繼續閱讀