iOS性能优化-App启动优化

2021-08-17  本文已影响0人  沉淀纷飞

  在iOS日常开发过程中常常遇到APP启动过于缓慢,那我们如何去优化解决它呢?要想解决这个问题首先我们需要了解APP启动过程中做了什么东西,在了解整个过程之后我们在启动的每一步寻找方案。

虚拟内存

  早期计算机数据访问,是访问物理内存,直接访问物理地址。但是这种方案有两个明显的缺点:

APP启动

  APP的启动分冷启动和热启动
冷启动:当手机内存中不包含APP任何数据的时候,第一次启动为冷启动。重启手机打开应用可达到冷启动效果。
热启动:冷启动意外
我们研究的启动优化,其实是针对冷启动。这个过程分为两个阶段:

pre-main加载优化

  通过配置项目scheme添加环境变量DYLD_PRINT_STATISTICS控制台可以打印出pre-main加载过程各个阶段耗时情况


控制台打印出的结果如下

  下面我们探讨下各阶段加载的意义
dylib loading:此过程主要加载动态库
rebase:偏移修正,可执行文件内部所有的方法、函数调用,都有一个地址,这个地址是其实是一个偏移地址。一旦在运行时刻(即运行到内存中),每次系统都会随机分配一个ASLR(地址空间布局随机化)地址值,那么函数的实际地址为ASLR地址+便宜地址
binding:符号绑定,绑定是给符号赋值的过程
ObjC setup:加载OC对象过程
initializer:加载load方法和构造函数
总结:
1、项目中尽量少的使用动态库,超过6个动态库时尽量合并
2、避免创建不必要的OC类
3、避免在load方法里面处理不必要的业务
4、尽量少使用C++的构造函数

main函数以后加载优化

  在Appdelegate 里面didFinishLaunching方法里面通常我们会放些数据库初始化、环境配置、主题配置、第三方配置、设置根试图控制器等业务。
1、要想提高启动速度我们在此阶段需要优化此阶段业务代码,非必须的业务,不调用或延时调用。
2、使用多线程,将不影响启动过程的业务处理放在子线程。初始化流程,使用懒加载方式。
3、页面的构建使用纯代码,少使用故事版。

上一篇下一篇

猜你喜欢

热点阅读