在上一篇文章中我簡(jiǎn)要的介紹了一下我們要采用的平臺(tái)(PowerVR GPU+Cocos2d-x),以及一些列的評(píng)測(cè)規(guī)則和工具。這本篇文章中我將向大家展示如何使用PVRTune工具來鑒別性能瓶頸。
搭建測(cè)試環(huán)境
如果你想體驗(yàn)一下Fantasy Warrior 3D(幻想勇士3D)這個(gè)游戲,你可以訪問“這里”,提供了游戲視頻介紹,然后訪問“這里”下載這個(gè)游戲的源代碼。
第一步我們需要按照Fantasy Warrior 3D(幻想勇士3D)工程目錄下的README.md文件說明編譯游戲。然后我們才能夠使用PVRHub和PVRTune工具記錄性能分析文件。我已經(jīng)將我的記錄文件提交到了“這里”。這些文件記錄了如下環(huán)境下分析信息:
? 硬件信息
o 設(shè)備名稱:昂達(dá)V989平板電腦(Allwinner A80芯片,PowerVR Series6G6230 GPU)
? 軟件信息
o 安卓系統(tǒng)版本:4.4.2
o 驅(qū)動(dòng)信息:版本1.4 Rogue_DDK_Android_RSCompute rogueddk @3234138 (正式版) sunxi_android
o PVRTuneDeveloper:版本V14.111.1(SDK bulid 3.5@3530647)
o PVRpPefServerDeveloper:版本V14.111.1(SDK build 3.5@3533642)
o PVRTrace記錄庫文件:版本V20(SDK build 3.5@3533642)
鑒別性能瓶頸
在這游戲中要想鑒別性能瓶頸,我們可以采用PVRTune工具。在所有的記錄文件(*.pvrtune)中我提取了一個(gè)具有代表性性的數(shù)據(jù)文件(2338)。我將用下面列出的幾條標(biāo)準(zhǔn)向大家解釋如何借助PVRTune工具來鑒別性能瓶頸。性能瓶頸一般可分為以下五種類型:
? CPU局限
? 頂點(diǎn)局限(游戲中一般有頂點(diǎn)著色渲染)
? 垂直同步局限
? 碎片局限
? 帶寬局限
CPU局限
CPU性能顯示還是很容易鑒別的,盡管顯卡的使用率不高但是我們可以明顯感覺到性能很差,幀率很低。借助PVRTune工具更能直觀的鑒別出來,受CPU性能局限的應(yīng)用往往CPU的負(fù)載會(huì)達(dá)到或者接近100%(a)。
其它鑒別因素還有著色器加載的間隔,這個(gè)間隔表示PowerVR硬件將進(jìn)行暫時(shí)休眠,因?yàn)樗赡苷诘却鼵PU操作完成
(b)或者GPU正在等待下一次的幀同步。
以Fantasy Warrior 3D(幻想勇士3D)為測(cè)試對(duì)象,我們收集了如下數(shù)據(jù):
從分析圖中我們可以看出CPU的負(fù)載率僅為12.0%,但是在Tiler和渲染之間出現(xiàn)很多較長(zhǎng)的間隔。因此PowerVR硬件在等待來自渲染線程(10612)指令的同時(shí)進(jìn)入了休眠。所以此游戲的最大問題就是Cocos2d-x引擎不支持獨(dú)立的渲染線程。每一幀的渲染都需要等待游戲邏輯完成后才能進(jìn)行。在第三行的時(shí)序圖中你可以發(fā)現(xiàn)每一幀的圖像API調(diào)用之間都有很大的間隔,這表明CPU的性能局限。
Vertex(頂點(diǎn))局限
頂點(diǎn)局限的原因是每一幀都有很多定點(diǎn)需要處理或者是使用了復(fù)雜的頂點(diǎn)著色器,亦或者是兩者共同的原因。我們也可以通過時(shí)序間隔來鑒別,在渲染操作(a)時(shí)序中會(huì)有很多大的間隔,而在Tiler操作(b)時(shí)序中只有很小或者沒有間隔。
我們可以從頂點(diǎn)加載處理過程和Tiler加載計(jì)數(shù)器中獲取更多更詳細(xì)的分析數(shù)據(jù)。如果Tiler激活指示曲線(c)是很高的一條線而加載處理過程不是:說明Vertex(頂點(diǎn))過程并沒有很多頂點(diǎn)元素需要處理,性能的支出主要用于Tiler操作。相反如果加載處理過程中Vertex指示曲線(d)很高而Tiler操作不是,那么性能的瓶頸主要是因?yàn)轫旤c(diǎn)的著色操作。
我們可以很明顯的看出,在渲染(Render)操作和Tiler操作曲線之間有很多的間隔。處理加載均值Vertex是1.6%,峰值達(dá)14.4%,Tiler操作均值為10%。盡管實(shí)際上每一幀的加載處理包括Vertex和Tiler效率均值都很低,我們可以借助PVRSaderEditor工具優(yōu)化Vertex(頂點(diǎn))著色。所幸的是Fantasy Warrior 3D(幻想勇士3D)并沒有vertex(頂點(diǎn))局限的問題。
垂直同步(V-sync)局限
垂直同步(V-sync)顯示上的一種設(shè)置,即在某一應(yīng)用中將圖形的更新速率與顯示器的更新速率進(jìn)行同步。這會(huì)造成一些幀有稍微延后的情況,強(qiáng)制設(shè)置為最快的刷新速率,減少屏幕的卡頓且降低功耗。具有V-sync局限應(yīng)用的特點(diǎn)是在圖形視圖中連續(xù)的幀之間會(huì)出現(xiàn)斷續(xù)的間隔,幀刷新速率被限制設(shè)置為最大值。如果可能的話,在分析某一應(yīng)用時(shí)v-sync應(yīng)該被禁用,否則它會(huì)給PVRTune的輸出數(shù)據(jù)增加干擾,這會(huì)讓我們更加難判斷哪些優(yōu)化工作是有用的或者各種優(yōu)化措施已經(jīng)見效。
評(píng)論