不同内存区域的耗时操作

  1. 空的for循环不耗性能,基本不耗时

    
    #pragma mark - 耗时操作
    
    - (void)longOperation
    {
        // 性能测试:
        double start = CACurrentMediaTime();
        for (int i = 0; i < 1000000; i++) {
            //循环内没有任操作
        }
        // 获取时间差值
        NSLog(@"----:%f",CACurrentMediaTime() - start);
    
    }

    打印结果:2017-06-19 18:57:25.465 01-模拟耗时操作[95446:4223426] —-:0.002655

  2. 操作内存的栈区不耗性能,基本不耗时,因为地址是连续的,寻址简单

    
    #pragma mark - 耗时操作
    
    - (void)longOperation
    {
        // 性能测试:
        double start = CACurrentMediaTime();
        for (int i = 0; i < 1000000; i++) {
            //定义一个int类型 -- 该变量存放在内存的栈区
            int abc = 10000000;
        }
        // 获取时间差值
        NSLog(@"----:%f",CACurrentMediaTime() - start);
    
    }

    打印结果:2017-06-19 19:00:02.243 01-模拟耗时操作[95474:4224838] —-:0.002460

  3. 操作内存的常量区不耗性能,相对不耗时,但是相对栈区要耗性能一些,内存控件只开辟一次

    
    #pragma mark - 耗时操作
    
    - (void)longOperation
    {
        // 性能测试:
        double start = CACurrentMediaTime();
        for (int i = 0; i < 1000000; i++) {
            // 定义一个NSString字符串 -- 该变量存放在内存的常量区
            NSString *str = @"aaaaaaaaaaaaaaaaaaaaaaaa";
        }
        // 获取时间差值
        NSLog(@"----:%f",CACurrentMediaTime() - start);
    
    }

    打印结果:2017-06-19 19:03:57.907 01-模拟耗时操作[95515:4226915] —-:0.011038

  4. 操作内存的堆区,相对栈区和常量区要耗更多性能,因为堆区的地址是不连续的,需要耗费时间去寻址

    
    #pragma mark - 耗时操作
    
    - (void)longOperation
    {
        // 性能测试:
        double start = CACurrentMediaTime();
        for (int i = 0; i < 1000000; i++) {
    
            // 该变量存放在内存的堆区
            NSString *str = [NSString stringWithFormat:@"test--%d",i];
        }
        // 获取时间差值
        NSLog(@"----:%f",CACurrentMediaTime() - start);
    
    }

    打印结果:2017-06-19 19:17:28.997 01-模拟耗时操作[95598:4233527] —-:0.804514

  5. I/O操作是非常耗性能的

    
    #pragma mark - 耗时操作
    
    - (void)longOperation
    {
        // 性能测试:
        double start = CACurrentMediaTime();
        for (int i = 0; i < 1000000; i++) {
    
            // 打印非常耗时也就是耗时操作
            NSLog(@"%d",i);
        }
        // 获取时间差值
        NSLog(@"----:%f",CACurrentMediaTime() - start);
    
    }

    打印结果:2017-06-19 19:11:29.560 01-模拟耗时操作[95554:4229094] —-:176.182018

    耗时操作对UI交互影响:会卡死UI导致屏幕上的空间暂时无法执行操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值