Objective c NSURL连接优化
我试图通过iPhone了解3G网络上的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
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是一种有状态协议,因此需要初始化通信。您需要进行身份验证并向服务器发送一些信息。因此,第一次传输需要更长的时间