IOS各種集合遍歷效率對比

2021-09-08 18:17:45 字數 1892 閱讀 7050

前言:

對於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++)

cfabsolutetime end =cfabsolutetimegetcurrent();

nslog(

@"普通for迴圈 time cost: %0.3f

", end - start);

第二種:for in 迴圈

//

for in 迴圈

start =cfabsolutetimegetcurrent();

for(nsstring *tempstr in

testarray)

end =cfabsolutetimegetcurrent();

nslog(

@"for in 迴圈 time cost: %0.3f

", end - start);

第三種:**塊迴圈

//

**塊 start =cfabsolutetimegetcurrent();

[testarray enumerateobjectsusingblock:^(id _nonnull obj, nsuinteger idx, bool *_nonnull stop) ];

end =cfabsolutetimegetcurrent();

nslog(

@"**塊 迴圈 time cost: %0.3f

", end - start);

第四種:列舉器迴圈

//

列舉器 start =cfabsolutetimegetcurrent();

nsenumerator *enumerator=[testarray objectenumerator];

while

(enumerator.nextobject)

end =cfabsolutetimegetcurrent();

nslog(

@"列舉器 迴圈 time cost: %0.3f

", end - start);

執行結果:

1.測試資料    1000條      10000條     100000條

普通for迴圈:0.3912.39018.400

for- in迴圈 :0.2262.78215.172

**塊迴圈 :0.2412.74415.123

列舉器迴圈 :0.1471.4297.432

結論:遍歷最快速的是列舉器遍歷  其他三種遍歷效率 相差無幾

幾種集合遍歷方式的效率對比

double time0 system currenttimemillis treeset.foreach o system out println o double time1 system currenttimemillis for person o treeset double time2 s...

OC各種遍歷方法的效率比較

看了一篇部落格,挺有意思,oc各種遍歷方法的效率,打算自己也測試一番。看看,究竟哪乙個的效率更好一些!準備工作 懶載入乙個陣列,建立一千萬個物件新增到陣列。1 pragma mark lazy methods 2 nsmutablearray objarray 8 9return objarray ...

List集合去重方式及效率對比

list集合相信大家在開發過程中幾乎都會用到。有時候難免會遇到集合裡的資料是重複的,需要進行去除。然而,去重方式有好幾種方式,你用的是哪種方式呢?去重方式效率是否是最高效 最優的呢?今天就給大家講解一下list集合去重的常見及常用的四種方式。01 實現思路 使用兩個for迴圈遍歷集合所有元素,然後進...