1

嗨,我想弄清楚如何将 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。时间分析器是否提供了一种方法来做到这一点?另外,如何获取在异步请求中运行的事件的配置文件?

4

1 回答 1

0

不,Time Profiler 不会测量代码中两点之间经过的时间量。它对您的线程在各个点所做的​​事情进行采样。在给定的采样周期内,它会告诉您线程如何分配时间,这与代码中两点之间经过了多少时间是一个不同的问题。此外,它本质上是统计的。

您可以使用 DTPerformanceSession 框架来启动和停止分析发出标志,但我不确定这是否能实现您正在寻找的东西。

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

于 2013-05-05T05:56:50.017 回答