zoukankan      html  css  js  c++  java
  • iOS性能检测之Instrunments

    Instrunments:

     没错,就是这货,很多人平时开发可能不一定会用到这个,但我要说的是,学会使用它,会让你加分不少哦

    先来一张一览图:

    1、打开方式

    或者

    两种方式都行。

    2、今天主要介绍一下我常用的3种:Core Animation 、Leaks、Time Profiler

    打开方式:

    双击图标,会进入到各自界面,然后我们就可以进行下面的工作。 

    此外,下面的测试都建议使用真机测试,模拟器会非常不准。其实,上面的工具,很多都适合用真机测试,除了Zombies等少数几个适合用模拟器测试。

    第一个:Core Animation(核心动画) 

    Core Animation工具是用来检测Core Animation性能的,不过我可能比较low,我主要用来看fps(一秒钟渲染多少帧 Frame Per Second = FPS),也就是滑动时查看界面是否卡顿。

    一般FPS是60左右,过于低的话需要进行优化,当低于45时,用户一般是可以觉察到卡顿的,当低于20时,卡顿是特别明显,甚至影响使用了(之前测试过个位数fps,那感觉想让我摔手机)。

    举例如图:

    当停止不动时,fps为0.开始滑动时,fps会不断变化。

    PS:这里测试界面卡顿,还有另一种更便捷的方法,借助第三方封装的一个label,可以在界面实时看到fps,而不需要借助Instruments。

    下载地址:Github地址

    第二个:Leaks(内存泄露)

    这个也比较常用,用来查看app运行期间,那些代码产生内存泄露。

    内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。

    PS:如果找不到,可能移到底部区域了,如下图:(xcode新版本会这样布局)

    其中,绿色勾表示运行正常,没有内存泄露,如果有泄露,会自动显示❌,下面我找一张有泄露的图

    按照我上面的方式设置完,点击❌,会定位到代码处,我们就能看到具体大概到代码位置了,然后对应去修改。

    PS:这里我讲一点可能很多人没注意到一个点,就是关于AFNetworking3.0下存在的内存泄露。

    如果你在每次使用时,都是重新

    AFHttpSessionManager *sessionManager = [AFHttpSessionManager manager];

    可能就会有这种问题,不管你是直接使用,还是封装后使用,只要用的时候是每次都申请一下sessionManager,就会有这种问题。

    解决办法就是:对sessionManager进行单例处理,就可以避免。

    参考文章戳这里:

    AFNetworking3.x容易出现内存泄露的地方

    利用Instruments中的Leaks处理内存泄露

    第三个:Time Profiler(时间分析器)

    用来检测app中每个方法所用的时间,并且可以排序,并查找出哪些函数占用了大量时间。

    页面如下:

    我测试等demo内容比较少,所以数据不多,测试的时候,勾选右边红框 

    Separate by Thread:每个线程被单独考虑。这能让你知道哪一个线程占用CPU最多。
    
    Invert Call Tree:选中该选项后,调用栈会自上至下显示。这通常是你需要的,因为你想知道CPU花费时间的那个最深的方法。
    
    Hide System Libraries:选中该选项后,只有你自己app中出现的符号会被显示出来。

    然后就可以分析代码各阶段或者具体代码分别执行多长时间了。

    其实其他的工具都有各自的使用场景,这里我只是简单介绍了几种比较常用的,大家有兴趣可以深入了解一下Instruments的使用场景。。。。

    Enjoy~~~

  • 相关阅读:
    并发编程学习笔记(七、Thread源码分析)
    并发编程学习笔记(六、线程组)
    并发编程学习笔记(五、线程中常用的方法)
    并发编程学习笔记(四、线程的优先级)
    并发编程学习笔记(三、如何安全地终止线程)
    sql server登陆账号时遇到233错误
    github上传shh公匙问题
    mysql简单复习
    idea导入jstl标签库
    山高有攀头,路远有奔头~
  • 原文地址:https://www.cnblogs.com/yajunLi/p/6501799.html
Copyright © 2011-2022 走看看