我想通过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很快(低于.25秒)。如果我休眠3秒或更长时间,休眠后的第一个请求就会很慢。但如果我的睡眠时间少于3秒,那就快了。你知道为什么吗?
发布于 2010-08-24 22:44:02
可能有许多原因:在第一次请求时,TCP栈需要解析google.com的DNS名称,然后将其缓存。此外,它可能需要一些时间来初始化3G网络。
发布于 2010-08-31 02:30:49
我找不到一个链接来支持我的理论,但在2010年的WWDC2010上,苹果的工程师们反复强调iPhone的功耗,指出3G规范要求无线电在最后一次传输后一段时间内保持高功率状态。我的猜测是,等待3秒会使无线电处于空闲状态,而下一次传输需要它恢复供电并重新与蜂窝发射塔进行协商。
发布于 2012-12-12 02:58:13
FTP是一种有状态协议,因此通信需要使用initialized.You进行身份验证,并在第一次发送一些信息到server.So时花费更长的时间。
https://stackoverflow.com/questions/3538655
复制相似问题