Use magic to narrow the NSURLConnection performance gap to almost nothing :)
Showing
2 changed files
with
13 additions
and
7 deletions
This diff is collapsed. Click to expand it.
| @@ -24,7 +24,8 @@ | @@ -24,7 +24,8 @@ | ||
| 24 | 24 | ||
| 25 | - (void)setUp | 25 | - (void)setUp |
| 26 | { | 26 | { |
| 27 | - [self setTestURL:[NSURL URLWithString:@"http://allseeing-i.com"]]; | 27 | + [self setTestURL:[NSURL URLWithString:@"http://allseeing-i.com/ASIHTTPRequest/tests/the_great_american_novel_%28abridged%29.txt"]]; |
| 28 | + //[self setTestURL:[NSURL URLWithString:@"http://allseeing-i.com"]]; | ||
| 28 | } | 29 | } |
| 29 | 30 | ||
| 30 | - (void)testASIHTTPRequestSynchronousPerformance | 31 | - (void)testASIHTTPRequestSynchronousPerformance |
| @@ -47,7 +48,6 @@ | @@ -47,7 +48,6 @@ | ||
| 47 | [request addRequestHeader:@"Accept-Language" value:@"en/us"]; | 48 | [request addRequestHeader:@"Accept-Language" value:@"en/us"]; |
| 48 | [request setUseCookiePersistance:NO]; | 49 | [request setUseCookiePersistance:NO]; |
| 49 | [request setUseSessionPersistance:NO]; | 50 | [request setUseSessionPersistance:NO]; |
| 50 | - //[request setShouldRunInBackgroundThread:YES]; | ||
| 51 | [request startSynchronous]; | 51 | [request startSynchronous]; |
| 52 | if ([request error]) { | 52 | if ([request error]) { |
| 53 | NSLog(@"Request failed - cannot proceed with test"); | 53 | NSLog(@"Request failed - cannot proceed with test"); |
| @@ -116,7 +116,7 @@ | @@ -116,7 +116,7 @@ | ||
| 116 | [self performSelectorOnMainThread:@selector(startASIHTTPRequests) withObject:nil waitUntilDone:NO]; | 116 | [self performSelectorOnMainThread:@selector(startASIHTTPRequests) withObject:nil waitUntilDone:NO]; |
| 117 | } | 117 | } |
| 118 | 118 | ||
| 119 | -- (void)testASIHTTPRequestAsyncPerformanceWithQueue | 119 | +- (void)testQueuedASIHTTPRequestAsyncPerformance |
| 120 | { | 120 | { |
| 121 | [self performSelectorOnMainThread:@selector(startASIHTTPRequestsWithQueue) withObject:nil waitUntilDone:NO]; | 121 | [self performSelectorOnMainThread:@selector(startASIHTTPRequestsWithQueue) withObject:nil waitUntilDone:NO]; |
| 122 | } | 122 | } |
| @@ -129,13 +129,15 @@ | @@ -129,13 +129,15 @@ | ||
| 129 | [self setTestStartDate:[NSDate date]]; | 129 | [self setTestStartDate:[NSDate date]]; |
| 130 | int i; | 130 | int i; |
| 131 | for (i=0; i<10; i++) { | 131 | for (i=0; i<10; i++) { |
| 132 | - ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com/ASIHTTPRequest/tests/the_great_american_novel_(abridged).txt"]]; | 132 | + ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:testURL]; |
| 133 | //Send the same headers as NSURLRequest | 133 | //Send the same headers as NSURLRequest |
| 134 | [request addRequestHeader:@"Pragma" value:@"no-cache"]; | 134 | [request addRequestHeader:@"Pragma" value:@"no-cache"]; |
| 135 | [request addRequestHeader:@"Accept" value:@"*/*"]; | 135 | [request addRequestHeader:@"Accept" value:@"*/*"]; |
| 136 | [request addRequestHeader:@"Accept-Language" value:@"en/us"]; | 136 | [request addRequestHeader:@"Accept-Language" value:@"en/us"]; |
| 137 | + [request setUseCookiePersistance:NO]; | ||
| 138 | + [request setUseSessionPersistance:NO]; | ||
| 137 | [request setDelegate:self]; | 139 | [request setDelegate:self]; |
| 138 | - [request start]; | 140 | + [request startAsynchronous]; |
| 139 | } | 141 | } |
| 140 | } | 142 | } |
| 141 | 143 | ||
| @@ -146,13 +148,17 @@ | @@ -146,13 +148,17 @@ | ||
| 146 | [self setTestStartDate:[NSDate date]]; | 148 | [self setTestStartDate:[NSDate date]]; |
| 147 | int i; | 149 | int i; |
| 148 | NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease]; | 150 | NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease]; |
| 151 | + [queue setMaxConcurrentOperationCount:4]; | ||
| 149 | for (i=0; i<10; i++) { | 152 | for (i=0; i<10; i++) { |
| 150 | - ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com/ASIHTTPRequest/tests/the_great_american_novel_(abridged).txt"]]; | 153 | + ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:testURL]; |
| 151 | //Send the same headers as NSURLRequest | 154 | //Send the same headers as NSURLRequest |
| 152 | [request addRequestHeader:@"Pragma" value:@"no-cache"]; | 155 | [request addRequestHeader:@"Pragma" value:@"no-cache"]; |
| 153 | [request addRequestHeader:@"Accept" value:@"*/*"]; | 156 | [request addRequestHeader:@"Accept" value:@"*/*"]; |
| 154 | [request addRequestHeader:@"Accept-Language" value:@"en/us"]; | 157 | [request addRequestHeader:@"Accept-Language" value:@"en/us"]; |
| 158 | + [request setUseCookiePersistance:NO]; | ||
| 159 | + [request setUseSessionPersistance:NO]; | ||
| 155 | [request setDelegate:self]; | 160 | [request setDelegate:self]; |
| 161 | + [request setShouldRunInBackgroundThread:YES]; | ||
| 156 | [queue addOperation:request]; | 162 | [queue addOperation:request]; |
| 157 | } | 163 | } |
| 158 | } | 164 | } |
| @@ -185,7 +191,7 @@ | @@ -185,7 +191,7 @@ | ||
| 185 | 191 | ||
| 186 | int i; | 192 | int i; |
| 187 | for (i=0; i<10; i++) { | 193 | for (i=0; i<10; i++) { |
| 188 | - NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com/ASIHTTPRequest/tests/the_great_american_novel_(abridged).txt"] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10]; | 194 | + NSURLRequest *request = [NSURLRequest requestWithURL:testURL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10]; |
| 189 | [[self responseData] addObject:[NSMutableData data]]; | 195 | [[self responseData] addObject:[NSMutableData data]]; |
| 190 | NSURLConnectionSubclass *connection = [[[NSURLConnectionSubclass alloc] initWithRequest:request delegate:self startImmediately:YES] autorelease]; | 196 | NSURLConnectionSubclass *connection = [[[NSURLConnectionSubclass alloc] initWithRequest:request delegate:self startImmediately:YES] autorelease]; |
| 191 | [connection setTag:i]; | 197 | [connection setTag:i]; |
-
Please register or login to post a comment