概述
App启动时间是检测App的一个重要的性能指标,启动流程一般分为 pre-main(main函数之前) 和 main 函数之后,这里只关注pre-main的启动耗时,也是最容易被大家忽略的地方;
熟悉 dyld 加载流程的同学应该都知道 +load 函数是在 pre-main 执行的,我们经常会把一些比如 method swizzling、或者初始化操作放在 +load 中,确不知过多的初始化任务放在 +load 函数中是App启动慢的重要因素之一;
App启动优化是个大工程,影响因素也很多,这里只分享一个三方工具类,来检测项目中 +load 函数的耗时,然后就可以针对耗时的方法去优化;
使用方法
或者使用pod引入的方式
pod 'A4LoadMeasure', configuration: ['Debug']
这里在类中增加 +load 方法,并使用sleep函数模拟复杂任务
//ViewController 类
@implementation ViewController
+ (void)load {
sleep(3);
}
//.......
//TestObj 类
@implementation TestObj
+ (void)load {
sleep(2);
}
启动工程,输出:
Load Measure Initializer Time: 17.734051 milliseconds
Total load time: 5002.184987 milliseconds
ViewController load time: 3001.129985 milliseconds
TestObj load time: 2001.055002 milliseconds