iOS性能优化02-产生卡顿的原因

  • 卡顿产生的主要原因CPU和GPU所花费的时间太长从而造成俗称的丢帧(掉帧)
  • 我们以下图为例,红色代表CPU,绿色代表GPU


    iOS性能优化02-产生卡顿的原因


    1. 首先把CPU把计算好的数据交给GPU去渲染,紧接着来一个VSync(垂直同步信号)就会把刚CPU计算好并且GPU渲染好的数据展示到屏幕上完成这一帧的显示,注意一旦发生一个VSync就会把GPU渲染到帧缓存里的数据显示到屏幕上,并且开始下一帧的操作,
    2. 我们第二帧的操作GPU花费的时间比较短还留出一段空闲时间等VSync的到来然后显示到屏幕上,但也有一种情况就是:
    3. 我们第三帧的操作,CPU计算完数据交给GPU去渲染,然而由于这次的数据比较多当VSync到来时,发现GPU还没有渲染完,上面我们也说了VSync一旦到来就会把GPU渲染到帧缓存里的数据显示到屏幕上,但是GPU并没有渲染完,所以只能显示上一帧的数据,也就意味着当前这帧数据丢失了,俗称丢帧或掉帧,而当前帧只能等下次VSync到来时再显示,因此就会造成卡顿(本来要显示当前帧结果只能显示前一帧)

    卡顿解决的主要思路:

    • 尽可能减少CPU、GPU资源消耗
    • 一般我们要保证每秒60帧这样看起来就不会有什么问题了,那按照60FPS的刷帧率,每个16ms就会有一次VSync信号(为什么是16ms?因为1s=1000ms,1000ms/60~16ms)也就是说我们16ms内完成CPU和GPU操作就不会有什么卡顿问题了


    分享到:


    相關文章: