Instruments 使用

闲着没事,想起最近好多关于性能的文章,决定去研究一下Instruments 的使用。

要使用就得知道这东西是啥。

官方文档点这个链接https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/

还有一个不知道什么版本的中文翻译链接http://cdn.cocimg.com/bbs/attachment/Fid_6/6_24457_90eabb4ed5b3863.pdf

Core Animation

第一个选项 混合图层

设备会把当前图层和背景图层进行alphe叠加,这是一项很耗性能的一件事。如果动画中每一帧都做叠加,性能的损耗是很严重。

优化方式:

1.uiview 尽量设成与superview 同背景色

2.贴图避免使用带alpha通道的图片,

如果必须使用Alpha,则主动去Alpha,提前和背景色合成为不含Alpha的图片

3.UIImageview 避免使用半透明

UIImageview的半透明取决于一下几项

1.显示的图片

2.View的opaque属性的值

3.View的alpha值

4.View的背景色

当Opaque属性为YES的时候,imageView的alpha属性会被忽略,图层是否半透明取决于图片和imageView本身的背景色的叠加结果。

如果叠加结果图全部不透明,则图层不透明,不会触发blend操作。

如果叠加结果中出现半透明区域,则整个图层都会变成不透明,会触发blend操作。

如果Opaque属性为NO的时候,图层是否半透明取决于图片和imageView的multiplied叠加结果确定。

简单理解,如果可能尽量:

设置Opaque为YES(其实默认就是YES)

背景色设置为不含alpha的颜色

alpha值最好也是1(不透明)

适用场景:

通用优化规则,不会造成副作用

Color Hits Green and Misses Red

能够使用缓存的光栅化标为绿色。

这个选项主要是检测我们有无滥用或正确使用layer的shouldRasterize属性.成功被缓存的layer会标注为绿色,没有成功缓存的会标注为红色。

在测试的过程中,第一次加载时,开启光栅化的layer会显示为红色,这是很正常的,因为还没有缓存成功。但是如果在接下来的测试,例如我们来回滚动TableView时,我们仍然发现有许多红色区域,那就需要谨慎对待了。因为像我们前面讨论过的,这会引起offscreen rendering。

检查一下是否有滥用该属性,因为系统规定的缓存大小是屏幕大小的2.5倍,如果使用过度,超出了缓存大小,会引起offscreen rendering。检测layer是否内容不断更新,内容的更新会导致缓存失效和大量的offscreen rendering.

Color copied images

这个选项主要检查我们有无使用不正确图片格式,若是GPU不支持的色彩格式的图片则会标记为青色,则只能由CPU来进行处理。我们不希望在滚动视图的时候,CPU实时来进行处理,因为有可能会阻塞主线程。

Color misaligned images

这个选项检查了图片是否被放缩,像素是否对齐。被放缩的图片会被标记为黄色,像素不对齐则会标注为紫色。

Color offscreen-rendered yellow

这个选项将需要offscreen渲染的的layer标记为黄色。

NavigationBar和ToolBar被标记为黄色。因为它们需要模糊背后的内容,这需要offscreen渲染。但是这是我们需要的。而图片也是被标记为黄色,那是因为阴影的缘故。我前面已经提到了这一点,如果此时我们用shadowPath来替代的话,就能够避免offscreen渲染带来的巨大开销。

Color OpenGL fast path blue

这个选项勾选后,由OpenGL compositor进行绘制的图层会标记为蓝色。这是一个好的结果。

Flash updated regions

会标记屏幕上被快速更新的部分为黄色,我们希望只是更新的部分被标记完黄色。

你可能感兴趣的:(Instruments 使用)