Instruments使用的记录

作者: timeQuick | 来源:发表于2019-03-19 09:52 被阅读15次

    准备

    打开自己的xcode工程,打开Instrument工具

    打开Instrument.png
    你就会看到有很多工具
    工具.png
    不过常用的一般就是Time Profiler,Leaks,Allocations
    在我们调优的过程中注意:一定要使用真机,且是release发布版本,因为

    1.模拟器是运行在mac上的和实际的运行在手机上的App环境不一样,相当于不是真实的环境。
    2.且是release版本,因为发布环境打包,编译器会做了一些优化。如去看调试符号,优化重新组织代码及它会引用“watch dog”机制。

    Time Profiler 时间分析器

    用来检测应用程序中各个方法正在消耗CPU时间,用这个可以帮助我们了解程序中哪些是耗时方法!

    时间分析器.png
    点击record运行
    因为xcode9.0后界面有点不同,9.0之前一些选项是在界面的一些右下角位置的,现在的话要点击CallTree才能弹出来。(这里我也是后来才发现的,嘻嘻~)
    基本操作.png
    几个选项的意思如下

    Separate by State:按状态分开做分析;
    Separate By Thread:线程分离,只有这样才能在调用路径中能够清晰看到占用CPU最大的线程.
    Invert Call Tree:从上到下跟踪堆栈信息.这个选项可以快捷的看到方法调用路径最深方法占用CPU耗时,比如FuncA{FunB{FunC}},勾选后堆栈以C->B->A把调用层级最深的C显示最外面.
    Hide System Libraries:这个就更有用了,勾选后耗时调用路径只会显示app耗时的代码,性能分析普遍我们都比较关系自己代码的耗时而不是系统的.基本是必选项.注意有些代码耗时也会纳入系统层级,可以进行勾选前后前后对执行路径进行比对会非常有用.
    Flatten Recursion:拼合递归。把同一递归函数产生的多条堆栈合并为一条。
    Top Functions:找到最耗时的函数或方法。

    双击方法名,就会定位到具体的代码了

    Leaks

    检测内存泄漏问题


    leaks.png

    运行界面


    383AE720-3CC2-462E-82BE-6BD324679053.png
    可设置采样时间间隔.png
    双击进入方法,看是否走dealloc方法来一步步调试。

    Allocations

    检测内存分配的工具,可查看哪些耗内存的方法


    B24E072C-9733-4FDC-BD08-4CF880EE9A17.png

    Core Animation

    检测离屏渲染问题,我发现我的Xcode10.1 右下角没有Color Blended Layers 等的一些选项,原来Xcode换了位置。

    E6A6A32B-9334-46A7-A943-543741D6B9C6.png
    在运行真机高度程序时,可以在功能栏里找到,如下。
    414744B4-7FD0-4C6B-8123-29F86F413F46.png
    选择不同的配置在手机上会显示
    1A306522-2BA2-4302-8692-0BFDA8B16CAB.png
    至于怎样离屏渲染的一些优化,这里推荐一个写得很好的文章 Instruments性能优化-Core Animation

    总结

    • 基本了解Instruments常用工具的使用
    • core animation可以调离屏渲染等

    相关文章

      网友评论

        本文标题:Instruments使用的记录

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