文章目录

  • 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 代码的,而profilerelease是提前编译为机器码 AOT(Ahead Of Time),所以 debug 会慢很多

所以为了获取最接近生产环境的数据,我们应该选择一台尽可能低端的真机,并且以 profile 模式或者 release 模式下运行app。

2 监测FPS帧率

Flutter提供了监测帧率工具。那么如何开启呢?

2.1 在Android Studio 和 IntelliJ IDEA中

选中 View > Tool Windows > Flutter Inspector。

iOS 计算绘制帧率 ios帧率监测_GPU帧率


或者使用快捷方式,点击窗口右侧的Flutter Inspector。

iOS 计算绘制帧率 ios帧率监测_GPU帧率_02


然后点击上面图中的箭头所指的按钮。就会在手机或模拟器中打开了。如下图所示。

iOS 计算绘制帧率 ios帧率监测_UI帧率_03

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工具栏看到如下图所示的工具集。

如下图箭头所示。

iOS 计算绘制帧率 ios帧率监测_UI帧率_04


点击图标,就在浏览器中打开了DevTools界面。在TimeLine中就可以看到正在运行的应用的FPS了。如下图所示。

iOS 计算绘制帧率 ios帧率监测_UI帧率_05

3 UI帧率 和 GPU帧率

在上面打开的图表上观察是否出现红色线条。绿色代表当前帧,当页面有变动,图表会不断绘制。
蒙版上有2个图表,每个图表上有三横格,每个横格代表16ms。如果大多数帧都在第一格,说明达到了期望的帧率。
图表分别体现了 UI帧率 和 GPU帧率。
如果出现了红色,说明对应的线程有太多work要做。