首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSURLConnection优化

NSURLConnection优化
EN

Stack Overflow用户
提问于 2010-08-22 03:46:30
回答 3查看 1.9K关注 0票数 5

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

代码语言:javascript
复制
-(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很快(低于.25秒)。如果我休眠3秒或更长时间,休眠后的第一个请求就会很慢。但如果我的睡眠时间少于3秒,那就快了。你知道为什么吗?

EN

回答 3

Stack Overflow用户

发布于 2010-08-24 22:44:02

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

票数 2
EN

Stack Overflow用户

发布于 2010-08-31 02:30:49

我找不到一个链接来支持我的理论,但在2010年的WWDC2010上,苹果的工程师们反复强调iPhone的功耗,指出3G规范要求无线电在最后一次传输后一段时间内保持高功率状态。我的猜测是,等待3秒会使无线电处于空闲状态,而下一次传输需要它恢复供电并重新与蜂窝发射塔进行协商。

票数 1
EN

Stack Overflow用户

发布于 2012-12-12 02:58:13

FTP是一种有状态协议,因此通信需要使用initialized.You进行身份验证,并在第一次发送一些信息到server.So时花费更长的时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3538655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档