Flutter性能调试问题

渲染性能统计
  • 要了解您的应用程序导致重新布局或重新绘制的原因,您可以分别设置 debugPrintMarkNeedsLayoutS tacks 和 debugPrintMarkNeedsPaintStacks 标志。 每当渲染盒被要求重新布局和重新绘制时,这些 都会将堆栈跟踪记录到控制台。如果这种方法对您有用,您可以使用 services 库中的 debugPrintSt ack() 方法按需打印堆栈痕迹。
统计应用启动时间
  • 要收集有关Flutter应用程序启动所需时间的详细信息,可以在运行 flutter run 时使用 trace- startup 和 profile 选项。
$ flutter run --trace-startup --profile
  • 跟踪输出保存为 start_up_info.json ,在Flutter工程目录在build目录下。输出列出了从应用程序启动到这些跟踪事件(以微秒捕获)所用的时间:

进入Flutter引擎时.
展示应用第一帧时.
初始化Flutter框架时.
完成Flutter框架初始化时.

如:

    {
        "engineEnterTimestampMicros":96025565262, 
        "timeToFirstFrameMicros": 2171978,
        "timeToFrameworkInitMicros":514585, 
        "timeAfterFrameworkInitMicros": 1657393
}


跟踪代码性能
  • 要执行自定义性能跟踪和测量Dart任意代码段的wall/CPU时间(类似于在Android上使用systrace)。
    使用 dart:developer 的Timeline工具来包含你想测试的代码块,例如:
Timeline.startSync('interesting function'); 
// iWonderHowLongThisTakes(); 
Timeline.finishSync();

然后打开你应用程序的Observatory timeline页面,在“Recorded Streams”中选择‘Dart’复选框,并执 行你想测量的功能。

刷新页面将在Chrome的跟踪工具中显示应用按时间顺序排列的timeline记录。

请确保运行 flutter run 时带有 --profile 标志,以确保运行时性能特征与您的最终产品差异最小。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐