• 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

  • 相关阅读:
    【译】第26节---配置一对多关系
    【译】第25节---配置一对一关系
    【译】第24节---Fluent API
    pycharm 更改创建文件默认路径和修改字体大小
    软件工程----自我介绍
    课堂作业---读取文件实现求数组中所有子数组和的最大值
    实现数组中连续子数组值和最大
    android-----实现不两个不同的activity的跳转和数据传递
    android------解决editText只输入一行和textView不显示过多的内容
    android-------实现底部导航的模板
  • 原文地址:https://www.cnblogs.com/Shaojunping/p/12342257.html
Copyright © 2020-2023  润新知