对的查看事件窗口下的duration时间还是不够的,因为这个时间每次load好像都会变。因此需要结合查看性能计数器来进一步判断性能瓶颈。
1、点击window下的performance counter Viewer
2、选择CPU或GPU的计数参数
在弹窗中,左边是CPU或GPU的详细参数,选择自己需要的参数选中(也可以全部勾选),然后点sample counters分析以及截帧的数据
3、分析后数据以一张大列表的方式显示每个EID事件的详细CPU和GPU性能参数,这里面的数据几乎都是数量,除非表头有明确带单位的,就按照单位算。至于为什么数量后面还带着小数,这个我也不太清楚,可能是平均,也可能是CPU(GPU)的时间片时间总长度。但是不管如何,只要这些参数值越大,那么肯定说明瓶颈的可能就越大。按照这个思路的话,就可以去分析表格里面的各个参数情况了。
其实前面的弹窗也会对每一个参数做一个简单的说明它有什么用的,看这里就能够大概明白它的含义。
4、在事件窗口(event browser)里面选定某一事件,会在performance窗口自动帮定位到该EID行,且高亮显示,可以很方便的去分析本行已经上下几行的性能情况。
5、查看的参数,如果这些参数,寄存器数据读写,缓冲数据的读写,shader包括纹理shader,shader周期等这些比较影响性能的参数比较大,那么性能瓶颈就出现在这个地方了。
通过这些参数,可以看出大概的瓶颈极有可能是由于寄存器里面的数据读写、缓冲读写、shader这些操作导致的,读写这块影响的是带宽瓶颈,shader操作这块 也同样导致瓶颈,这样一来就能定位出在绘制这一个draw的时候,是不是纹理读写、shader的处理出现瓶颈了呢?后来与程序在进一步严重的时候,发现确实是这样的。