對于 main() 階段,主要測量的就是從 main() 函數開始執行到 didFinishLaunchingWithOptions 方法執行結束的耗時。
// 第一步:在 main() 函數里用變量 MainStartTime 記錄當前時間
CFAbsoluteTime MainStartTime;
int main(int argc, char * argv[]) {
MainStartTime = CFAbsoluteTimeGetCurrent();
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
// 第二步:在 AppDelegate.m 文件中用 extern 聲明全局變量 MainStartTime
extern CFAbsoluteTime MainStartTime;
// 第三步:在 didFinishLaunchingWithOptions 方法結束前,再獲取一下當前時間,與 MainStartTime 的差值就是 main() 函數階段的耗時
double mainLaunchTime = (CFAbsoluteTimeGetCurrent() - MainStartTime);
NSLog(@"main() 階段耗時:%.2fms", mainLaunchTime * 1000);