测试方法函数
通过遍历 一万条数据 和 十万条数据 来做比较
- (void)viewDidLoad
{
[super viewDidLoad];
testArray = [[NSMutableArray alloc]init];
for (int i =0;i <100000;i++) {
NSString * addstr = [NSString stringWithFormat:@"%d",i];
[testArray addObject:addstr];
}
if (testArray.count == 100000) {
[self profileDoSomething];
}
}
double MachTimeToSecs(uint64_t time)
{
mach_timebase_info_data_t timebase;
mach_timebase_info(&timebase);
return (double)time * (double)timebase.numer /
(double)timebase.denom / 1e9;
}
- (void)profileDoSomething
{
uint64_t begin = mach_absolute_time();
[self testEnumerator];
uint64_t end = mach_absolute_time();
NSLog(@"Time taken to doSomething %g s",
MachTimeToSecs(end - begin));
}
-(void)testfor
{
//testfor taken to doSomething 3.53308 s 10000
// testfor taken to doSomething 24.9047 s 1000000
// testfor taken to doSomething 24.651 s 1000000
int arrayCount = [testArray count];
for (int i = 0;i < arrayCount; i++)
{
NSLog(@"test1====%@",[testArray objectAtIndex:i]);
}
}
-(void)testforin
{
// testforin taken to doSomething 3.49954 s 10000
// testforin taken to doSomething 25.4128 s 100000
// testforin taken to doSomething 26.4278 s 100000
for (id obj in testArray) {
NSLog(@"test2====%@",obj);
}
}
-(void)testenumerateObjectsUsingBlock
{
// enumerateObjectsUsingBlock taken to doSomething 3.56696 s 10000
//enumerateObjectsUsingBlock taken to doSomething 27.0953 s 100000
//enumerateObjectsUsingBlock taken to doSomething 25.9135 s 100000
[testArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"test3====%@",obj);
// if (shouldStop) {
// *stop = YES;
// }
}];
}
-(void)testEnumerator
{
//testEnumerator taken to doSomething 3.5443 s 10000
//testEnumerator taken to doSomething 24.8987 s 100000
//testEnumerator taken to doSomething 24.7238 s 100000
NSEnumerator *enumerator = [testArray objectEnumerator];
id object;
while ((object = [enumerator nextObject]) != nil) {
NSLog(@"test3====%@",object);
}
}