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

我的性能优化经验

专业方向:App cpu/memory/gpu/流畅度/响应时间的优化,Anr,Framework CarPowerManagementService模块的(STR),从0~1完成性能监控体系搭建,完成3大版本迭代高质量性能交付

响应时间:

  • 冷启动:预编译,预加载,懒加载
  • 热启动:启动阶段boost,分析主线程耗时,binder调用
  • 开机启动:裁剪,合理调整app启动顺序
  • 点击响应慢:UIBlockMonitor检测主线程卡顿;点击卡死(anr和假卡死)

流畅性:

  • 列表流畅:通讯录滑动卡顿(数据结构不同),分类滑动卡顿(recyclerview嵌套framgment),歌单列表滑动卡顿(纵向列表带上横向列表)
  • 视频流畅:4路dvr和360环视卡顿(cpu和gpu tunning),视频卡(底层解码器问题,从log(QC2Comp入手
  • 系统卡顿:startService风暴,Binder风暴,内存低或smmu fault等资源不足导致卡死
  • 跟手性:从trace找到Unity车模异常耗时任务

CPU:

  • 组件:marqueue,shadowContainer

  • 动画优化:

属性动画:修改属性动画帧率

自定义动画: VoicePlayerView 定时器计算并请求绘制

旋转动画:降帧,降速,降renderthread cpu占用

  • gc:延迟gc,修改gc 阈值,对象池缓存(减少内存抖动)
  • 业务架构优化:音乐随动,车设和后排屏

Memory:

24小时无泄露,App小于700M

  • 抓取分析native,java,显存,window,fd内存泄露
  • 建立慢速,快速泄露内存抓取机制

Memory分析工具

监控工具

项目经验

Native泄露

perffeto,raphale,androidstudio

map 快速泄露

Java泄露

Hprof

HashMap,Bitmap,Service,Binder,webview泄露

显存泄露

读bufinfo

camera多次打开失败,Opengl context 未释放导致

Window泄露

Dumpsys 、读bufinfo

弹出大量一样的window

Unity泄露

UnityMemoryProfiler

桌面快速泄露

gpu:占用率,优先级,带宽优化

3年职业规划

短期:

framework层面优化:禁止app自启动、根据系统资源动态调节最大缓存数量

性能工具优化:

【Hprof 压缩(500M以上展示不出来),自动扫描jni内存泄露,bugreport优化(传入pid或调用关键用户进程的调用栈),重复log打印detecter(接入自动化监控)】

长期:

  • bug智能诊断(bug自动归类),cpu调优,低fps监控,native内存工具
  • cgroup调优,内存踩踏分析,native内存泄露工具建设 https://zhuanlan.zhihu.com/p/371527210

(热启动优化)

  • Android系统层面的优化,Linux 内核层面优化

更详细性能优化方法:欢迎订阅 “Android性能优化”   专栏,一起成长

http://www.lryc.cn/news/506480.html

相关文章:

  • XSLT 编辑 XML
  • 数智读书笔记系列010 生命3.0:人工智能时代 人类的进化与重生
  • Transfomer的各层矩阵
  • 代码随想录第51天
  • 基础库httpx的使用
  • c++中如何保持结构体的线程安全?3D坐标的线程安全:从理论到最优解
  • Zabbix6.0升级为6.4
  • 答题考试系统v1.6.1高级版源码分享+uniapp+搭建测试环境
  • 【Lua热更新】下篇 -- 更新中
  • 射频测试入门学习(三)——程控仪器是怎样和电脑连接通信的
  • 并发控制之Semaphore
  • 第R3周:RNN-心脏病预测
  • 【数值特性库】入口文件
  • RestTemplate实时接收Chunked编码传输的HTTP Response
  • GIT区域介绍及码云+GIt配置仓库
  • 网络安全怎么学习
  • PugiXML,一个高效且简单的 C++ XML 解析库!
  • Linux设备树的驱动开发
  • 连锁?下沉?AI?2025年餐饮新活力!
  • Javascript中如何实现函数缓存?函数缓存有哪些应用场景?
  • 子页面访问父页面
  • 芯片级IO (Pad) Ring IP Checklist
  • 计算机毕业设计论文指导
  • Electron-Vue 开发下 dev/prod/webpack server各种路径设置汇总
  • Vue.js前端框架教程9:Vue插槽slot用法
  • 初学stm32 --- NVIC中断
  • Jest 入门指南:从零开始编写 JavaScript 单元测试
  • 【Java Web】Axios实现前后端数据异步交互
  • React 第十七节 useMemo用法详解
  • 鸿蒙项目云捐助第十五讲云数据库的初步使用