博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS各种集合遍历效率对比
阅读量:6680 次
发布时间:2019-06-25

本文共 1482 字,大约阅读时间需要 4 分钟。

前言:

    对于ios项目开发中总会遇见各种集合遍历,出于对各种遍历效率的好奇心,所以准备写个测试程序测试一下

 

首先:先声明一个NSMutableArray,测试数据量分别是1000条,10000条,100000条。

int testMaxCount =1000;//10000,100000    NSMutableArray *testArray=[[NSMutableArray alloc]init]; for (int i =0; i

第一种:普通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

 结论:遍历最快速的是枚举器遍历  其他三种遍历效率 相差无几

 

转载地址:http://nziao.baihongyu.com/

你可能感兴趣的文章
android 问题汇总系列之八
查看>>
线程优先级
查看>>
【css】纯 css 制作带三角(border篇)
查看>>
MySQL数据库服务器优化详细
查看>>
Socket异步通信——使用SocketAsyncEventArgs
查看>>
alfresco_百度百科
查看>>
导入Excel数值读不到,找不到可安装的 ISAM错误
查看>>
[xcode]安装xcode出现一个错误:The Installation Failed.
查看>>
Mysql:bit类型的查询与插入
查看>>
poj2551
查看>>
手动爆库详细流程以及语句解析
查看>>
java模式之装饰模式
查看>>
ubuntu13.04下载android4.0.1源码过程
查看>>
【编程珠玑】读书笔记 第二章 算法
查看>>
百度搜索结果页url参数详解
查看>>
无线Ad-hoc网络的关键技术之路由(转)
查看>>
多线程处理数据来提高后台处理速度
查看>>
openal 基础知识2
查看>>
AIX6.1 线程模型说明
查看>>
jQuery插件开发
查看>>