我想对我的应用程序的加载时间进行基准测试,但我不确定如何执行此操作。我可以先插入几个NSLog
并比较时间戳。但是我应该把它放在哪里呢?
我应该将第二个日志放在我的根视图控制器viewDidAppear
中,因为这是用户第一次可以使用该应用程序吗?那第一个日志怎么样?我正在考虑applicationDidFinishLaunchingWithOptions:但是这个名字暗示这有点晚了。
任何对教程,工具或其他任何内容的引用都将不胜感激。
答案 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];
开始时间减去结束时间,然后你得到加载时间