Core Animation工具用来检测Core Animation性能,它为我们提供了周期性的FPS(Frames Per Second 每秒传输的帧)
为了做到动画的平滑,你需要以60FPS(帧每秒)的速度运行,以同步屏幕刷新速率。通过基于NSTimer
或者CADisplayLink
的动画你可以降低到30FPS,而且效果还不错,但是没办法通过Core Animation做到这点。如果不保持60FPS的速率,就可能随机丢帧,影响到体验。
Core Animation工具也提供了一系列复选框选项来帮助调试渲染瓶颈:
Color Blended Layers 这个选项基于渲染程度对屏幕中的混合区域进行绿到红的高亮显示。由于重绘的原因,混合对GPU性能有影响,同时也是滑动和动画帧率下降的罪魁祸首之一。
Color Hits Green and MissesRed当使用
shouldRasterizep
属性的时候耗时的图层绘制会被缓存,然后当做一个简单的扁平图片呈现。当缓存再生的时候这个选项就用红色对栅格化图层进行了高亮。如果缓存频繁再生的话,这就意味着,栅格化可能会有负面的性能影响了。Color Copied Images 有时候寄宿图片的生成意味着Core Animtaion 被强制生成一些图片,然后发送到渲染服务器,而不是简单的指向原始指针。这个选项把这些图片渲染成蓝色。复制图片对内存和CPU使用来说,是一项非常昂贵的操作,所以应该尽可能避免。
Color immediately 通常 Core Animation Instrument 以每秒以每秒十次的频率更新图层调试颜色。对某些效果来说,这显然太慢了,这个选项就可以设置每帧都更新(可能会影响到渲染性能,而且会导致帧率测量不准,所以不要一直都设置它)。
Color misaligned Images 这里会高亮那些被缩放或者拉伸,以及没有正确对起到像素边界的图片。这些中大多数通常会导致图片的不正常缩放,如果把一张大图当缩略图显示,或者不正确的模糊图像。那么这个选项会帮你识别出问题所在。
Color Offscreen-Rendered Yellow 这里会把那些需要离屏渲染的图层高亮成黄色。这些图层很可能需要用
shadowPath
或者shouldRasterize
来优化。Color OpenGL Fast Path Blue 这个选项会对任何使用OpenGL绘制的图层进行高亮。如果仅仅使用UIKit或者Core Animtaion的API,那么不会有任何效果。
Flash Updated Regions 这个选项会对重绘的内容高亮成黄色(也就是任何现在软件层面使用Core Animtaion绘制的图层)。这种绘图的速度很慢,如果频繁发生这种情况的话,这意味着有一个隐藏的bug,或者说通过增加缓存,或使用替代方案会有提示的空间。