美文网首页
##GPU 资源消耗原因和解决方案

##GPU 资源消耗原因和解决方案

作者: Adam_潜 | 来源:发表于2018-12-09 16:14 被阅读6次

https://www.jianshu.com/p/d27323c18790

  1. 当在较短时间显示大量图片时(比如 TableView 存在非常多的图片并且快速滑动时),CPU 占用率很低,GPU 占用非常高,界面仍然会掉帧。

避免这种情况的方法只能是尽量减少在短时间内大量图片的显示,尽可能将多张图片合成为一张进行显示。

  1. 当图片过大,超过 GPU 的最大纹理尺寸时,图片需要先由 CPU 进行预处理,这对 CPU 和 GPU 都会带来额外的资源消耗。目前来说,iPhone 4S 以上机型,纹理尺寸上限都是 4096x4096,更详细的资料可以看这里:iosres.com

所以,尽量不要让图片和视图的大小超过这个值(纹理尺寸上限)。

  1. 当多个视图(或者说 CALayer)重叠在一起显示时,GPU 会首先把他们混合到一起。如果视图结构过于复杂,混合的过程也会消耗很多 GPU 资源。

为了减轻这种情况的 GPU 消耗,应用应当尽量减少视图数量和层次,并在不透明的视图里标明 opaque 属性以避免无用的 Alpha 通道合成。当然,这也可以用上面的方法,把多个视图预先渲染为一张图片来显示。

  1. CALayer 的 border、圆角、阴影、遮罩(mask),CASharpLayer 的矢量图形显示,通常会触发离屏渲染(offscreen rendering),而离屏渲染通常发生在 GPU 中。当一个列表视图中出现大量圆角的 CALayer,并且快速滑动时,可以观察到 GPU 资源已经占满,而 CPU 资源消耗很少。这时界面仍然能正常滑动,但平均帧数会降到很低。

为了避免这种情况,可以尝试开启 CALayer.shouldRasterize 属性,但这会把原本离屏渲染的操作转嫁到 CPU 上去。对于只需要圆角的某些场合,也可以用一张已经绘制好的圆角图片覆盖到原本视图上面来模拟相同的视觉效果。
最好把需要显示的图形在后台线程绘制为图片,避免使用圆角、阴影、遮罩等属性。

相关文章

  • 2019-11-19

    GPU 资源消耗原因和解决方案 GPU 资源消耗原因和解决方案 相对于 CPU 来说,GPU 能干的事情比较单一:...

  • 卡顿优化

    卡顿的原因:CPU和GPU的资源消耗或CPU使用率低 总结 解决方案很明了:降低CPU和GPU的资源消耗,提高CP...

  • iOS 性能优化_GPU 消耗优化

    GPU 资源消耗原因和解决方案 相对 CPU 来说,GPU 能做的事情比较单一:接收提交的纹理(Texture)和...

  • Android性能测试之GPU

    卡顿 卡顿产生的原因: 1、CPU资源消耗原因;2、GPU资源消耗原因。 CPU上文已经阐述,接下来说一下GPU。...

  • ##GPU 资源消耗原因和解决方案

    https://www.jianshu.com/p/d27323c18790 当在较短时间显示大量图片时(比如 T...

  • 2019-11-19

    CPU 资源消耗原因和解决方案 CPU 资源消耗原因和解决方案 对象创建 对象的创建会分配内存、调整属性、甚至还有...

  • iOS 性能优化_CPU 消耗优化

    CPU 资源消耗原因和解决方案 对象创建 原因:对象的创建会分配内存、调整属性,甚至还有文件读写等操作,比较消耗 ...

  • 性能优化

    1.iOS 性能优化的探索本文主要从cpu和gpu两方面入手谈资源消耗原因及解决办法 2.MLeaksFinder...

  • iOS开发积累知识(二)----降低CPU和GPU消耗

    CPU 资源消耗原因和解决方案 对象创建 对象的创建会分配内存、调整属性、甚至还有读取文件等操作,比较消耗 CPU...

  • CPU资源消耗原因和解决方案

    对象创建 对象的创建会分配内存、调整属性,甚至还有读取文件等操作,比较消耗CPU资源,尽量用轻量的对象代替重量的对...

网友评论

      本文标题:##GPU 资源消耗原因和解决方案

      本文链接:https://www.haomeiwen.com/subject/kickhqtx.html