美文网首页
性能优化(一)_ Instruments使用

性能优化(一)_ Instruments使用

作者: 简_爱SimpleLove | 来源:发表于2018-11-08 17:46 被阅读13次

    为了检测APP的性能,我们可以使用Instruments中的工具来检测。

    下面是关系图:


    instruments工作流.png

    打开instrument的各种方式

    1、Profile
    2、xcode->open develop tools
    3、xcode debug navigator
    4、deck上打开
    5、comand+option拖入Applications目录加入Launchpad中
    6、命令行
    open /Applications/Xcode.app/Contents/Applications/Instruments.app

    设置默认分析模板

    可以在Edit scheme中设置每次打开instruments默认选择的工具。


    image.png

    分析模板选择

    1、目标设备列表
    2、目标进程
    3、模板分类
    4、打开现有分析报告


    image.png

    分析面板

    • 顶部工具栏


      image.png
    • 整个面板


      image.png
    • CPU


      image.png
    • 线程


      image.png
    • 详情


      image.png
    • 详情导航栏


      image.png

    快捷键

    • Comand+D 打开或关闭detail窗口
    • View->Zoom—>^+- 或者 ^++缩放纵向
    • Comand+或者Comand– 缩放横向
    • View—> Track—>添加/删除flag View->Track->管理flag
    • Command+1 记录设置,+2展示设置,+3扩展详情

    其他操作

    • 定位当前dSYM文件位置:file->symbols


      image.png
    • 进入代码源码


      image.png
    • detail与源码左右分屏对比


      image.png

    CPU监测

    CPU监测可以使用工具Time Profiler


    image.png

    CPU使用策略视图,可以查看CPU核心使用情况,平衡使用最好,即两个CPU用的一样的多

    image.png

    线程使用策略视图,查看主线程任务是否过多,如果过多可以将不必一定要在主线程完成的,放到其他线程,比如说网络请求和加载图片等操作

    Counter工具

    查看App的可能的性能瓶颈
    Performance monitor counters (PMCs) 即Counter工具
    衡量处理器发生的事件个数
    可以用这个工具找出最费时间的方法,从而进行优化

    图像性能

    • 减少view个数 ,例如聊天的图文混排,使用富文本代替labelss,imageviews
    • 减少使用半透明效果,或者不要把半透明加在一个经常变化的view之上,因为,不仅底层view要更新,半透明的也要更新。
    • shouldRasterize(栅格化) == true,将当前view绘制成image缓存,这个绘制过程本身比较耗时耗内存,但是如果界面很少变化,这种缓存能提升性能。
    • 使用needsToDrawRect:getRectsBeingDrawn:count:并将结果传给drawRect: (NSView,PC开发上面的)

    图像性能监测

    使用Core Animation这个工具
    下面是需要监测的一些参数:
    Blended 像素混合
    Color Copied images 图片能否需CPU要转码,需要的蓝色
    Misaligned 图像无法重合
    Offscreen-Rendered 离屏渲染工具
    Color Hits Green and Misses Red 检测栅格化的效果,绿色最佳

    Blended像素混合

    当图层有半透明时,如:view.backgroundcolor。

    • GPU需要进行像素混合,需要先绘制透明层下层的内容,再叠加透明层以达到透明的效果,而不影响帧率的情况下,GPU可绘制的像素是有限制的。

    通常优化方式:

    • backgroundColor设置为不透明色
    • Opaque设置为YES
    • 图片能不用透明的切图成不透明
    Color Copied images
    • 由Core animation拷贝的图片标记为蓝色
    • 如果图片格式GPU不能直接绘制,则会交给CPU先转码处理
    Misaligned图像无法重合
    • Misaligned Image表示要绘制的图像无法直接映射到屏幕上。
    • 此时系统需要进行缩放,抗锯齿等操作,增加了图形负担,通常这种问题出在对某些View的Frame重新计算和设置时产生的。
    Offscreen-Rendered检测

    离屏渲染(CPU)

    • drawRect UIGraphicGetCurrentContext()
    • 使用Core Graphics CreateBitMapContext()
    • 以上两种情况都会开辟一个CGContext,分配一块内存空间,用于离屏渲染。
      离屏渲染(GPU)
    • 设置cornerRadius, masks, shadows,edge antialiasing等
    • 设置layer.shouldRasterize = YES,用在view界面后续没有变化。

    Onscreen 缓冲区。

    Color Hits Green and Misses Red
    • 由于Shadow、Mask和Gradient等原因渲染很高,通常通过设置shouldRasterize栅格化属性为YES,缓存渲染内容。
    • 命中缓存image,显示绿色,未命中,显示红色。

    Allocations

    内存分配情况查看工具,可以查看每一个对象所占用的内存大小
    方便定位内存消耗在哪些对象上,从而进行优化,可以优化方法,算法和清除不必要的缓存等。

    其他工具

    Activity monitor
    一款ios活动监视器,能看到每一个应用所占用的系统资源情况,如:使用线程数,使用CPU时长,实际使用内存大小等。
    System trace工具
    Memory Usage

    相关文章

      网友评论

          本文标题:性能优化(一)_ Instruments使用

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