性能优化02.5:Animation Hitches
Animation Hitches 前言
Instrument
新增 Animation Hieches
监测类型用于监测 卡顿
,去掉了 Core Animation
检测方式。
Animation Hitches 简介
卡顿时间比
(Hitch Time Ratio) 的概念用于替代 FPS
,iPhone13Pro之前屏幕刷最高刷新率仍为60HZ,iPhone13Pro及以上帧率调整到120HZ
调试页面渲染性能
所以,现在可以不用打开Instruments也可以。
Color Blended Layer
图层混合
什么是图层混合:界面都是由多个UI控件
叠加
的,如果有透明或半透明
的控件,GPU会计算显示颜色,损耗GPU资源。解决办法:打开
color Blended Layer
选项,显示红色则出现图层混合
;我们调试的目的就是把红色区域消减的越少越好,只要设置控件不透明
即可。
1 | label.background = [UIColor whiteColor]; |
- Color Hits Green and Misses Red(光栅化)
检测是否正确的使用 layer
的 shouldRasterize
属性,shouldRasterize = YES
开启光栅化。
- 什么是光栅化?
光栅化是将一个layer预先渲染成 位图(bitmap)
,再加入到缓存中,成功被缓存的layer会标注为绿色,没有成功缓存的会标注为 红色
,正确使用光栅化可以得到一定程度的性能提升。
适用情况:一般在图像内容不变的情况下才使用光栅化,例如设置阴影耗费资源比较多的
静态内容
,如果使用光栅化
对性能的提升有一定帮助。非适用情况:如果
内容会经常变动
,这个时候不要开启,否则会造成性能的浪费。 例如我们在使用tableViewCell
中,一般不要用光栅化
,因为tableViewCell的绘制非常频繁,内容在不断的变化,如果使用了光栅化,会造成大量的离屏渲染降低性能。
- Color Copied Images(图片颜色格式)
拷贝给CPU进行转化的图片显示为绿:GPU不支持当前图片的颜色格式,那么就会将图片交给CPU预先进行格式转化,并且这张图片标记为蓝色
- Color Misaligned Images(图片大小)
图片大小
和 imageView size
不匹配,会出现 黄色
,消耗资源压缩图片
- Color Offscreen-Rendered Yellow(离屏渲染)
触发离屏渲染的操作:
- drawRect
- layer.shadow
- layer.shouldRasterize
- layer.mask
- layer.masksToBounds 和 layer.cornerRadius 同时使用等
- Post title:性能优化02.5:Animation Hitches
- Post author:张建
- Create time:2020-08-14 12:12:50
- Post link:https://redefine.ohevan.com/2020/08/14/OC性能优化/性能优化02.5:Animation Hitches/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.