我们知道渲染过程中是CPU和GPU协作完成的,你只有加快CPU的计算布局,优化CPU的渲染,才能使视频聊天源码界面流畅。下面来看具体的一些优化:
CPU
1、对象的创建
-
- 1、尽量用轻量的对象代替重量的对象。CALayer比UIView要轻量,因为用UIView显示的它最终都要变化为CALayer显示,既然这样那直接用CALayer显示不是更好。但这里又要说一个区别,CALayer是用来显示内容的,它是不可以做交互的。而 UIView是管理事件的,所以 不需要交互 触摸的时候,我们才能用CALayer。
-
- 2、使用纯代码。虽然我不喜欢用纯代码写(毕竟有点慢),但纯代码写确实多人开发易于管理。你要是xib或者Storyboard发生了冲突,不好修改。而且纯代码加载界面更快。就举个最直观的,你点击xib的时候是不是半天才能出来。
-
- 3、懒加载
2、对象的调整
-
- 1、尽量不必要的属性修改 CALayer内部并没有属性,当调用属性方法是,它内部是通过运行时resolveInstanceMethod为对象临时添加方法,把对应属性值保存到内部的字典中,非常耗资源。而我们修改UIView的属性时,实际就是CALayer来映射的。
-
- 2、当有大量的对象释放时,也是非常耗时的。
3、预排版
-
- 1、尽量减少视图的不急计算,这很好理解,我要算的东西少了CPU既然就快了。
-
- 2、Autolayout 说实话我一直都是用Autolayout来画的,它用起来块啊,而且非常直观。但随着视图数量的增加,Autolayout会严重影响CPU的性能。
-
- 3、文本计算 高度缓存
这两个现在用到的少了,因为都是自适应了,把上下的约束设置好。不过就使用到计算宽高
可以放到后台线程进行计算 避免阻塞主线程
高度缓存的话
使用FDTemplateLayoutCell
4、预渲染
GPU层面优化
-
- 1、尽量减少在短时间内大量图片的实现,渲染非常耗时 很有可能出现掉帧的情况
-
- 2、尽量避免图片的尺寸超过4096x4096,因为当图片超过这个尺寸时,会现有CPU进行鱼锤,然后在提交给GPU处理,导致额外CPU资源消耗
-
- 3、尽量减少视图数量和层次,因为视图过多且重叠,CPU会将其混合,混合的过程非常耗时
-
- 4、异步渲染 可以将cell中的所有控件、视图合成一张图片进行显示
Graver三方框架
-
- 5、视频聊天源码避免离屏渲染 前面已经说过了
声明:本文由云豹科技转发自麻蕊老师博客,如有侵权请联系作者删除
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69982461/viewspace-2848719/
,如需转载,请注明出处,否则将追究法律责任。