zoukankan      html  css  js  c++  java
  • IOS各种集合遍历效率对比

    前言:

        对于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

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

  • 相关阅读:
    几种典型程序Button处理代码的定位转
    sql server索引使用效率评估
    sql server查询死锁的sql语句
    SqlServer 查询计划
    批量删除Word中的回车符号
    数据在机器中的表示
    win32汇编窗口程序设计[05]获取屏幕分辨率
    清理win7任务栏图标
    Win32汇编窗口程序设计[06]—“Hello Win32ASM”改进版
    关于ASCII码的几点小结
  • 原文地址:https://www.cnblogs.com/whoislcj/p/5468000.html
Copyright © 2011-2022 走看看