如何测试应用程序的加载时间?

时间:2012-10-20 17:02:55

标签: iphone objective-c ios performance cocoa-touch

我想对我的应用程序的加载时间进行基准测试,但我不确定如何执行此操作。我可以先插入几个NSLog并比较时间戳。但是我应该把它放在哪里呢?

我应该将第二个日志放在我的根视图控制器viewDidAppear中,因为这是用户第一次可以使用该应用程序吗?那第一个日志怎么样?我正在考虑applicationDidFinishLaunchingWithOptions:但是这个名字暗示这有点晚了。

任何对教程,工具或其他任何内容的引用都将不胜感激。

3 个答案:

答案 0 :(得分:3)

就监管机构而言,“启动时间”是从main被调用到applicationDidFinishLaunching:返回YES所需的时间。如果这个时间太长,你的应用程序会被“坏食物”异常杀死。

您可以控制并影响用户的代码部分从application:didFinish...(iOS6中的willFinish)开始,如您所说,在第一个视图控制器的viewDidAppear上结束。记录这些方法的开头就可以了。

Here是应用程序启动和生命周期阶段的参考。

答案 1 :(得分:3)

您可以通过这种方式记录第一帧的启动时间:

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);

}

如果您有权访问2012 WWDC个视频,我建议您在ios App性能和视频会议上使用优秀的视频会话235。响应。他们有一节介绍如何确定加载时间。

答案 2 :(得分:1)

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];

开始时间减去结束时间,然后你得到加载时间