instrument 之 core animation
Posted diyigechengxu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了instrument 之 core animation相关的知识,希望对你有一定的参考价值。
1、Color Blended Layers
图层混合 需要消耗一定的GPU资源,避免设置alpha小于1,省去不必要的运算
2、Color Hits Green and Misses Red
光栅化 view.layer.shouldRasterize = YES;光栅化是将一个layer预先渲染成位图(bitmap),然后加入缓存中。如果对于阴影效果这样比较消耗资源的静态内容进行缓存,可以得到一定幅度的性能提升
3、Color Copied Images
图片格式 把图片从PNG或JPEG等格式中解压出来,得到像素数据, 如果GPU不支持这种颜色各式,CPU需要进行格式转换
4、Color Misaligned Images
图片的缩放 图片的缩放需要占用时间,因此我们要尽可能保证无论是本地图片还是从网络或取得图片的大小,都与其frame保持一致。
5、Color Offscreen-Rendered Yellow
离屏渲染 表示渲染发生在屏幕之外。离屏渲染意味着把渲染结果临时保存,等用到时再取出,因此相对于普通渲染更占用资源。
1、重写drawRect方法;(自动触发离屏渲染)
2、有mask或者是阴影(layer.masksToBounds, layer.shadow*),模糊效果也是一种mask;(自动触发离屏渲染)
3、layer.shouldRasterize = true;(手动开启离屏渲染)
解决办法:imgView.layer.shadowPath = UIBezierPath(rect: imgView.bounds).CGPath
指定了阴影路径,如果没有手动指定,Core Animation会去自动计算,这就会触发离屏渲染。如果人为指定了阴影路径,就可以免去计算,从而避免产生离屏渲染。
设置cornerRadius本身并不会导致离屏渲染,但很多时候它还需要配合layer.masksToBounds = true使用。根据之前的总结,设置masksToBounds会导致离屏渲染。
必须设置圆角,可以使用光栅化技术将圆角缓存起来view.layer.shouldRasterize = true
以上是关于instrument 之 core animation的主要内容,如果未能解决你的问题,请参考以下文章
我应该怎么做才能使“io.micrometer.core.instrument.MeterRegistry”对象自动装配
Instruments性能优化-Core Animation
案例分享:如何通过JVM crash 的日志和core dump定位和分析Instrument引起的JVM crash