一. 耗时操作

462 阅读1分钟
  • 体会耗时操作
  • 理解不同操作对时间耗时的影响
  • 学会性能测试技巧

理解

耗时操作概念

  • 需要花费一定时间才能执行完的执行的一段代码(任务).

1. 模拟耗时操作

// 耗时 for 循环
for (int i = 0; i < 1000000; i++) {

}

演练:

  1. 空for 循环对性能没有影响.
  1. for 循环 int a = 10; 操作内存栈区不耗时,不耗性能.因为内存地址是连续的,寻址简单.
  1. for 循环 NSString *str = @"hello world"; 字符串内容一样,操作内存的常量区, 不耗时,不耗性能.相对栈区,要相对耗时一些.
  1. 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 操作: 需要把数据输入/输出到外接设备,例如硬盘,屏幕..