apm 应用性能管理(启动优化/ 掉帧卡顿/ 耗电/ 内存泄漏等)

APM

首先查看各个阶段耗时 : (环境变量设置 dyldPRINTSTATISTICS = 1选项,)

 

1. 启动优化

 

复制代码
复制代码
关键: 找到耗时的原因
 t总 = t1 (premain) + t1(main之后)
 t1:   premain
 过程:
  1.先加载可执行文件(所有.o文件的集合)
  2.加载动态链接库(所有系统的framework, 比如UIKit、Foundation等都是以动态链接库    的方式集成进App中的)
  tip: 动态库好处:  a.在内存中只有一份, 所有进程共享系统库 
      b.相比静态库, 编译时不需要打进去
  3. oc类的加载/初始化 +load 方法
 优化:
  1.减少不不要的framework
  2. framework应当设为optional和required (支持的所有iOS系统版本)
  3.合并或删减一个oc类, 清理没用的类, 使用Appcode检查
  4删减无用的静态变量 
  5删减无用的废弃的方法
  6不必要在+load方法中做的事 延迟到+initialize中

 t2: main() 之后 
 过程:
  1.初始化相关服务(三方库等)
  2.显示首页(优化也是围绕着如何快速展现首页来做)
 优化:
  1. 代码方式加载首页视图, 不用xib
  2. 异步:启动时的网络请求 
  3.异步: 初始化第三方服务
复制代码
复制代码

 

 

2.卡顿优化

 

复制代码
复制代码
一.卡顿检测
1.最直观的是FPS的掉帧情况
2.timeProfile动态检测耗时方法
3.开发工具,动态线上检测主线程的卡顿情况 二.优化
CPU
1.异步处理耗时操作,(网络耗时,计算耗时),也要同时控制最大并发数
2.接口的缓存处理,(同图片缓存原理,先显示缓存,后展示网络数据)
3.image的size= imageView的大小
4.tableView的相关优化    
5.layer替代相关无事件的UIView


GPU
1.减少图层混合& 离屏渲染
2.设置不透明度opaque=YES

复制代码
复制代码

 

 

 

 

  3.耗电/耗网络

复制代码
复制代码
 2.1 Energ Impact 查看概况
 2.2细致验证 instrument - energy log  (+配合timeProfile 抓看代码运行细节)

 优化: 
  a.cpu优化, 尽可能将次cpu功耗, 尽可能减少定时器的使用
  b.网络请求优化 ,减少长连接等
  c.定位优化   - 及时关闭
  d.硬件检测优化  - 加速计 陀螺仪等吗, 及时关闭
复制代码
复制代码

 

4. 内存泄漏 

复制代码
复制代码
一.检测
Analyze c函数的释放 Leaks Acllocations 需要动态运行去观察 第三方的MLeakFinder pop或者dismiss 3秒后调用willDealloc看时候会中断言
二.优化
1.注意循环引用,delegate, block, timer
2.for循环产生大量的对象,通过加autoReleasePool 及时释放
复制代码
复制代码

 

5.包体积的优化

 

一.可执行文件
1.编译器的优化,选项的设置
2.静态库的二次打包
3.去除无用的类文件 二.资源 1.图片/音视频资源的无数压缩, 去除无用的资源
posted @   ios_福  阅读(301)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示