IOS各种集合遍历效率对比
2016-05-07 11:17
316 查看
前言:
对于ios项目开发中总会遇见各种集合遍历,出于对各种遍历效率的好奇心,所以准备写个测试程序测试一下
首先:先声明一个NSMutableArray,测试数据量分别是1000条,10000条,100000条。
第一种:普通for循环
第二种:for in 循环
第三种:代码块循环
第四种:枚举器循环
执行结果:
1.测试数据 1000条 10000条 100000条
普通for循环:0.391 2.390 18.400
for- in循环 :0.226 2.782 15.172
代码块循环 :0.241 2.744 15.123
枚举器循环 :0.147 1.429 7.432
结论:遍历最快速的是枚举器遍历 其他三种遍历效率 相差无几
对于ios项目开发中总会遇见各种集合遍历,出于对各种遍历效率的好奇心,所以准备写个测试程序测试一下
首先:先声明一个NSMutableArray,测试数据量分别是1000条,10000条,100000条。
int testMaxCount =1000;//10000,100000 NSMutableArray *testArray=[[NSMutableArray alloc]init]; for (int i =0; i<testMaxCount; i++) { [testArray addObject:@"test"]; }
第一种:普通for循环
//普通for循环 CFAbsoluteTime start = CFAbsoluteTimeGetCurrent(); for(int i =0;i<[testArray count];i++){ NSLog(@"%@",testArray[i]); } CFAbsoluteTime end = CFAbsoluteTimeGetCurrent(); NSLog(@" 普通for循环 time cost: %0.3f", end - start);
第二种:for in 循环
// for in 循环 start = CFAbsoluteTimeGetCurrent(); for(NSString *tempStr in testArray){ NSLog(@"%@",tempStr); } end = CFAbsoluteTimeGetCurrent(); NSLog(@" for in 循环 time cost: %0.3f", end - start);
第三种:代码块循环
//代码块 start = CFAbsoluteTimeGetCurrent(); [testArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { NSLog(@"%@",obj); }]; end = CFAbsoluteTimeGetCurrent(); NSLog(@"代码块 循环 time cost: %0.3f", end - start);
第四种:枚举器循环
//枚举器 start = CFAbsoluteTimeGetCurrent(); NSEnumerator *enumerator=[testArray objectEnumerator]; while (enumerator.nextObject) { NSLog(@"%@",enumerator.nextObject); } end = CFAbsoluteTimeGetCurrent(); NSLog(@"枚举器 循环 time cost: %0.3f", end - start);
执行结果:
1.测试数据 1000条 10000条 100000条
普通for循环:0.391 2.390 18.400
for- in循环 :0.226 2.782 15.172
代码块循环 :0.241 2.744 15.123
枚举器循环 :0.147 1.429 7.432
结论:遍历最快速的是枚举器遍历 其他三种遍历效率 相差无几
相关文章推荐
- iOS IPv6-only
- IOS小技巧-插件管理Alcatraz
- iOS开发:mac使用svn管理项目
- IOS开发-Masonry
- iOS开发:本地数据存储-NSUserDefaults
- iOS学习笔记——JSON
- ios开发解析HTML
- 文章标题
- iOS App开发中用CGContextRef绘制基本图形的基本示例
- iOS开发:xmpp中是如何跟服务器进行联系的?
- iOS常用代码
- iOS 拨打电话三种方式总结
- iOS开发:xmpp下的xml数据解析及修改上传
- 关于IOS中设置中找不到开发者选项的解决办法
- iOS开发中常用到的加密方式
- IOS开发之获取MP3音乐信息
- IOS开发之AVPlayer
- iOS extern
- IOS异步获取数据并刷新界面dispatch_async的使用方法
- iOS开发TextField根据键盘自适应位置