Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSURL连接优化_Objective C_Nsurlconnection_Ios - Fatal编程技术网

Objective c NSURL连接优化

Objective c NSURL连接优化,objective-c,nsurlconnection,ios,Objective C,Nsurlconnection,Ios,我试图通过iPhone了解3G网络上的NSURLConnection性能。我有以下测试代码 -(void)doTest2 { max = 5; NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; NSURLRequest *request2 = [[[NSURLRequest alloc] initWithURL:url] autorelease]; NSURLConnection

我试图通过iPhone了解3G网络上的
NSURLConnection
性能。我有以下测试代码

-(void)doTest2 {
     max = 5;
     NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
     NSURLRequest *request2 = [[[NSURLRequest alloc] initWithURL:url] autorelease];  
     NSURLConnection *conn=[[NSURLConnection alloc] initWithRequest:request2 delegate:self];  
     self.startDate = [NSDate date];
     if (conn)   
     {  
        receivedData = [[NSMutableData data] retain];  
     }  }   

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {  
       self.endDate = [NSDate date];
       NSTimeInterval interval = [self.endDate      timeIntervalSinceDate:self.startDate];
       NSLog(@"Time:%f Size:%u", interval, [receivedData length]);
      [receivedData release];  

       count = count + 1;
       if (count == max) { 
          count = 0;
          sleep(3);
       }
       self.doTest2;}

第一个请求很慢(超过1秒)。请求2-5的速度很快(小于0.25秒)。如果我睡眠3秒或更长时间,则睡眠后的第一个请求会变慢。但是如果我睡不到3秒钟,它就快了。你知道为什么吗?

可能有很多原因:在第一次请求时,TCP堆栈需要解析google.com的DNS名称,然后缓存它。
此外,初始化3G网络可能需要一些时间。

我找不到任何链接来支持我的理论,但在2010年WWDC上,苹果的工程师反复强调iPhone的功耗,声称3G规范要求在最后一次传输后的一段时间内保持收音机处于高功率状态。我的猜测是等待3秒钟会使无线电空闲,下一次传输需要它重新通电并与基站重新协商。

FTP是一种有状态协议,因此需要初始化通信。您需要进行身份验证并向服务器发送一些信息。因此,第一次传输需要更长的时间