2

我想对我的应用程序的加载时间进行基准测试,但不知道该怎么做。我可以先插入几个NSLogs 并比较时间戳。但是我应该把这些放在哪里?

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

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

4

3 回答 3

3

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

受您控制并影响用户的代码部分从application:didFinish...willFinish在 iOS6 中)开始,如您所说,在您的第一个视图控制器的 viewDidAppear 结束。在这些方法开始时记录日志会很好。

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

于 2012-10-20T17:09:30.727 回答
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);

}

如果您可以访问这些视频 - 我建议您参加有关 ios App 性能和响应能力2012 WWDC的精彩视频会议。235他们有一个关于如何测量加载时间的部分。

于 2012-10-20T17:24:04.727 回答
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];

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

于 2012-10-23T02:03:20.583 回答