一、GPU线程问题
性能图层需要以分析模式启用应用。通过真机进行检测,因为相比发布模式,调试模式增加了额外的检查,这些检查会耗费很多资源。在JIT模式下执行代码效率较低,无法真实反映出它的性能问题。另一方面模拟器使用的是X86指令集,真机是ARM,两种方式二进制执行行为都不一样,一些在X86执行比较快的操作在真机执行会慢,这使得得用真机才能评估出出现的性能问题。
flutter run --profile
性能图层Performance Overlay
性能图层会在当前应用的最上层,以flutter引擎自绘的方式展示GPU和UI线程执行的图表,而每一张图表代表当前线程最近300帧的表现
为了保持60Hz的刷新频率,GPU线程和UI线程执行每一帧耗费的时间都应该小于16ms。
如果GPU线程图表出现红色竖条意味着渲染的图形太复杂,导致无法快速渲染,如果在UI线程中出现意味着
Dart代码消耗了大量资源。需要优化代码执行时间。
两个参数图层渲染开关checkerboardOffscreenLayers和检查缓存的图像开关checkerboardRasterCacheImages
只要在应用初始化方法中将checkerboardOffscreenLayers开关设置成true,分析工具就会自动检测多视图叠加的情况。
适用场景:比较底层的绘制方法,在设涉及需要裁剪或者半透明的场景中间接使用。
从资源角度看,就是渲染图像,这是因为图像的渲染涉及I/O 、GPU储存,以及不同通道数据格式转换,
因此渲染过程中的构建需要消耗大量资源。为了缓解GPU的压力,flutter提供了多层缓存快照。这样widget重建时,就无需重新绘制静态图像了。
检查缓存图像的开关checkerboardRasterCacheImages,来检测在界面重绘时频繁闪烁的图像。
需要静态缓存的图像加到RepaintBoundary中,RepaintBoundary可以确定Widget树的重绘边界,如果图像足够复杂,flutter引擎会自动将其缓存,避免重复刷新。
二
Flutter性能优化:GPU与UI线程分析与优化策略

本文介绍了Flutter应用中GPU线程和UI线程的性能问题及诊断方法。通过启用性能图层,观察图表颜色判断线程瓶颈,如GPU线程的红色竖条表示渲染复杂度过高,UI线程的红色表示Dart代码执行过慢。优化建议包括控制build方法耗时,拆分Widget,避免半透明效果,以及利用RepaintBoundary和缓存策略减少重绘。此外,UI线程的性能问题可能源于复杂的视图构建或同步操作。通过这些优化,可以提升应用的性能和响应速度。
最低0.47元/天 解锁文章
1410

被折叠的 条评论
为什么被折叠?



