Time Profiler用于异步请求

时间:2013-05-05 02:57:18

标签: ios objective-c xcode-instruments

您好我想弄清楚如何使用Time Profiler进行异步请求。目前,我使用NSDate和NSTimeInterval来跟踪请求返回所需的时间。以下是我现在正在做的代码:

NSDate * start = [NSDate date];
[FBRequestConnection startWithGraphPath:[NSString stringWithFormat: @"%@/photos?fields=images", albumName] completionHandler:^(FBRequestConnection *connection, FBGraphObject *result, NSError *error) {
    NSTimeInterval timeBetweenDates = [[NSDate date] timeIntervalSinceDate:start];            
    NSLog(@"Facebook Album Request Time: %f", timeBetweenDates);
        ...

似乎应该有办法做这个Time Profiler。时间分析器是否提供了这种方法?另外,如何获取在异步请求中运行的事件的配置文件?

1 个答案:

答案 0 :(得分:0)

不,Time Profiler不会测量代码中两点之间经过的时间。它会对您的线程在不同点上所做的事情进行抽样。在给定的采样周期内,它会告诉您线程如何分配时间,这与代码中两点之间经过的时间不同。此外,它具有统计性​​质。

您可以将DTPerformanceSession框架用于start and stop profilingemit flags,但我不确定这是否会实现您的目标。

至于“如何获取在异步请求中运行的事件的配置文件”,时间分析器应该已经有效地显示了这一点。但是,你应该认识到答案可能是“没有”。异步API通常是异步的,因为它们必须等待一些外部事件,而在它们等待时,您的代码甚至框架都无所作为。例如,如果将请求发送到远程服务器并且框架正在等待回复,则它们将处于空闲状态,直到服务器发送回复为止。