APM

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

1. 启动优化

关键: 找到耗时的原因
t总 = t1 (premain) + t1(main之后)
t1: premain
过程:
.先加载可执行文件(所有.o文件的集合)
.加载动态链接库(所有系统的framework, 比如UIKit、Foundation等都是以动态链接库 的方式集成进App中的)
tip: 动态库好处: a.在内存中只有一份, 所有进程共享系统库
b.相比静态库, 编译时不需要打进去
. oc类的加载/初始化 +load 方法
优化:
.减少不不要的framework
. framework应当设为optional和required (支持的所有iOS系统版本)
.合并或删减一个oc类, 清理没用的类, 使用Appcode检查
4删减无用的静态变量
5删减无用的废弃的方法
6不必要在+load方法中做的事 延迟到+initialize中 t2: main() 之后
过程:
.初始化相关服务(三方库等)
.显示首页(优化也是围绕着如何快速展现首页来做)
优化:
. 代码方式加载首页视图, 不用xib
. 异步:启动时的网络请求
.异步: 初始化第三方服务

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细致验证 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.图片/音视频资源的无数压缩, 去除无用的资源

apm 应用性能管理(启动优化/ 掉帧卡顿/ 耗电/ 内存泄漏等)的更多相关文章

  1. React-Native 之 GD (十九)TabBarItem 逻辑完善 / 关闭筛选菜单滑动手势 / Navigator 掉帧卡顿问题处理

    1.TabBarItem 逻辑完善 那么为了更好的用户体验,我们这边还需要来处理一下点击 TabBarItem 的一下细节,那就是当用户点击 Item 时,可能只是单纯的想进行页面的 切换或者置顶操作 ...

  2. Unity3D_NGUI_性能优化实践_CPU卡顿

    http://gad.qq.com/college/articledetail/7083468 博尔特以9.58秒创造了百米世界纪录,假设他是跑酷游戏的角色,卡顿一帧就足以把冠军拱手让人. Unity ...

  3. 4.Android App 优化之消除卡顿

    转载:http://gold.xitu.io/post/582583328ac247004f3ab124 1, 感知卡顿 用户对卡顿的感知, 主要来源于界面的刷新. 而界面的性能主要是依赖于设备的UI ...

  4. 解决MyEclipse启动慢,使用卡顿问题

    卡顿原因: 1.启动的服务和插件过多,导致启动和运行缓慢,电脑配置较差的直接会卡死没有响应 2.软件运行内存设置不足,导致没有足够的空间运行软件,致使软件卡顿 解决方法: windows --> ...

  5. IDEA启动缓慢且运行卡顿

    最近在自己的机器上用IDEA时启动竟然要半分钟,且启动后索引操作居然还需要等待很久.并且每次通过IDEA执行JAVA项目在启动和关闭时都会发生卡顿.明明机器的配置不错,这是为啥呢? 这是因为为IDEA ...

  6. Win10《芒果TV》商店版更新v3.2.1:优化手机版卡顿,修复推送故障

    此版本是小版本更新,主要是修复上一版本发布后暴露的部分体验问题,以免进一步扩大影响,小幅修复后更新上线. 芒果TV UWP V3.2.1更新内容清单: 1.优化和修复列表预加载机制的本地保存丢失导致的 ...

  7. dsp28377控制DM9000收发数据——第三版程序,通过外部引脚触发来实现中断接受数据,优化掉帧现象

    //-------------------------------------------------------------------------------------------- - //D ...

  8. 优化phpstorm运行卡顿问题!

    在PHPSTORM中点击导航菜单:Help -> Edit Custom VM Options 如果是第一次点击,会提示是否新建配置文件,点击“是” 在弹出的编辑框末尾加上以下配置 -Dawt. ...

  9. 优化phpstorm运行卡顿问题

    在PHPSTORM中点击导航菜单:Help -> Edit Custom VM Options 如果是第一次点击,会提示是否新建配置文件,点击“yse” 在弹出的编辑框末尾加上以下配置 -Daw ...

随机推荐

  1. Ubuntu下编译c文件时,遇到math.h头文件不能编译问题

    以前都是在VC或者VS中编写c语言程序,今天尝试在Ubuntu下试着编写了一个简单的画正弦函数的程序,用到了头文件math.h,但是编译的时候报错了: 经查资料后才知道,数学函数位于libm.so库文 ...

  2. jmeter:清除本地指定目录下的所有类型文件

    1,创建一个sampler 2,要在本地有一个目录的文件 3,直接上代码 String path = "C:\\临时文件\\test111" ;         File file ...

  3. app本身性能测试简介

    app 性能测试指标: 1.启动时间 2.内存占用量,内存警告次数 3.页面渲染时间,刷新帧率 4.网络请求时间.流量消耗 5.UI阻塞次数,不可操作时长,主线程阻塞超过400毫秒次数 6.耗电功率 ...

  4. 2019Flutter面试题最新整理大全(含答案)

    一.前言2019年行将结束,也该规划一下自己的职业生涯了:是选择继续从事Android(Android的话已经火了几年了,现在算是进入寒冬了,需要考虑清楚)?还是学习新的跨平台开发Flutter技术? ...

  5. NHibernet 事务 修改操作,事务没提交,数据库数据却同步(修改)了

    Nhibernet 缓存 由于查询出来的数据和缓存关联,更新之后就算事务没执行提交操作,数据库依旧会更新,解决方法, 清空缓存,实例不和缓存关联,如下面标红代码 public bool UpdateT ...

  6. psfaddtable - 添加一个Unicode字符表到控制台字体中

    总览 psfaddtable 字体文件 表文件 [输出文件] 描述 Psfaddtable 命令融合了 字体文件 提供的 .psf 格式的控制台字体和 表文件 提供的Unicode字符表, 生成一个带 ...

  7. ed-tue-robotics

    https://github.com/tue-robotics/ed ubuntu16.04 安装libsdformat4-dev ,libsdformat4 1./usr/include/sdfor ...

  8. 五 shell 变量与字符串操作

    特点:1 shell变量没有数据类型的区分 2 Shell 把任何存储在变量中的值,皆视为以字符组成的“字符串”.    3  设定的变量值只在当前shell环境中有作用    4   不能以数字开头 ...

  9. 四、Angular新建组件和使用

    1.新建组件命令 ng component 组件路径 如果报错换成 ng generate component 组件路径 2.组件 ts 文件详解 3.组件会自动引入到app.mudule.ts里面 ...

  10. CentOS7 安装xen(在虚拟机上成功,实体机测试死机!)

    此文章只做操作记录,其中有些地方可能漏了!!我只贴出自己的操作过程!其它有差别的地方请自己网上查找参考! 只有在全虚拟化下才能安装Windows,这就需要有硬件支持,并在BIOS中开启Virtuali ...