通过简单的一段代码统计应用启动时间

  • main.m
1
2
3
4
5
6
7
8
9
10
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
CFAbsoluteTime StartTime;
int main(int argc, char * argv[]) {
StartTime = CFAbsoluteTimeGetCurrent();
NSLog(@"开始启动---->%f",StartTime);
...
}
  • AppDelegate.m
#import "AppDelegate.h"

CFAbsoluteTime StartTime;

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  dispatch_async(dispatch_get_main_queue(), ^{
    NSLog(@"完成启动---->%f", CFAbsoluteTimeGetCurrent());
    NSLog(@"启动用时---->%f",CFAbsoluteTimeGetCurrent()-StartTime);
  });

  ...
}  
  • CMD + R,程序运行起来启动时间会第一时间打印出来

  • 原理解释: 这个dispatch_async中提交的工作会在app主线程启动后的下一个run lopp中运行,此时app已经完成了载入并且将要显示第一帧画面,也就是系统会运行到-[UIApplication _reportAppLaunchFinished]之前

阅读原文

本文地址: http://yongqianvip.github.io/2016/05/01/LaunchTime/