导致layer绘制的性能问题
CALayer
的大部分属性都是通过GPU
来绘制的。以下几类操作可能导致layer
绘制的性能问题:
- 过多的几何形状:这里的瓶颈主要是在对
layer
的预处理及通过IPC
发送到render server
这个过程,即CPU
的处理,而不是GPU
的绘制; - 过多的重绘(
overdraw
):这主要是由绘制重叠的半透明层引起的; - 离屏渲染:这个应该比较熟悉,诸如
layer
的圆角绘制、mask、阴影等操作都会导致离屏渲染,主要是因为需要为离屏绘制的图片分配额外的内存并在绘制上下文之间切换; - 过大的图片:如果图片大小超过GPU所支持的最大纹理大小,则在绘制前CPU需要去做预处理。
参考
iOS Core Animation Advanced Techniques