PerformanceTests.m
3.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
//
// PerformanceTests.m
// Part of ASIHTTPRequest -> http://allseeing-i.com/ASIHTTPRequest
//
// Created by Ben Copsey on 17/12/2009.
// Copyright 2009 All-Seeing Interactive. All rights reserved.
//
#import "PerformanceTests.h"
#import "ASIHTTPRequest.h"
@interface NSURLConnectionSubclass : NSURLConnection {
int tag;
}
@property (assign) int tag;
@end
@implementation NSURLConnectionSubclass
@synthesize tag;
@end
@implementation PerformanceTests
- (void)testASIHTTPRequestAsyncPerformance
{
[self performSelectorOnMainThread:@selector(startASIHTTPRequests) withObject:nil waitUntilDone:NO];
}
- (void)startASIHTTPRequests
{
bytesDownloaded = 0;
[self setRequestsComplete:0];
[self setTestStartDate:[NSDate date]];
int i;
for (i=0; i<10; i++) {
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com/ASIHTTPRequest/tests/the_great_american_novel_(abridged).txt"]];
[request setDelegate:self];
[request start];
}
}
- (void)requestFailed:(ASIHTTPRequest *)request
{
GHFail(@"Cannot proceed with ASIHTTPRequest test - a request failed");
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
bytesDownloaded += [[request responseData] length];
requestsComplete++;
if (requestsComplete == 10) {
NSLog(@"ASIHTTPRequest: Completed 10 (downloaded %lu bytes) requests in %f seconds",bytesDownloaded,[[NSDate date] timeIntervalSinceDate:[self testStartDate]]);
}
}
- (void)testNSURLConnectionAsyncPerformance
{
[self performSelectorOnMainThread:@selector(startNSURLConnections) withObject:nil waitUntilDone:NO];
}
- (void)startNSURLConnections
{
bytesDownloaded = 0;
[self setRequestsComplete:0];
[self setTestStartDate:[NSDate date]];
[self setResponseData:[NSMutableArray arrayWithCapacity:5]];
int i;
for (i=0; i<10; i++) {
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com/ASIHTTPRequest/tests/the_great_american_novel_(abridged).txt"] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];
[[self responseData] addObject:[NSMutableData data]];
NSURLConnectionSubclass *connection = [[[NSURLConnectionSubclass alloc] initWithRequest:request delegate:self startImmediately:YES] autorelease];
[connection setTag:i];
}
}
- (void)connection:(NSURLConnectionSubclass *)connection didReceiveResponse:(NSURLResponse *)response
{
}
- (void)connection:(NSURLConnectionSubclass *)connection didFailWithError:(NSError *)error
{
GHFail(@"Cannot proceed with NSURLConnection test - a request failed");
}
- (void)connection:(NSURLConnectionSubclass *)connection didReceiveData:(NSData *)data
{
[[[self responseData] objectAtIndex:[connection tag]] appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnectionSubclass *)connection
{
bytesDownloaded += [[responseData objectAtIndex:[connection tag]] length];
requestsComplete++;
if (requestsComplete == 10) {
NSLog(@"NSURLConnection: Completed 10 (downloaded %lu bytes) requests in %f seconds",bytesDownloaded,[[NSDate date] timeIntervalSinceDate:[self testStartDate]]);
}
}
@synthesize requestsComplete;
@synthesize testStartDate;
@synthesize responseData;
@end