美文网首页ios专题iOS开发记录iOS学习开发
iOS首页启动优化 - 冷启动,发现了个疑点

iOS首页启动优化 - 冷启动,发现了个疑点

作者: 终生程序员小松哥 | 来源:发表于2019-01-14 15:21 被阅读28次

参考美团外卖iOS App冷启动治理

对自家影秀城App也做了下启动性能监控。大家可以去搜索下,很多类似文章思路都差不多。

整体思路

pre-main():从按下图标到main函数获得控制权之前的时间。

after-main():main函数获得控制权之后,到看到首页展示。

关于pre-main

这个过程相对我们来讲是黑盒,程序员是触摸不到的,只有明白其原理才能知道优化方案。网上很多自己去看。

性能的测试需要一个测量手段,既然pre-main:

(方法1)编译时打开 DYLD_PRINT_STATISTICS选项,Xcode8,iOS10之后可以看到console打印。

(方法2)美团通过获取进程创建时间点和main()入口点差值来进行测量。这种方法可以获取线上App的测量值。

整个加载过程大概就是程序代码、库、链接、+load..之类的操作;对应优化方案就是减少不必要代码,不必要的库。

关于after-main

这时候正式运行到了我们程序,也方便我们下统计点进行测量和改进。

第一,didFinishLaunchingWithOptions,这个函数中经常会放很多配置选项或启动项。优化方案,找到哪个最影响速度,放到后面去做。

第二,展示的第一张页面:从进入view controller到用户看到页面。优化方案,尽快让用户看到页面;如果从网络加载的东西很多的话,可以分布加载。

针对影秀城App的优化:

在影秀城App里,尝试删除友盟统计、微信分享、微博分享、微信支付、支付宝支付、室内地图导航后,加载速度也就提升了0.1s左右。

didFinishLaunchingWithOptions的耗时本身不大。

首页的展示,要调用4个接口完成;我采用了并行调用接口的方式,可以很快。

对比美团App 和 影秀城App的优化区别:

-- 大厂的App优化集中在didFinishLaunchingWithOptions里干了太多事,但这些都是不同团队开发进入的。如何确定其顺序,以及解决以后再加入的代码,这是个难题。也就是文章里说的如何治理。小公司的App是不存在这个问题的。

-- 大厂为了做到统计启动性能,需要专门的日志。小公司的App就没有这个必要了。

-- 小公司的优化点集中在,移除废代码,以及首页的渲染技巧。

发现了疑点

通过打点发现从main到进入didFinishLaunchingWithOptions的耗时问题。测试了2款机型,结果就更蹊跷了。

iPhone 6,iOS12.1.2 , Xcode10.1 : 从main到进入didFinishLaunchingWithOptions,耗时2s

iPhone 5s,iOS9.3.1,Xcode10.1: 不存在该耗时问题。

搜遍了类似文章,也找了些相关说明,都没有找到答案。要做的事还很多,只能暂时搁置了!

记得避开几个坑:(切记切记)

1,一定要用Release选项进行编译。

2,安装好后就断开和开发电脑的连接。

3,测试的时候,先重启手机,再点开自己的App进行测试。(详情原因请搜索 热启动和冷启动的区别)

手动计时,目测了几款App:淘宝的启动速度很快,依次是微信,微博,美团。当然它们的业务都不同,不能绝对化比较。

总结

性能优化也是一种Bug,也遵循重现问题,定位问题,解决方案的步骤。

1,对于性能问题的重现,难度在于度量,比方如何度量启动速度;

2,定位问题对于性能优化来讲相对简单,也就是甄别出究竟慢在哪里了。

3,解决方案,对于美团外卖这样几百人一起开发的App讲还是有很大困难,如何做好协调工作。

打印冷启动关键参数的样例代码

相关文章

  • iOS首页启动优化 - 冷启动,发现了个疑点

    参考美团外卖iOS App冷启动治理对自家影秀城App也做了下启动性能监控。大家可以去搜索下,很多类似文章思路都差...

  • 如何实现 iOS App 的冷启动优化

    如何实现 iOS App 的冷启动优化如何实现 iOS App 的冷启动优化

  • 如何实现 iOS App 的冷启动优化

    如何实现 iOS App 的冷启动优化如何实现 iOS App 的冷启动优化

  • IOS性能优化

    启动优化 1、ios启动分为冷启动与热启动2、app冷启动分为三个阶段:dyld、runtime、main2、通过...

  • iOS 性能优化三

    主要讲解APP冷启动的优化 iOS 性能优化一iOS 性能优化二iOS 性能优化三 1. APP 启动的分类 冷...

  • iOS启动优化

    iOS App启动优化 iOS启动可分为冷启动和热启动两种冷启动:app为kill状态下点击app启动热启动:ap...

  • iOS性能优化篇小结(二)

    iOS性能优化篇小结(一) 4. APP启动优化 APP启动可以分为2种: 冷启动:从零开始启动APP 热启动:A...

  • 性能优化 - 启动时间

    应用的启动分为:冷启动,暖启动和热启动。其中冷启动是我们优化的重点,优化冷启动可能会同时优化暖启动和热启动。 冷启...

  • 启动优化的原理以及操作

    首先我们要知道,启动是分为冷启动和热启动的。启动优化主要就是优化冷启动的时间。冷启动又可以分为两个部分:pre_m...

  • iOS 二进制重排

    iOS 应用启动优化 1.启动 1.1 冷启动 冷启动指的是第一次打开应用,或者打开很多其他应用后再打开该应用也可...

网友评论

    本文标题:iOS首页启动优化 - 冷启动,发现了个疑点

    本文链接:https://www.haomeiwen.com/subject/qawddqtx.html