Instruments

作用:

  1. 追查代码中难以重现的问题。
    2)对你的程序进行性能分析。
    3)自动化测试你的代码。
    4)对你程序进行压力测试
    5)进行一般的系统级故障诊断
    6)对你的代码如果工作有更深入的了解。

有关的英文解释:
resident size:内存大小。
Dirty Size:脏数据的大小
Swapped Size:交换大小

CoreAnimation的使用:
简介:

是针对试图的优化。

  1. 设置背景颜色为不透明,为了减少GPU的性能:

    1) UILable设置方式:因为如果label的内容是中文,label实际渲染区域要大于label的size,最外层多了一个sublayer,如果不设置第二行label的边缘外层会出现图层混合的红色。
    label.backgroundColor = [UIColor whiteColor];
    label.layer.maskToBounds = YES
    2) UIImageView比较特殊,不进需要这个容器本身是不透明的,并且imageView包含的内容图片也也必须是不透明的。

  2. 光栅化:

简介:光栅化是讲一个layer预先渲染成位图,再加入到缓存中,成功被缓存的layer会标注为绿色,没有成功缓存的标注为红色,正确使用光栅可以得到一定程度的性能提升。

例如:内容不变的情况下才使用光栅化,例如阴影。但是如果内容经常变动就不需要光栅会造成性能的浪费。

3.图片颜色格式(Color Copied Images)

如果图片颜色格式是蓝色就说明图片格式是不支持的。

  1. Color Non-Standard Surface Formats(不标准的表面颜色格式)
  1. Color Misaligned Images(图片大小)

这个选项帮助我们查看图片大小是否正确显示。如果image size和imagView size不匹配,会消耗资源压缩图片。

6.Color OffScreen-Rendered Yellow(离屏渲染)
简介:

离屏渲染指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作。离屏渲染结束以后,再从离屏切到当前屏幕,把离屏渲染结果显示到当前屏幕上,这个操作很耗性能,实际开发中尽可能避免离屏渲染。

会触发离屏渲染的行为:

  1. drawRect:方法
  2. layer.shadow
  3. layer.allowsGroupOpacity or layer.allowsEdgeAntialiasing
  4. layer.shouldResterize
  5. layer.mask
  6. layer.masksToBounds && layer.cornerRadius

Time Profile使用:

Time Profile帮助我们分析代码的执行时间,找出导致程序变慢的原因,告诉我们时间都去哪了?

Leaks工具:

可以帮助我们检测出哪里出现了内存泄漏。

Allocations:

说到内存问题,我们更多的想到内存泄漏和野指针,还有另一种看似不是问题的内存问题,Abandoned Memory(被遗弃的内存)。这类内存有可能由于某些原因被分配,但并非一直需要,只是可能在程序运行期的某个时间需要,如内存缓存的图片,还有一个比较普遍的东西-单例。

使用方法:
在进入某个模块前标记一个Generation,这样会生成一个快照。然后进入、退出再标记一个Generation。
growth表示距离上次mark的增量。

你可能感兴趣的:(Instruments)