不同内存区域的耗时操作
来源:互联网 发布:原生js手风琴效果 编辑:程序博客网 时间:2024/06/06 09:30
空的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
操作内存的栈区不耗性能,基本不耗时,因为地址是连续的,寻址简单
#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
操作内存的常量区不耗性能,相对不耗时,但是相对栈区要耗性能一些,内存控件只开辟一次
#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
操作内存的堆区,相对栈区和常量区要耗更多性能,因为堆区的地址是不连续的,需要耗费时间去寻址
#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
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导致屏幕上的空间暂时无法执行操作
阅读全文
0 0
- 不同内存区域的耗时操作
- 代码的耗时操作
- 不同区域的碰撞
- 下面的代码,按照内存地址大致绘制出你的不同内存区域来
- 关于C# 耗时操作的时间查看
- iOS对耗时操作的处理方法
- MFC 处理耗时操作的一种办法
- 封装HttpUtil访问网络的耗时操作
- 不同变量的存储区域
- 特殊的内存区域
- Java的内存区域
- 程序的内存区域
- java的内存区域
- 内存的数据区域
- JVM的内存区域
- 内存区域的划分
- JVM的内存区域
- python不同数据结构下的if...in... 耗时对比
- JSP中两种include的区别
- 动态SQL
- 素数打表的四种解法
- 使用AJXA
- python中的深拷贝和浅拷贝理解
- 不同内存区域的耗时操作
- 对象中的constructor
- 这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)
- UVA
- 方差、标准差、均方差、均方误差区别总结
- 【Machine Learning】【Python】四、Hard Negative Mining优化训练SVM模型 ---- 《SVM物体分类和定位检测》
- Javascript数组的排序 sort()方法和reverse()方法
- hibernate的QBE和QBC
- 为体验设计——使用第一