iOS页面图层性能和页面卡顿的原因
来源:互联网 发布:淘宝淘口令在哪里设置 编辑:程序博客网 时间:2024/05/17 05:19
iOS页面图层性能和页面卡顿的原因
2016感悟和分享
这是我2017年分享到朋友圈出来的第一篇文章,也是简书第一篇文章.
总结2016,两字经历,遇到很多人,有离开的,有留下的,感谢这些同学朋友同事和经历.即使是进医院的时候我也觉得也挺好的,可能很挣扎,痛苦和闹心,至少经历了才会体会到点什么,才能看明白些什么,虽然现在还要吃药休息,我觉得时间还是要花在有意义的事情上比较好吧,有些无关痛痒的事情也没时间去想,我谈不上情怀,但至少算是出于初衷和喜欢.未来的时间,只要我晚上有时间状态不错的时候,我就会把所见所学所悟整理成文字和demo分享给喜欢iOS技术的同学们.下面这篇文章我是结合我自己所见所学和微信里好朋友的文字文章,感谢!下面入正题:
iOS系统如何把图像内容展示到屏幕,呈现到我们的面前?为什么APP会感觉卡顿?
iOS系统的手机呈现内容到展示,需要先了解CPU和GPU,因为两者的共同参与,我们才能看到APP的内容展示.CPU我们很好理解,但还是要说一下:CPU负责计算显示内容,视图的创建,布局的计算,图片解码,文本绘制都是通过CPU计算出来.那这个GPU是什么?GPU负责把CPU计算出的结果变换合成渲染,然后呈递给帧缓冲区,等待VSync信号到来,才会有我们看到APP的内容.所谓的页面卡顿是因为垂直同步机制,在一个VSync时间内,CPU或者GPU没有完成内容的提交,导致这一帧丢失了,而下一个VSync时间到来不会把上一帧所丢失的内容在做一遍,所以在下一个VSync时间的显示之前,屏幕会保留之前的内容不变.
为了平衡CPU和GPU的负荷运算,不要在两者任何一方做负荷运算
CPU负荷任务
1.计算布局
2.对象创建
3.autolayout复杂的页面会消耗CPU,增加负荷
4.文本计算:文本长宽高比如cell里文本的计算
5.文本控件label,textField,textView,webView,其排版和绘制都是在主线程进行,当显示大量文本时,会很大的消耗CPU.包含文本的视图在改变布局时会触发文本重新渲染,对于静态文本我们应该要尽量减少它所在视图的布局修改
6.图像的绘制,图像绘制我会在之后详细讲解动画的分享文章中细说,CG开头方法消耗CPU资源,我们可以将绘制过程放在后台线程,然后在主线程里讲结果设置到layer的contents中
6.图片的解码 imageNamed加载图片后会立即解码然后系统会缓存起来,有一个问题是我们不知道这个图片何时会释放掉,这个缓存策略没有公开
GPU负荷任务
GPU任务单一,接收提交纹理,点的描述,应用变换,渲染.大体上讲CAlayer的属性大多数都是GPU绘制.GPU之后我会具体用代码补充进来看下效果,就很明显了,先说大概几点:
避免GPU负荷的几点:
1.不要有大量的几何结构,减少在短时间大量图片的显示
2.避免视图的混合,减少透明的视图
3.不要离屏渲染,不要在当前屏幕缓冲区以外开辟的一个缓冲区进行渲染和操作.
总结
相关理论知识,大家可能都有了解,我只是进行总结了下,之后我有时间会尽量完善,在每一个点后面写个demo和链接供大家下载和探讨,也会分享出更多的文章包括我自己写的一套架子和一些实用的工具类,自己总结和所见所学所悟,不对的地方希望各路大牛们指点.有病在身先行休息,最后感谢所有朋友,谢谢.
- iOS页面图层性能和页面卡顿的原因
- ios端页面滚动出现卡顿的原因之一
- iOS解决滑动页面卡顿的基本技巧
- ios 卡顿,push多次同一个页面
- IOS页面跳转卡顿问题
- android页面卡顿
- 页面间跳转的卡顿问题
- ios push卡顿,多次push同一个页面
- ios跳转页面时出现卡顿现象
- html5页面在ios滑动卡顿问题
- iOS学习笔记之g高效实现圆角的方式---防止页面卡顿
- 解决页面使用overflow: scroll在iOS上滑动卡顿的问题
- HTML页面在IOS上出现卡顿的解决方案(overflow:scroll)
- css ios H5页面web页面 上下滑动卡顿问题解决方案(亲测)
- iOS Xcode启动模拟器之后电脑卡顿的原因
- iOS 页面性能优化
- iOS 页面性能优化
- 导航控制器页面切换卡顿的问题
- Activity随着手指移动侧滑返回
- 接口测试工具SoapUI Pro5.1.2基本使用20150920
- 接口测试Fiddler实战20150921
- JS递归、闭包、this
- sklearn——朴素贝叶斯文本分类4
- iOS页面图层性能和页面卡顿的原因
- 安全性测试AppScan工具使用实战
- Java程序性能分析工具Java VisualVM(Visual GC)—程序员必备利器
- 深入浅出搜索架构引擎、方案与细节
- Built-in shader variables
- adb工具如何连接手机安装apk
- adb工具如何连接手机安装apk
- Java字符串处理知识点
- linux每天一小步---touch命令详解