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