性能优化02.5:Animation Hitches

张建 lol

Animation Hitches 前言

Instrument 新增 Animation Hieches 监测类型用于监测 卡顿,去掉了 Core Animation 检测方式。

Animation Hitches 简介

卡顿时间比(Hitch Time Ratio) 的概念用于替代 FPS,iPhone13Pro之前屏幕刷最高刷新率仍为60HZ,iPhone13Pro及以上帧率调整到120HZ

调试页面渲染性能

所以,现在可以不用打开Instruments也可以。

  1. Color Blended Layer 图层混合
  • 什么是图层混合:界面都是由多个UI控件 叠加 的,如果有 透明或半透明 的控件,GPU会计算显示颜色,损耗GPU资源。

  • 解决办法:打开 color Blended Layer 选项,显示 红色则出现图层混合;我们调试的目的就是把红色区域消减的越少越好,只要 设置控件不透明 即可。

1
2
label.background = [UIColor whiteColor];
label.layer.masksToBounds = YES;
  1. Color Hits Green and Misses Red(光栅化)

检测是否正确的使用 layershouldRasterize 属性,shouldRasterize = YES 开启光栅化。

  • 什么是光栅化?

光栅化是将一个layer预先渲染成 位图(bitmap),再加入到缓存中,成功被缓存的layer会标注为绿色,没有成功缓存的会标注为 红色,正确使用光栅化可以得到一定程度的性能提升。

  • 适用情况:一般在图像内容不变的情况下才使用光栅化,例如设置阴影耗费资源比较多的 静态内容,如果 使用光栅化 对性能的提升有一定帮助。

  • 非适用情况:如果 内容会经常变动,这个时候不要开启,否则会造成性能的浪费。 例如我们在使用tableViewCell中,一般 不要用光栅化,因为tableViewCell的绘制非常频繁,内容在不断的变化,如果使用了光栅化,会造成大量的离屏渲染降低性能。

  1. Color Copied Images(图片颜色格式)

拷贝给CPU进行转化的图片显示为绿:GPU不支持当前图片的颜色格式,那么就会将图片交给CPU预先进行格式转化,并且这张图片标记为蓝色

  1. Color Misaligned Images(图片大小)

图片大小imageView size 不匹配,会出现 黄色,消耗资源压缩图片

  1. 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.
On this page
性能优化02.5:Animation Hitches