zoukankan      html  css  js  c++  java
  • Snapdragon——1.定位游戏瓶颈

    1. 怎么定位瓶颈?

    第一步,看fps;(1)平均fps;(2)帧率连贯性,有没有卡顿、掉帧。平均为42帧,但会掉到37. Trace tab下的rendering stage、gpu activity、cpu Scheduling是主要量度。

     rendering stage表示gpu上的 执行。有surface,通道。

      gpu activity能看到cpu和gpu间的交互。

    cpu scheduling能看到cpu每个核心的执行。看是否有调度的问题。

    1. 看是否gpu是瓶颈。在realtime签页,看gpu利用率,如果gpu利用率很高;在trace tab下,看surface之间有间隔,说明gpu瓶颈;

     

    下面这张gpu利用率98到100,说明gpu是瓶颈。

    另外,在trace下,gpu Activity合gpu stages下面。也能参考,如下图,gpu不是瓶颈:

     而,如下图,gpu瓶颈:

    2. 如果gpu不是瓶颈,那么看cpu是否是瓶颈。

    cpu利用率有时候很低,但cpu还可能是瓶颈。因为cpu是多核心的。这时候看cpu scheduling。

     cpu6好像是瓶颈。

    然后看这个核心什么是瓶颈。

    可以看到,SatisfyConstraints函数是瓶颈。修改函数、弄到多个线程后,

    cpu不再是瓶颈了。

    (3)垂直同步瓶颈

    如果不是gpu、cpu,那么可能是垂直同步受限。也就是说游戏跑得能达到屏幕显示那个速度了。可以看到这样的:

     帧时间大约是16ms(60fps),在帧结尾,cpu和gpu都在等surface渲染。也就是说游戏已经跑的屏幕的刷新速度一样了。

    但是即使游戏已经垂直同步受限了,依然有优化的潜能,除了提高帧率以外的。

    更多app的问题在于耗电量大。所以,依然要优化代码,用更少的资源、运行在温度更低的机器上,做更少的工作,实现更高的帧率。在低端设备上,性能依然很好。

     参考链接:https://developer.qualcomm.com/software/snapdragon-profiler/app-notes/identify-application-bottlenecks

  • 相关阅读:
    实现斐波那契数列的三种方式
    [LintCode]计算两个数的交集(二)
    [LintCode]计算两个数的交集(一)
    JNI技术概念小结
    require.js的用法
    JavaScript中模块“写法”
    模块化的JavaScript
    javascript如何判断访问网页的设备及是否支持触屏功能
    Javascript自由拖拽类
    JQuery中html()方法的注意事项
  • 原文地址:https://www.cnblogs.com/Shaojunping/p/12342257.html
Copyright © 2011-2022 走看看