| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Flutter 性能优化 Tips(1),2021年Android开发实战 -> 正文阅读 |
|
[移动开发]Flutter 性能优化 Tips(1),2021年Android开发实战 |
在运行app的过程中,观察爆红的地方和触发场景,进行分析。 分析思路
提高流畅性的策略
内存优化在内存优化方面,我们的目标是希望减少应用内存占用,减少被系统杀死的概率,同时尽可能的避免内存泄露,减少内存碎片化。 内存优化策略
如何获取内存状态Dart 提供了一个性能检测工具Observatory,我在最后一部分会进行详细介绍 优化证明优化证明的意义性能优化不像其它的开发需求只要完成功能即可,它需要通过统计和数据来证明优化的效果。比如帧率有了多少提高?CPU占用率降低了多少?内存占用减少了多少?对比其它优化策略,哪个优化效果好? 优化证明的流程[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lXtaWZV1-1630843885559)(https://user-gold-cdn.xitu.io/2018/12/13/167a744056e6fa16?imageView2/0/w/1280/h/960/ignore-error/1)] 举个例子以检查流畅性为例 1. 在profile模式下运行并开启Performance Overlay,整体测试app2. 找到帧率报红色的模块3. 把页面孤立出来,并多次测量,并得到baseline(参照)帧率数据。比如长列表页面出现了卡顿,我们可以用TestDriver写一个ListView滑动的性能测试(更多参考Flutter gallery)
在命令行下执行以下命令
这个命令会:
Test Driver 将会安装 app 到设备上,再跳转到 Material-GalleryDemoList 页面,做5次滑动列表的操作。执行完成后会借助
4. 优化5. 用步骤3的方法再次测量,对比baseline得出确切的优化效果Flutter 提供的性能调试 API更多可以参考官方文档 性能检测利器 ObservatoryObservatory 是用于分析和调试Dart应用程序的工具。Observatory允许您根据需要查看正在运行的Dart虚拟机(VM),并提供实时,即时的数据报告。您可以使用它来浏览应用程序的很多状态。 打开Observatory有2种方式:
打开Observatory面板,要先选择isolate,表示当前应用。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ztoWFkNc-1630843885564)(https://user-gold-cdn.xitu.io/2018/12/13/167a7440b66f043c?imageView2/0/w/1280/h/960/ignore-error/1)] 主要页面下面是性能优化常关注的几个页面。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZAvFoBys-1630843885565)(https://user-gold-cdn.xitu.io/2018/12/13/167a74409e0c1cb7?imageView2/0/w/1280/h/960/ignore-error/1)] 1. CPU Profile
进入这个页面后要一般需加载个几秒钟,so be patient。图表的下部按cpu占用比例做了一个列表,反映的是函数的调用次数和执行时间(划重点)。一般排在前面的函数(这些函数是?有待学习)都不是我们写的dart代码。如果你发现自己的某个函数调用占比反常,那么可能存在问题。 注:flutter程序的cpu profile和官方文档上的数据展示不太一样,没有VM tags,所以对于百分比的具体含义有待研究。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WruPs9Ls-1630843885566)(https://user-gold-cdn.xitu.io/2018/12/13/167a7440d4531838?imageView2/0/w/1280/h/960/ignore-error/1)] 采样过程:它每隔一定时间对isolate做采样,采样的数据存储在一个环形缓冲区(叫做profile),它能存放约2分钟的数据,一旦缓冲区满了,它会用最新的sample替换掉最旧的。
2. Allocation Profile
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dBFM812A-1630843885567)(https://user-gold-cdn.xitu.io/2018/12/13/167a7440e7aade09?imageView2/0/w/1280/h/960/ignore-error/1)] Heap 堆,动态分配的Dart对象所在的内存空间
2. Allocation Profile
[外链图片转存中…(img-dBFM812A-1630843885567)] Heap 堆,动态分配的Dart对象所在的内存空间 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 16:34:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |