项目调优iOS项目性能优化

iOS 项目启动时间的优化

2018-05-17  本文已影响130人  请叫我大树先生

17年初开始接手公司项目,到七月份上架的项目,再迭代到18年五月的时候发现项目的启动时间有点难以接受,用TimeProfiler检测的话是2.2 到2.7s不等,优化App启动时间已经排到紧急的事情上了。

 App启动时间分为pre-main 和 main 函数到第一个界面渲染完成。

对于pre-main这边的时间查看可以用官方提供的方法(如图一),添加一个DYLD_PRINT_STATISTICS 并设置值为1

图一

然后运行项目,再控制台就可以看到图二的输出

图二

这个阶段的优化,笔者因为水平原因,暂且搁置,主要讨论下第二个阶段,也就是main 函数到第一个界面渲染完成时间的优化。
当然,优化之前我们需要先确认下项目中究竟什么地方拖慢了App启动,这里用到的工具xcode自带的工具Instrument中的TimeProfiler(使用方法的话就不做过多的赘述)

先说说笔者自己项目中存在的问题,因为一直是独立开发,然后笔者习惯于每个三方sdk都新建一个appdelegate的分类,然后在分类里写好初始化方法并在appdelegate中调用。

而在appdelegater中的application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions中,笔者将初始化首页、初始化SDK以及需要检测的一些接口请求都堆积在这,其实大可不必的。

为此我新建了一个控制类,将不需要第一时间在 didFinishLaunchingWithOptions调用的方法抽离出来,只保留真的第一时间需要加载的,并且删除各个三方sdk中的appdelegate的分类,并将这些不需要第一时间调用的方法放在首页的viewDidAppear中异步加载调用,因为这里不会影响到app启动的时间,删除appdelegate的分类的原因是因为分类太多的话会影响初始化加载的速度。

实际测试中。删除前和删除后在笔者项目中启动时间还是减少了的。

至此,笔者项目的启动时间从2秒多降低到了0.6s左右,暂时可以满足要求,后期再做更多的优化吧。

上一篇 下一篇

猜你喜欢

热点阅读