2010-08-21 17 views
5

मैं एक आईफोन से 3 जी नेटवर्क पर 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 तेज हैं (25 सेकंड के तहत)। अगर मैं 3 या अधिक सेकंड के लिए सोता हूं, तो नींद के बाद पहला अनुरोध धीमा है। लेकिन अगर मैं 3 सेकंड से कम समय तक सोता हूं, तो यह तेज़ है। कोई विचार क्यों?

उत्तर

2

कई कारण हो सकते हैं: पहले अनुरोध पर टीसीपी स्टैक को google.com के DNS नाम को हल करने की आवश्यकता है, उसके बाद इसे कैश किया गया है। इसके अलावा, इसे 3 जी नेटवर्क शुरू करने के लिए कुछ समय की आवश्यकता हो सकती है।

2

मुझे अपने सिद्धांत का समर्थन करने के लिए कोई लिंक नहीं मिल रहा है, लेकिन डब्ल्यूडब्ल्यूडीसी 2010 में, ऐप्पल इंजीनियरों ने बार-बार आईफोन पर बिजली की खपत पर बल दिया, जिसमें कहा गया कि 3 जी स्पेक की आवश्यकता है कि रेडियो को उच्च शक्ति राज्य में रखा जाए अंतिम संचरण के बाद समय। मेरा अनुमान है कि 3 सेकंड प्रतीक्षा करने से रेडियो निष्क्रिय हो जाता है, और अगले ट्रांसमिशन को बैक अप लेने और सेल टॉवर के साथ फिर से बातचीत करने की आवश्यकता होती है।

1

एफ़टीपी एक राज्यव्यापी प्रोटोकॉल है, इसलिए संचार को प्रारंभ करने की आवश्यकता है। आपको प्रमाणीकरण करने और सर्वर को कुछ जानकारी भेजने की आवश्यकता है। इसलिए पहली बार इसमें अधिक समय लगता है।