数组遍历的简单基准测试

来源:互联网 发布:玉观音知乎 编辑:程序博客网 时间:2024/06/05 07:32
        NSMutableArray * arr = [NSMutableArray array];        for (int i = 0; i < 1000000; i++) {            [arr addObject:@(i)];        }                __block long sum = 0L;        unsigned long count = [arr count];        NSDate * startDate = [NSDate date];        for (int i = 0; i < count; i++) {            sum += [arr[i] intValue];        }        NSLog(@"for:%.fms", ceil(fabs([startDate timeIntervalSinceNow] * 1000)));                sum = 0L;        startDate = [NSDate date];        for (NSNumber * num in arr) {            sum += [num intValue];        }        NSLog(@"for_in:%.fms", ceil(fabs([startDate timeIntervalSinceNow] * 1000)));                sum = 0L;        startDate = [NSDate date];        NSEnumerator * enumerator = [arr objectEnumerator];        NSNumber * num;        while (num = [enumerator nextObject]) {            sum += [num intValue];        }        NSLog(@"enum:%.fms", ceil(fabs([startDate timeIntervalSinceNow] * 1000)));                sum = 0L;        startDate = [NSDate date];        [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {            sum += [obj intValue];        }];        NSLog(@"enum using block:%.fms", ceil(fabs([startDate timeIntervalSinceNow] * 1000)));

输出结果

        for:85ms        for_in:43ms        enum:93ms        enum using block:150ms


0 0
原创粉丝点击