首页 > 其他分享 >鸿蒙Flutter性能调优分析之帧渲染跟踪

鸿蒙Flutter性能调优分析之帧渲染跟踪

时间:2024-12-18 09:36:56浏览次数:4  
标签:raster 鸿蒙 trace 渲染 调优 线程 标识符 Flutter

鸿蒙Flutter性能调优性能分析之帧渲染跟踪

Flutter应用进行性能分析时,需利用分析工具捕获应用的trace数据,并对其进行分析。鉴于Flutter应用中可能会出现需要单独追踪某帧渲染的情况,如帧率卡顿或帧丢失,本文特介绍了一种针对单帧追踪的方法。

分析工具

常用的分析工具包括DevEco Studio ProfilerSmartPerf,建议选用DevEco Studio Profiler性能调优工具。性能调优工具DevEco Studio Profiler的使用方法可查看DevEco Profiler工具简介.

帧标识

一帧的渲染流程大致如下:

image-3-201

掌握帧渲染流程非常重要,同时也需要掌握帧渲染流程的每个单元的匹配。为每个单元寻找一个合适的标识符,能正确匹配渲染流程。

第一个标识 frame_number

1.ui和1.raster之间联系的标识符是frame_number。
收藏该两个线程,将这两个线程关联起来进行观察,会在trace上找到这个标识符,这是Flutter应用帧渲染的第一个标识符。

  • 如果frame_number的标识符未在1.ui和1.raster中出现,表明当前帧不是flutter自渲染,需要重新定界性能问题。

image-3-202

第二个标识 ReuseBuffer/acquire buffer

1.raster和render_service之间联系的标识符是ReuseBuffer。
在1.raster线程"flutter::SkCanvas::Flush"的trace过程中,会向RS进程申请buffer内存,用于存储渲染的帧内容。点击"binder transaction"的trace可以跳转到另一个线程,查看对应的ReuseBuffer的id。

image-3-203

在render_service线程"RSMainThread::DoComposition"的trace过程中,会获取buffer内存里的帧内存。"acquire buffer sequence"的trace里就能看到和1.raster线程申请的ReuseBuffer编号是一样的。

image-3-204

  • 通过上面展示的两个标识,就能识别flutter应用到RS进程上的帧渲染。而RS进程上后面的单元是怎么识别的,目前还没有直观的trace可以看到,默认连续的线程trace是同一帧(即render_service到RSUniRenderThread,再到RSHardwareThread是连续的)。

标签:raster,鸿蒙,trace,渲染,调优,线程,标识符,Flutter
From: https://www.cnblogs.com/hongmengos/p/18613912

相关文章

  • 鸿蒙ArkWeb 跨域请求
    鸿蒙ArkWeb基础-跨域请求ArkWeb内核出于安全考虑,默认限制file协议和resource协议的跨域访问。这意味着,如果Web组件尝试加载来自不同域的file协议或resource协议资源,将会被拦截,从而导致资源无法加载。例如,假设您的Web组件部署在域A上,而您想要加载域B上的本地资源,如图片或脚本文......
  • harmony_flutter_videoCompress(视频压缩)
    harmony_flutter_videoCompress(视频压缩)一.MethodChannel1.flutter端代码创建MethodChannel交互通道video_compress接收ohos端传递过来的进度finalcompressProgress$=ObservableBuilder<double>();final_channel=constMethodChannel('video_compress');@......
  • Flutter OHOS flutter_console
    flutter_consoleAFlutterConsoleUI项目介绍一个在Flutter端Console可视化的组件,将ConsoleWindow置于页面最顶层,用于调试,输出日志等。安装使用安装步骤简单Demoimport'package:flutter/material.dart';import'dart:async';import'package:flutter_console/flutter_......
  • harmony_flutter_orientation_plugins(监听屏幕状态插件)
    harmony_flutter_orientation(屏幕旋转)flutter端监听鸿蒙手机得屏幕横竖屏切换等各种状态一.MethodChannel1.flutter端代码创建MethodChannel交互通道接收ohos端传递过来状态classOrientationPlugin{staticconst_methodChannel=constMethodChannel('sos......
  • harmony_flutter_keyboard_visibility(监听动态键盘)
    harmony_flutter_keyboard_visibility(监听动态键盘)一.MethodChannel1.flutter端代码创建StreamBuilder监听event接收ohos端传递过来的状态值finalKeyboardVisibilityController?controller;KeyboardVisibilityControllerget_controller=>controller?......
  • harmony_flutter 实现短信发送
    harmony_flutter实现短信发送ohos端建立通import{FlutterPlugin,FlutterPluginBinding}from'@ohos/flutter_ohos/src/main/ets/embedding/engine/plugins/FlutterPlugin';import{MethodCallHandler,MethodResult}from'@ohos/flutter_ohos/src/main/e......
  • harmony_flutter 实现拨打电话功能
    harmony_flutter实现拨打电话功能ohos端建立通importcallfrom'@ohos.telephony.call';import{FlutterPlugin,FlutterPluginBinding}from'@ohos/flutter_ohos/src/main/ets/embedding/engine/plugins/FlutterPlugin';import{MethodCallHandler,Me......
  • flutter_ohos_原生和flutter交互跳转
    flutter_ohos_原生和flutter交互跳转1.EntryAbility可以继承UIAbilityexportdefaultclassEntryAbilityextendsUIAbilityimplementsExclusiveAppComponent<UIAbility>{detachFromFlutterEngine():void{//thrownewError('Methodnotimplemented.�......
  • flutter_ohos_sequence
    性能分析第一步-梳理线程顺序Flutter应用在性能分析的时候,需要使用分析工具去抓取应用的trace,并对trace进行分析。Flutter应用在渲染流程上与几个线程密不可分,而这篇指南里,主要介绍这几个密不可分的线程,以及它们在渲染流程上顺序。分析工具常用的分析工具有DevEcoStudioProfi......
  • Flutter OHOS fluttertpc_screenshot_callback
    screenshot_callback监听系统截图注意事项Android需要获取存储权限才能正常使用需要真机才能验证截图Flutter中使用注意如果在flutter中重写didChangeAppLifecycleState,其中在三星手机上,侧面截图功能会执行resumed生命周期。caseAppLifecycleState.resumed://应用程......