美文网首页XCode 工具程序问题分析
iOS性能优化:Instruments使用实战

iOS性能优化:Instruments使用实战

作者: RunnerFL | 来源:发表于2016-11-14 16:20 被阅读77次

    参考了chenkai 的简书

    本文总结了包括Time Profiler、leaks、Allocation本人认为前两者使用较多,最后的可仅供参考

    Time Profiler的使用

    作用:

    应用程序开始运行后.就能获取到整个应用程序运行消耗时间分布和百分比.

    使用Time Profiler的注意事项:

    必须使用真机,因为macbook上的cpu优于iPhone;gpu劣于ipone;

    time  profiler使用步骤

    在xcode选择 product--profile得到图一界面,钟表为

    time profiler

    图一

    点击开始录制按钮得到如图二:

    图二

    可以看出图中包含有调用系统API所消耗的时间,这些数据对我们来说是无用的,因此我们选择屏蔽它

    选用call tree的Separate Thread和Hide System Libraries得如图三

    图三

    可以看出剔除了反向调用树和系统API调用的数据。此时点击图中所示方法,可直接跳转至指定代码,对耗时的代码进行优化,一般耗时场景主要为UIImageView播放动画、NSDateFormatter以及NSCalendar的使用等场景。

    相关名词注释:

    Separate By Thread:线程分离,只有这样才能在调用路径中能够清晰看到占用CPU最大的线程.

    Invert Call Tree:从上到下跟踪堆栈信息.这个选项可以快捷的看到方法调用路径最深方法占用CPU耗时,比如FuncA{FunB{FunC}},勾选后堆栈以C->B->A把调用层级最深的C显示最外面.

    Hide Missing Symbols:如果dSYM无法找到你的APP或者调用系统框架的话,那么表中将看到调用方法名只能看到16进制的数值,勾选这个选项则可以隐藏这些符号,便于简化分析数据.

    Hide System Libraries:这个就更有用了,勾选后耗时调用路径只会显示app耗时的代码,性能分析普遍我们都比较关系自己代码的耗时而不是系统的.基本是必选项.注意有些代码耗时也会纳入系统层级,可以进行勾选前后前后对执行路径进行比对会非常有用.

    至此,timer Profiler的使用总结结束。

    leaks 的使用

    打开步骤同profiler相同,不再赘述。

    打开后第一部将弹出的界面的statistics改为call trees,如图四

    图四

    不同于time profiler 此时选Invert Call TreeHide System Libraries

    然后点开录制按钮

    出现红色错号就说明出现了内存泄露,选则左上角的暂停代码,并用鼠标点击错号得如图五,


    图五

    点击任意一行得到如图六

    图六

    标红处为内存泄露的具体代码,可对其修改解决

    Allocation

    参考自IOS性能调优系列:使用Allocation动态分析内存使用情况-爱编程 

    Allocation工具可以用来帮你了解内存的分配情况

    打开方式同上,略过,直接上实料

    打开后我们可以看到右侧(图七)几个比较有用的选项

    All Objects Created

    Created & Still Living

    Created & Destroyed

    图七

    通过以上方法可以对应用的整体内存使用情况有所了解,但内存不合理使用导致的内存警告往往是部分代码或视图导致的,我们往往要关注于某段时间或操作过程中内存的分配和使用情况,Allocation提供了这种功能。

    比如在进入一个视图前或操作前,我们在Allocation面板左侧点击Mark Generation,这时候会产生Generation A节点,显示内存当前的情况:

    图8
    我们可以在进入视图后再点一次Mark Generation,在视图退出后再点一次Mark,这样三次产生的

    Generation分别记录了进入前、进入后、关闭后,再最后一个Generation应该内存被合理释放,否则就代表了在这个视图或操作中有泄漏或不合理的地方。

    以上只是Allocation的基本运用,设计出一套使用Allocation来合理测试的方案是比较复杂的,后续慢慢介绍。


    相关文章

      网友评论

        本文标题:iOS性能优化:Instruments使用实战

        本文链接:https://www.haomeiwen.com/subject/kvehpttx.html