- 体会耗时操作
- 理解不同操作对时间耗时的影响
- 学会性能测试技巧
理解
耗时操作概念
- 需要花费一定时间才能执行完的执行的一段代码(任务).
1. 模拟耗时操作
// 耗时 for 循环
for (int i = 0; i < 1000000; i++) {
}
演练:
- 空for 循环对性能没有影响.
- for 循环 int a = 10; 操作内存栈区不耗时,不耗性能.因为内存地址是连续的,寻址简单.
- for 循环 NSString *str = @"hello world"; 字符串内容一样,操作内存的常量区, 不耗时,不耗性能.相对栈区,要相对耗时一些.
- for 循环 NSString *str = [NSString stringWithFormat:@"hello world -%d",i];字符串内容不一样,操作内存的堆区,耗时,耗性能.因为堆区的地址是不连续的, 需要花时间去寻址.
- 结论:
- 通过性能测试代码得出I/O 操作 -- NSLog 是非常耗时的操作.
补充
1. 性能测试代码
// 性能测试:
double** startTime = CACurrentMediaTime();
for** (int i = 0; i < 1000000; i++) {
}
NSLog(@"%lf",CACurrentMediaTime() - startTime);
2. NSLog 是耗时操作
- 因为 NSLog 是 I/O 操作.
- I/O 操作: 需要把数据输入/输出到外接设备,例如硬盘,屏幕..