您好,欢迎来到微智科技网。
搜索
您的当前位置:首页[iOS]用TimeProfiler揪出那些耗时函数

[iOS]用TimeProfiler揪出那些耗时函数

来源:微智科技网

01.前言

  • 得益于苹果软硬件完美的配合,作为iOS开发者,大多数情况下都不用为性能问题操心,iOS开发者只要专心于自己的业务,其他的苹果都帮我们做好了。
  • 但是也有很多意外,比如我们公司的业务中有一个场景,需要在一个界面同时运行5个UICollectionView,并且最多同时要实现4个UICollectionView的同步滚动。这种情况下,可以想见情况还是挺复杂的。尽管我已经实现了所有资源的循环利用了,但是还是有稍微的不流畅。作为一个有二十多年强迫症病史的程序员,显然是不能容忍一丝丝的不流畅的。
  • 现在我就把我怎么揪出那些导致卡顿的元凶,并且把他们一个个杀死的利器TimeProfiler介绍给大家,就是下面这个家伙。如果你不知道怎么打开他,请点击Xcode的菜单栏 --> Open Developer Tool --> Instruments 就能找到这款利器了。

02.TimeProfiler基本使用

  • 01、在左上角选择要调试的应用(请在真机上运行应用,因为模拟器使用的是电脑的CPU,所以很多时候并没有明显检测出性能问题。)
  • 02、在设置里勾选Separate by Thread(按照线程分割监听结果,方便区分) 和 Hide system Libraries(隐藏系统的函数,避免干扰我们自己的函数。)
  • 03、开始监听。
  • 04、查看监听结果。

03.项目配置

为了TimeProfiler能去我们的项目里找到对应的函数,所以我们应该为TimeProfiler配置获取这份文件的环境,也就是作如下配置:

  • 01、配置项目的Scheme。

  • 02、配置Project。

04.查看函数耗时

经过上面的配置,我们再重新运行项目,然后按照上面的方式配置TimeProfiler,你就能看到下面的结果:

可以看到,我为了演示阻塞主线程写了一个叫做blockMainThread的方法

 -(void)blockMainThread{
      for (int i = 0; i < 1000; i++) {
          NSLog(@"%d", i);
      }
  }

在tableView中滑动cell时,每循环一个cell就会调用这个blockMainThread方法,这样会导致主线程被阻塞,以至于界面出现卡顿。而这一切都反应到了TimeProfiler的监听结果里,通过层级关系,我们能看到blockMainThread方法占用了90.4%的时间,而且我们还可以右键这个方法,就会出现Reveal in Xcode,点击就能直接跳转到Xcode中对应的方法里了,非常方便。

最后,这里有一个关于性能问题很奏效的,感兴趣可以研究一下。

我的文章集合

你还可以关注我自己维护的简书专题。这个专题的文章都是实打实的干货。

如果你有问题,除了在文章最后留言,还可以在微博上给我留言,以及访问我的。



作者:NewPan
链接:http://www.jianshu.com/p/0fd670547235
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

转载于:https://my.oschina.net/u/2361492/blog/1539353

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务