我想对我的应用程序的加载时间进行基准测试,但不知道该怎么做。我可以先插入几个NSLog
s 并比较时间戳。但是我应该把这些放在哪里?
我应该将第二个日志放在我的根视图控制器中,viewDidAppear
因为这是该应用程序第一次可供用户使用吗?那么第一个日志呢?我正在考虑 applicationDidFinishLaunchingWithOptions: 但顾名思义,这有点晚了。
任何对教程、工具或任何其他内容的引用将不胜感激。
我想对我的应用程序的加载时间进行基准测试,但不知道该怎么做。我可以先插入几个NSLog
s 并比较时间戳。但是我应该把这些放在哪里?
我应该将第二个日志放在我的根视图控制器中,viewDidAppear
因为这是该应用程序第一次可供用户使用吗?那么第一个日志呢?我正在考虑 applicationDidFinishLaunchingWithOptions: 但顾名思义,这有点晚了。
任何对教程、工具或任何其他内容的引用将不胜感激。
就看门狗而言,“启动时间”是从main
被调用到applicationDidFinishLaunching:
返回 YES 所用的时间。如果这个时间太长,你的应用程序会被“坏食物”异常杀死。
受您控制并影响用户的代码部分从application:didFinish...
(willFinish
在 iOS6 中)开始,如您所说,在您的第一个视图控制器的 viewDidAppear 结束。在这些方法开始时记录日志会很好。
这是应用程序启动和生命周期阶段的参考。
您可以通过以下方式记录第一帧的启动时间:
int main(int argcv, char *argv[])
{
startTime = CFAbsoluteTimeGetCurrent();
}
-(void) applicationDidFinishLaunching(UIApplication *)app {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Launched in %f sec", CFAbsoluteTimeGetCurrent() - startTime);
}
如果您可以访问这些视频 - 我建议您参加有关 ios App 性能和响应能力2012 WWDC
的精彩视频会议。235
他们有一个关于如何测量加载时间的部分。
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
//[dateFormatter setDateFormat:@"hh:mm:ss"]
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
NSLog(@"Date%@", [dateFormatter stringFromDate:[NSDate date]]);
[dateFormatter release];
开始时间减去结束时间然后你得到加载时间