1. Instrument简介
红色为移动端APP常用的工具
| 序号 | 名称 | 作用 |
|---|---|---|
| 1. | Blank(空模板): | 创建一个空的模板,可以从Library库中添加其他模板; |
| 2. | Activity Monitor(活动监视器): | 监控进程的CPU,内存,磁盘,网络使用情况 是程序在手机运行真正占用的内存大小 |
| 3. | Allocations(内存分配): | 跟踪过程的匿名虚拟内存和堆的对象提供类名和可选保留/释放历史; |
| 4. | Cocoa Layout | 观察NSLayoutConstraint对象的改变,帮助我们判断什么时间什么地点的constraint是否合理 |
| 5. | Core Animation(图形性能) | 这个模块显示程序显卡性能以及CPU使用情况 |
| 6. | CoreData | 这个模块跟踪Core Data文件系统活动 |
| 7. | Counters | 收集使用时间或基于事件的抽样方法的性能监控计数器(PMC)事件 ? |
| 8. | Energy Log | 耗电量监控 |
| 9. | File Activity | 检测文件创建,移动,变化,删除等 |
| 10. | Leaks(泄漏): | 一般的措施内存使用情况,检查泄漏的内存,并提供了所有活动的分配和泄漏模块的类对象分配统计信息以及内存地址历史记录; |
| 11. | Metal System Trace | (Metal API是apple 2014年在ios平台上推出的高效底层的3D图形API,它通过减少驱动层的API调用CPU的消耗提高渲染效率。 |
| 12. | Network | 用链接工具分析你的程序如何使用TCP/IP和UDP/IP链接 |
| 13. | OpenGL ES Analysis | 这个模块测量分析OpenGL ES活动正确性检测以及表现问题,提供解决建议 |
| 14. | System Trace | 系统跟踪,通过显示当前被调度线程提供综合的系统表现,显示从用户到系统的转换代码通过两个系统调用或内存操作 |
| 15. | System Usage 这个模板记录关于文件读写,sockets,I/O系统活动, 输入输出 | |
| 16. | Time Profiler(时间探查): | 执行对系统的CPU上运行的进程低负载时间为基础采样。 |
| 17. | Zombies | 测量一般的内存使用,专注于检测过度释放的野指针对象,也提供对象分配统计,以及主动分配的内存地址历史 |
2. Time Profiler使用
WWDC2016 Using Time Profiler in Instruments 视频连接
Time Profiler: CPU分析工具分析代码的执行时间。
Performs low-overhead time-based sampling of progress running on the system`s CPUs
通过时间来分析随着时间的推移,系统各个CPUs的使用情况(CPU的开销是基于时间采样的)
//
选择需要分析的APP
点击红色原点进行启动分析
CPU Usage分析
CPUs线程
CPUs分析
//
添加模板
设置过滤线程
调用堆栈函数树过滤设置
调用堆栈函数条件限制过滤
| 名称 | 作用 |
|---|---|
| Separate by Thread: | 按线程分开做分析,这样更容易揪出那些吃资源的问题线程。特别是对于主线程,它要处理和渲染所有的接口数据,一旦受到阻塞,程序必然卡顿或停止响应。 |
| Invert Call Tree: | 反向输出调用树。把调用层级最深的方法显示在最上面,更容易找到最耗时的操作。 |
| Hide System Libraries: | 隐藏系统库文件。过滤掉各种系统调用,只显示自己的代码调用。 |
| Flattern Recursion: | 拼合递归。将同一递归函数产生的多条堆栈(因为递归函数会调用自己)合并为一条。 |
| Top Functions: | 找到最耗时的函数或方法。 |
所选调用堆栈函数树对应的先后顺序关系
选择目标时间区域查看分析
双击费时的函数调用堆栈,跳转到对应的代码,看到费时的代码定位所在