首页 > 其他分享 >鸿蒙Flutter性能调优之性能分析定界

鸿蒙Flutter性能调优之性能分析定界

时间:2024-12-18 09:24:47浏览次数:5  
标签:定界 性能 调优 UI GPU 线程 Flutter

鸿蒙Flutter性能调优之性能分析定界

flutter鸿蒙化的工程,也可以使用devtools对Dart代码进行调试.

前置条件

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后,收藏应用进程的<x>.ui <x>.raster 和RenderService的主线

image-1-301

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

image-1-302

一帧渲染流程中,<x>.ui 和 <x>.raster加起来的的总时长超过一帧时间,则性能问题能定界是Flutter问题。问题的定位,需要进一步的性能分析。

标签:定界,性能,调优,UI,GPU,线程,Flutter
From: https://www.cnblogs.com/hongmengos/p/18613872

相关文章

  • 【转载】从 HPC 到 AI:探索文件系统的发展及性能评估
    2024-03-06鲁蔚征随着AI技术的迅速发展,模型规模和复杂度以及待处理数据量都在急剧上升,这些趋势使得高性能计算(HPC)变得越来越必要。HPC通过集成强大的计算资源,比如GPU和CPU集群,提供了处理和分析大规模数据所需的算力。然而,这也带来了新的挑战,尤其是在存储系统方面,包括如......
  • 从浏览器的渲染角度来进行性能优化
    从浏览器的渲染角度来进行性能优化性能瓶颈js执行引擎与渲染引擎是互斥的,他们是共同存在与浏览器的UI线程里面js引擎负责执行我们的js代码从而产生Dom树,渲染引擎则是依据Dom树,样式树来构建渲染树,然后排版与绘制,然后组合,从而计算出显示的像素点。整个的流程需要在......
  • Spark优化----Spark 性能调优
    目录常规性能调优常规性能调优一:最优资源配置常规性能调优二:RDD 优化RDD 复用RDD 持久化RDD 尽可能早的filter 操作常规性能调优三:并行度调节常规性能调优四:广播大变量常规性能调优五:Kryo 序列化常规性能调优六:调节本地化等待时长算子调优算子调优一:mapPar......
  • Redis篇之Redis高可用模式参数调优,提高Redis性能
    1.Redis高可用模式核心Redis高可用模式的核心是使用主从复制和自动故障转移机制来确保系统在某些节点发生故障时仍然可以正常工作。常用的高可用架构包括RedisSentinel模式和RedisCluster模式,其中Sentinel模式是为了提供高可用性而专门设计的解决方案。在RedisSent......
  • 跨越边界:MySQL跨平台性能优化全攻略
    在当今全球化和技术多样化的背景下,确保应用程序能够在各种操作系统上无缝运行并提供一致的用户体验变得至关重要。对于数据库系统而言,这意味着不仅要保证数据的一致性和完整性,还要确保其在不同环境下的高效运作。MySQL作为世界上最受欢迎的关系型数据库管理系统之一,支持多种......
  • 【YashanDB知识库】误配置SYSTEM级别的STATISTICS_LEVEL参数为ALL导致数据库性能下降
    本文内容来自YashanDB官网,原文内容请见https://www.yashandb.com/newsinfo/7664890.html?templateId=1718516【标题】误配置SYSTEM级别的STATISTICS_LEVEL参数为ALL导致数据库性能下降【问题分类】数据库性能下降【关键字】STATISTICS_LEVEL数据库性能freebufferwait等待......
  • 高性能计算-Intel IPP库ARM移植示例(20)
    1.简介Intel®IntegratedPerformancePrimitives,即英特尔集成性能基元(简称IPP),为信号、数据和图像处理特定应用领域,提供simd优化的一组全面的函数库。本项目将对exp、cos、sin、tone、Triangle函数用NEON向量化指令实现ARM移植版本,有串行和向量化两个版本。计算使用泰勒展开......
  • 揭秘语言模型后训练:指令微调、偏好调优与强化学习的深度解析
    揭秘语言模型后训练:指令微调、偏好调优与强化学习的深度解析前言1.什么是后训练?2.指令微调(InstructionFine-Tuning,SFT)概念训练流程实践示例:TÜLU33.偏好调优(PreferenceTuning,DPO)概念关键步骤DPO的优势实践示例:TÜLU34.强化学习与可验证奖励(RLVR)概念RLVR流......
  • 高性能实时分析型数据库Doris
    ApacheDoris是一个基于MPP的现代化、高性能、支持实时的分析型数据库,以极速易用的特性被业内所熟知。以下是对它的详细介绍:发展历程ApacheDoris最早是诞生于百度广告报表业务的Palo项目,2017年正式对外开源,2018年7月由百度捐赠给Apache基金会进行孵化,2022年6月成功从Apache孵化......
  • 全文检索Solr的基本概念、安装配置、应用集成以及性能优化
    一、Solr简介Solr是一个开源的企业级搜索平台,它建立在ApacheLucene库之上,提供了强大的全文检索功能以及诸多便于使用和管理的特性。(一)特点高效索引与检索:能够快速地对大量文档进行索引构建,并且在检索时可以高效地找到匹配的结果,支持复杂的查询语法,比如布尔查询、模糊查询、范......