可以在Scheme 中添加环境变量DYLD_PRINT_STATISTICS
WWDC 2016 Session 406优化应用程序启动时间详细介绍了每个步骤以及改进时间的提示,以下是简要的总结说明:
- dylib loading time 动态加载程序查找并读取应用程序使用的依赖动态库。每个库本身都可能有依赖项。虽然苹果系统框架的加载是高度优化的,但加载嵌入式框架可能会很耗时。为了加快动态库的加载速度,苹果建议您使用更少的动态库,或者考虑合并它们。
建议的目标是六个额外的(非系统)框架。
-
Rebase/binding time 修正调整镜像内的指针(重新调整)和设置指向镜像外符号的指针(绑定)。为了加快重新定位/绑定时间,我们需要更少的指针修复。
如果有大量(大的是20000)Objective-C类、选择器和类别的应用程序可以增加800ms的启动时间。
如果应用程序使用C++代码,那么使用更少的虚拟函数。
使用Swift结构体通常也更快。 -
ObjC setup time Objective-C运行时需要进行设置类、类别和选择器注册。我们对重新定位绑定时间所做的任何改进也将优化这个设置时间。
initializer time 运行初始化程序。如果使用了Objective-C的 +load 方法,请将其替换为 +initialize 方法。
网友评论