冷启动

冷启动就是App被kill掉以后一切从头开始启动的过程。

热启动

当用户按下home键的时候,iOS的App并不会马上被kill掉,还会继续存活若干时间。理想情况下,用户点击App的图标再次回来的时候,App几乎不需要做什么,就可以还原到退出前的状态,继续为用户服务。这种持续存活的情况下启动App,称为热启动。

冷启动比热启动重要

苹果提供的测量启动耗时方法 

在Xcode的菜单中选择Project→Scheme→Edit Scheme,然后找到 Run → Environment Variables →+,添加name为DYLD_PRINT_STATISTICSvalue为1的环境变量。

iOS开发-测量APP启动耗时_启动时间

APP运行起来后: 

iOS开发-测量APP启动耗时_初始化_02

main()函数之前 

总共使用了52.27ms 

加载动态库耗时: 15.85ms 

指针重定位耗时: 5.68ms 

ObjC类初始化耗时: 7.10ms 

各种初始化耗时: 23.58ms

在初始化耗费的23.58ms中,用时最多的三个初始化是 

libSystem.B.dylib  

libBacktraceRecording.dylib  

libMainThreadChecker.dylib 

ModelIO 

main()函数之后 

从main()函数开始至applicationWillFinishLaunching结束,我们统一称为main()函数之后的部分。 

本例子是启动了空的APP,所以这部分没有耗时。实际上很多APP在main()函数之后这部分启动时间上要做优化。


------------------越是喧嚣的世界,越需要宁静的思考------------------ 合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。 积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。蟹六跪而二螯,非蛇鳝之穴无可寄托者,用心躁也。