通过instruments的Time Profiler分析,优化后启动速度有明显提升,didFinishLaunchingWithOptions耗时在75ms左右(iPhone6s iOS10.3.3)

启动耗时..png
其中目前耗时最多的是快捷密码验证页(PAPasscodeViewController)的创建&布局,其次是DTLaunchViewControlle里对是否要显示广告页的判断代码。可以看到PAPasscodeViewController的viewDidAppear耗时了78ms,但已经没有太大关系,此时用户已经看到了页面,准备去验证指纹/密码了。
总结&后续规划
1. 总结
总结起来,好像启动速度优化就一句话:让系统在启动期间少做一些事。当然我们得先清楚工程里做的哪些事是在启动期间做的、对启动速度的影响有多大,然后case by case地分析工程代码,通过放到子线程、延迟加载、懒加载等方式让系统在启动期间更轻松些。
2. 后续规划
2.1. 替代部分庞大的库,采用更轻量级的解决方案。
2.2. 整理代码,去除重复的实现,避免出现功能重复的类&分类&方法。
2.3. 梳理和移除已经下线的业务涉及的类&分类&方法。
2.4. 监控好灰度版本启动速度的变化趋势,尽早发现&解决拖慢启动速度的问题。
注:相关教程知识阅读请移步到IOS开发频道。










