iOS Instrument使用之Timer Profiler耗时分析

前提: 无论是debug模式还是release模式, 都要勾选dsym文件, 默认debug模式下不会生成dsym文件, 导致调试时全是内存地址,看不到相关函数的调用

在这里插入图片描述

## 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###

这里写图片描述

###点击红色原点进行启动分析###

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n6j5XUHx-1570868292208)(https://img-blog.csdn.net/20171228103455368?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva3VhbmdkYWNhaWt1YW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]

CPU Usage分析
这里写图片描述
CPUs线程
这里写图片描述
CPUs分析
这里写图片描述

//

###添加模板###

这里写图片描述

###设置过滤线程###

这里写图片描述

###调用堆栈函数树过滤设置###

这里写图片描述

###调用堆栈函数条件限制过滤###

这里写图片描述

名称 作用
Separate by Thread: 按线程分开做分析,这样更容易揪出那些吃资源的问题线程。特别是对于主线程,它要处理和渲染所有的接口数据,一旦受到阻塞,程序必然卡顿或停止响应。
Invert Call Tree: 反向输出调用树。把调用层级最深的方法显示在最上面,更容易找到最耗时的操作。
Hide System Libraries: 隐藏系统库文件。过滤掉各种系统调用,只显示自己的代码调用。
Flattern Recursion: 拼合递归。将同一递归函数产生的多条堆栈(因为递归函数会调用自己)合并为一条。
Top Functions: 找到最耗时的函数或方法。

###所选调用堆栈函数树对应的先后顺序关系###

这里写图片描述

###选择目标时间区域查看分析###

这里写图片描述

这里写图片描述

###双击费时的函数调用堆栈,跳转到对应的代码,看到费时的代码定位所在###

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0uhPccRE-1570868292228)(https://img-blog.csdn.net/20171228104207130?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva3VhbmdkYWNhaWt1YW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]

这里写图片描述

©️2020 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值