前言:
對於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迴圈遍歷集合所有元素,然後進...