Instruments使用

2017-02-22  本文已影响90人  MillerWang

Instruments 简介
Instruments 是 Xcode 的一个工具集,为我们提供了强大的程序性能分析及测试能力。使用 Instruments 你可以做下面这些事:
检查一个或多个应用或进程的行为。
检查设备相关的功能,比如:Wi-Fi、蓝牙等。
在真机或模拟器上进行性能测试。
创建自定义的 DTrace 来分析系统以及应用的各种行为。
跟踪源码中的问题。
对 App 进行性能分析。
查找 App 中的内存问题,比如:内存泄露(Leaked memory)、废弃内存(Abandoned memory)、僵尸(zombies)等。
给出程序优化的建议。
进行系统级别的问题定位。
通过脚本记录一个用户行为序列,从而可以通过运行脚本对你的 iOS 应用进行可重复多次的自动化测试。
保存测试配置模板以供复用。

可以看到 Instruments 功能很多,这里先介绍一下我们在开发中常用到的几种:CPU 性能测试、图形性能测试、内存性能测试。
虽然 Instruments 是 Xcode 的一个工具集,但是它是以一个独立的 App 的形式存在的,你可以在 Xcode -> Open Developer Tool -> Instruments
中打开它。
CPU 性能
要看程序执行时间性能,主要有下面几步:
1、先在 Xcode 中对当前的项目做 Profile (Command-I):


image

这时就会打开 Profiling Template 选项对话框:


image
2、选择 Time Profiler
这个模板,并点击 Choose
按钮。
image
3、进入 Instruments 后,选择正确的设备和应用程序:
image
4、点击红色按钮运行后,就能得到 CPU 性能的结果了:
image

我们还能在时间轴面板里面去选择一段时间来查看该时间段里更为细节的 CPU 性能:


image
同时在中间的导航条以及右下角的控制面板中,我们还可以通过不同的选项来选择数据展示的形式和维度。
image
image
从这个结果中,我们可以看到不同的线程以及方法调用占用的时间,从而可以评估出 CPU 性能的瓶颈和优化方向。
5、除此之外,我们还能在 Instruments 选择使用 Counters
、Activity Monitor
、System Trace
等 Profiling Template 对程序做 CPU 性能考量。
图形性能
关于图形性能方面,我们平时最关注的应该就是「帧率」这个概念了。在 Instruments 中,我们可以使用 Core Animation

我们可以使用这些选项,来监测更加具体的图形性能。
5、我们还可以选择使用 OpenGL ES Analysis
、GPU Driver
等模板来监测图形相关性能。
内存性能
Instruments 可以帮我们了解到应用程序使用内存的几个方面:
全局内存使用情况(Overall Memory Use)
: 从全局的角度监测应用程序的内存使用情况,捕捉非预期的或大幅度的内存增长。
内存泄露(Leaked memory)
: 未被你的程序引用,同时也不能被使用或释放的内存。
废弃内存(Abandoned memory)
: 被你的程序引用,但是没什么卵用的内存。
僵尸对象(Zombies)
: 僵尸对象指的是对应的内存已经被释放并且不再会使用到,但是你的程序却在某处依然有指向它的引用。在 iOS 中有一个 NSZombie 机制,这个是为了内存调试的目的而设计的一种机制。在这个机制下,当你 NSZombieEnabled 为 YES 时,当一个对应的引用计数减为 0 时,这个对象不会被释放,当这个对象再收到任何消息时,它会记录一条 warning,而不是直接崩溃,以方便我们进行程序调试。

这里我们介绍下查找内存泄露的过程:
1、同「CPU 占用性能测试」一样,先在 Xcode 中对当前的项目执行 Profile (Command-I),并在打开的对话框中选择 Leaks
这个模板:


image

2、进入 Instruments 后,选择正确的设备和应用程序。
3、点击红色按钮运行应用程序,我们可以看到如下界面:


image
4、在 Display Settings 中勾选 Invert Call Tree
和 Hide System Libraries
或其他选项可以过滤显示的数据。
[图片上传中。。。(13)]

5、在导航栏的筛选框中,我们可以输入关键字来筛选数据。


image
6、在实际使用中,我们进入一个页面后再退出,发现相关的内存分配没有清空,这时候就发生内存泄露了。我们查看更细节的调用信息,追踪到可能造成内存泄露的代码位置:
image
7、我们还可以使用 Activity Monitor
、Allocations
、Zombies
等模板来针对性地做内存监测。
上一篇 下一篇

猜你喜欢

热点阅读