iOS性能调试有很多方法,这里讲一下Xcode内置工具Instruments。
Instruments是一个官方提供的强大的性能调试工具集。
![](https://i-blog.csdnimg.cn/blog_migrate/36d20263342581e1da6084494c0bd7f7.webp?x-image-process=image/format,png)
1.Blank(空模板):创建一个空的模板,可以从Library库中添加其他模板;
2.Activity Monitor(活动监视器):监控进程的CPU,内存,磁盘,网络使用情况 是程序在手机运行真正占用的内存大小
3.Allocations(内存分配):跟踪过程的匿名虚拟内存和堆的对象提供类名和可选保留/释放历史;
4.Automation(自动化):这个模板执行它模拟用户界面交互为IOS机应用从instrument启动的脚本;可以将一些特定流程写成脚本来执行 **
5.Cocoa Layout 观察NSLayoutConstraint对象的改变,帮助我们判断什么时间什么地点的constraint是否合理
6.Core Animation(图形性能)这个模块显示程序显卡性能以及CPU使用情况
7.CoreData 这个模块跟踪Core Data文件系统活动
8.Counters 收集使用时间或基于事件的抽样方法的性能监控计数器(PMC)事件 ?
9.Energy Diagnostics 耗电量监控
10.File Activity 检测文件创建,移动,变化,删除等
11.GPU Driver 测量GPU驱动统计和CPU使用情况
12.Leaks(泄漏):一般的措施内存使用情况,检查泄漏的内存,并提供了所有活动的分配和泄漏模块的类对象分配统计信息以及内存地址历史记录;
13.Metal System Trace (Metal API是apple 2014年在ios平台上推出的高效底层的3D图形API,它通过减少驱动层的API调用CPU的消耗提高渲染效率。http://blog.csdn.net/tomicyo/article/details/41792009)?
14.Network 用链接工具分析你的程序如何使用TCP/IP和UDP/IP链接
15.OpenGL ES Analysis 这个模块测量分析OpenGL ES活动正确性检测以及表现问题,提供解决建议
16.System Trace 系统跟踪,通过显示当前被调度线程提供综合的系统表现,显示从用户到系统的转换代码通过两个系统调用或内存操作
17.System Usage 这个模板记录关于文件读写,sockets,I/O系统活动, 输入输出
18.Time Profiler(时间探查):执行对系统的CPU上运行的进程低负载时间为基础采样。
19.Zombies 测量一般的内存使用,专注于检测过度释放的野指针对象,也提供对象分配统计,以及主动分配的内存地址历史
其中常用的有以下几种工具
Allocations,Leaks,Zombies,Core Animation,Automation,Time Profiler,Cocoa Layout,Energy Diagnostics,Network
按功能模块分类
一、定位内存问题
1.内存不合理引用,检测重复操作内存是否持续增长 Allocations
每次操作后,点击mark generations button,会设置一个flag,然后查看每个迭代的详细数据
2.内存泄漏Leaks
内存泄漏使用Leaks检测,如果对象发生内存泄漏,detail panel 中会看到对象的retain release历史记录,如果非对象发生内存泄漏,就会看到malloc和free的调用历史
3.野指针Zombies
Zombie问题,引用retaincount为0的对象,使用Debug模式,将环境变量NSZombieEnabled设为true
二、检测I/O活动
检测iOS app如何使用TCP/IP和UDP/IP。与connections Instruments一起使用,检测app发送和接收的包数目
三、图像性能检测
1.core animation graphics 用来检测帧频率
2.OpenGL activity
3.GPU Driver
四、CPU使用
1.Performance Monitor Counters
2.电量:Energry 跟踪电量、CPU、网络、显示亮度、睡眠/唤醒、蓝牙、wifi、GPS
可以全天开启Energry Diagnostics Log模式,在开发手机设备中,(重启或关机会丢失该数据)。数据收集结束后,将log数据传到PC上
3.线程使用Multicore Trace Template,分析多核性能,线程状态、调度队列、块使用情况。Multicore Trace Template包含Thread states和dispatch Instruments。
4.Timer Profiler Trace Template检测内核使用情况
五、自动化测试
UI automation Automation instrument 工具允许你让 iOS 应用的用户界面测试自动化。
自动化界面测试可以让你:
1 省去关键人员和释放其他工作资源
2 执行更多综合测试
3 开发可重复的回归测试
4 减少程序错误
5 提高开发周期,产品更新