当前位置: 首页 > news >正文

性能分析定界(OpenHarmony平台)指南

性能分析定界指南

前置条件

  • OpenHarmony Next系统
  • 前台运行Flutter页面
  • 分析工具
    DevEco Studio Profiler
    SmartPerf

Flutter线程介绍

Flutter 使用多个线程来完成其必要的工作,图层中仅展示了其中两个线程。你写的所有 Dart 代码都在 UI 线程上运行。尽管你没有直接访问其他线程的权限,但是你对 UI 线程的操作会对其他线程产生性能影响。

  • 平台线程
    平台的主线,插件代码在这里运行。

  • UI 线程
    UI 线程在 Dart VM 中执行 Dart 代码。该线程包括开发者写下的代码和 Flutter 框架根据应用行为生成的代码。当应用创建和展示场景的时候,UI 线程首先建立一个 图层树(layer tree) ,一个包含设备无关的渲染命令的轻量对象,并将图层树发送到 GPU 线程来渲染到设备上。 不要阻塞这个线程! 在性能图层的最低栏展示该线程。

  • Raster 线程
    光栅化线程,又称GPU线程。raster 线程拿到 layer tree,并将它交给 GPU(图形处理单元)。你无法直接与 GPU 线程或其数据通信,但如果该线程变慢,一定是开发者 Dart 代码中的某处导致的。图形库 Skia 在该线程运行,并在性能图层的最顶栏显示该线程。请注意,raster 线程为 GPU 进行栅格化,而线程本身则是在 CPU 上运行的。

  • I/O线程
    执行高负载的操作(常见的有 I/O)以避免阻塞 UI 或者 raster 线程。这个线程将不会显示在 performance overlay 上。

  • RenderService线程
    RS进程的主线程,由Flutter渲染帧完成后,RS线程进行合成并送显.Texture模式下,Flutter渲染后的buffer与应用的主线程合成后,统一送显,受应用主线程的影响;Surface模式下,Flutter渲染帧单独送显,不受应用主线程影响。

问题定界

在DevEco Studio中点击下方的Profiler标签页,打开性能调优工具,抓取应用的trace后,收藏应用进程的ui,raster线程和RenderService的主线程。

下图的RenderService缺失帧,是因为UI线程单帧耗时较长,超过一帧的时间(120帧率下,一帧是8.33毫秒)。

一帧渲染流程中,ui 和 raster加起来的的总时长超过一帧时间,则性能问题能定界是Flutter问题。如上图,从ui线程的代码执行开始(标记①),到raster线程的代码执行结束(标记②)为止,超过了一帧时间。问题的定位,需要进一步的性能分析。

DevEco Studio Profiler调优工具介绍

DevEco Studio Profiler

Fluter 调优介绍

Flutter性能调优

http://www.jsqmd.com/news/604948/

相关文章:

  • ai辅助开发:让快马智能生成win11安装openclaw的交互式诊断助手
  • 2026年大港东部哪家爵士舞培训学校口碑佳?
  • OpenCode 实用学习指南
  • RAG大模型“外挂“揭秘:3步解锁私有数据问答,秒变“开卷学霸“!
  • 大模型训练实战:分布式训练、显存优化与知识蒸馏全解析!
  • 信息化基础设施层建设
  • DFRobot URM13超声波传感器三模通信与自适应测距技术解析
  • TVA深度解析(13):系统运维与故障排查
  • 计算机毕业设计:Python航班运行监测与延误预测系统 Django框架 可视化 MLP 大数据 机器学习 深度学习(建议收藏)✅
  • 2025届学术党必备的十大降AI率助手横评
  • SAP与Java系统间Webservice交互的实战指南
  • 解决鸿蒙方向的Flutter框架版切换问题-当前最新版本3.35.8——工具切换与命令切换
  • Mojo调用Python生态的5种高阶技巧:从NumPy加速到LLM推理,今天就能落地
  • 恒压供水系统:维纶通屏与S7 - 200程序的奇妙组合
  • BartOS-storage:面向ESP8266的轻量级嵌入式结构化存储库
  • Pix4D安装与激活全攻略:从卸载到成功运行的详细指南
  • 嵌入式开发中的串口打印调试与printf重定向
  • TDOA定位入门:如何用手机麦克风阵列和互相关算法实现声源追踪?
  • 寒武纪驱动开发面试全解析与核心技术要点
  • 代码生成的未来:Agent 会取代初级程序员,还是成为超级 IDE?
  • 基于粒子群算法的IEEE33节点配电网无功优化及其结果分析
  • 别让Python版本毁了你的Carla项目:一次讲清Anaconda环境与Carla 0.9.14的正确适配姿势
  • AI赋能开发:让快马平台的Kimi理解需求,为你智能编写mc_jc框架代码
  • OpenClaw学术助手:用Kimi-VL-A3B-Thinking自动处理研究文献图表
  • 【C】static
  • 从原理到实战:Matlab chirp函数生成线性扫频信号全解析
  • STM32堆栈原理与内存管理实践指南
  • OpenClaw图文处理技能开发:基于Qwen2.5-VL-7B的自动化方案
  • MacOS极简部署OpenClaw:5分钟连接Phi-3-vision-128k-instruct模型
  • 电容特性与应用全解析:从基础到实践