码迷,mamicode.com
首页 > 其他好文 > 详细

OC自动释放池在for循环中的性能测试

时间:2015-06-06 23:28:34      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

发现一个有意思的测试结果。

@autoreleasepool 放在for 循环外面,即所有循环结束后才释放里面的延迟对象;而放在里面的话,也就是说每次循环都立即释放。

这样就保证了for循环时不会突然内存爆表。

但是,性能居然。。。。是放在里面的好点,附上代码,可以亲测玩玩。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    
    NSLog(@"start");
    
    CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();
    [self test1];
    NSLog(@"外 %f", CFAbsoluteTimeGetCurrent() - start);
    
    start = CFAbsoluteTimeGetCurrent();
    [self test2];
    NSLog(@"内 %f", CFAbsoluteTimeGetCurrent() - start);
    
    NSLog(@"over");
}

- (void)test2 {
    for (long i = 0; i < largeNumber; ++i) {
        @autoreleasepool {
            NSString *str = [NSString stringWithFormat:@"hello - %ld", i];
            str = [str uppercaseString];
            str = [str stringByAppendingString:@" - world"];
        }
    }
}

- (void)test1 {
    @autoreleasepool {
        for (long i = 0; i < largeNumber; ++i) {
            NSString *str = [NSString stringWithFormat:@"hello - %ld", i];
            str = [str uppercaseString];
            str = [str stringByAppendingString:@" - world"];
        }
    }
}

 

OC自动释放池在for循环中的性能测试

标签:

原文地址:http://www.cnblogs.com/alwaysDB/p/4557408.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!