UWA 新功能 | 優化方法進階—定位子函數的開銷

原文鏈接:UWA 新功能 | 優化方法進階-定位子函數的開銷

通常情況下,通過代碼堆棧去定位項目性能瓶頸是最一針見血的方法,並且UWA的線上性能測評報告中已經支持了該功能。今天,我們在原有功能的基礎上加大分析力度—支持子函數代碼堆棧信息查看,幫助大家更為精準地定位CPU性能瓶頸和堆內存泄漏。

一、子函數的堆棧信息

1、查看子函數的CPU走勢

在以前的UWA性能測評報告中,我們可以查看渲染模塊Camera.Render的總體CPU耗時,如下圖:

這種逐幀查看的辦法可能存在一些關鍵信息漏失的隱患。為此,我們在原有功能基礎上增加了子函數走勢查看功能:點開主函數的堆棧信息,我們就可以查看其任意一個子函數的CPU完整走勢,從而更為精準地定位性能瓶頸。

下圖是個例子,即通過依次選擇Culling和CameraEffect.OnPreCull,能直接定位到部分場景中Culling計算瓶頸(黃色區域)。

具體操作方法可見如下視頻:

子函數CPU代碼堆棧_騰訊視頻 https://v.qq.com/x/cover/e0538f7hk17/e0538f7hk17.html

2、堆內存泄露問題的定位效率進一步提升

當一個項目的堆內存發生泄漏時,我們會在UWA的Mono測評報告中看到類似下面的圖:

在我們通過堆內存的具體分配堆棧來進行泄露點的定位時,一般情況下,我們會認為下圖中紅框函數為堆內存泄露的主要對象(其駐留內存最大為1.22 MB),並對其進行詳細的檢測。

但事實上,當我們分別選擇這兩個函數,會發現紅框函數在整個項目運行階段的堆內存分配非常平穩,並不存在上升趨勢,真正造成泄露的是上圖中的藍框函數。

紅框函數的堆內存走勢非常平穩

藍框函數的堆內存上升明顯

在UWA以前的報告中,我們需要花費大量的時間來對其進行檢測、分析和驗證,而現在,只需要點擊兩下Checkbox即可進行判定。通過該方法,能有效減少研發團隊定位泄漏的時間,並更精準地定位泄漏點。

*上述新功能為專業會員許可權。

二、項目性能排名功能

該功能將測試項目與UWA資料庫中的的參數指標進行比較,讓研發團隊更明確自身項目在同類型/全類型項目中的排名情況,並且客觀認識到某些模塊上的優勢和不足,從而幫助研發團隊更加高效地判斷優化的優先順序。

該功能主要有以下部分:

1、總體性能排名

總體性能在宏觀上主要反應在CPU、內存和耗電量三個指標中,而CPU中又分為渲染、UI、動畫、粒子系統和載入等重要引擎模塊,內存則分為紋理、網格、動畫片段、音頻片段和材質等重要資源。

我們不僅將測試項目與同設備的測試數據進行排名,同時,還將與相同類型的的性能數據進行比較。如下圖,項目A是一款ARPG項目在設備紅米Note2上的總體性能排名,其在CPU耗時方面相當不錯,優於70%的同設備(紅米Note2)上測試的所有項目;並且優於67%同設備(紅米Note2)上測試過的所有ARPG項目。

同時,在引擎模塊中,其渲染、物理和載入模塊都非常優秀,UI模塊次之,而粒子系統模塊則相對耗時較高,僅高於10%的同設備同類型測試,這意味著接下來的研發過程中,研發團隊需要加強對粒子系統的優化。特別是對於研發工期較為緊張的團隊,我們建議優先考慮粒子系統優化,而不是渲染和載入模塊,因為同樣的時間投入,粒子系統帶來的優化效果更加立竿見影,性價比更高。

2、各模塊重要參數排名

在UWA測評報告中,我們對Unity引擎的各個主要模塊以及各種主流資源的具體參數中都進行了排名,從而更為細緻地讓用戶看到項目需要完善的地方。

比如,下圖中該項目的內存佔用為245MB,雖然要高於UWA的推薦值,但在整個行業的同類型遊戲中,該項目僅高於28%的項目。

但是,仍需要注意的是,該項目雖然整體內存使用低於行業平均值,但其GFX內存佔用則超過了83%的同類型行業數據,這說明該項目的GFX內存仍有較大空間可以下降,研發團隊可以直接通過檢測紋理、網格等資源數據來即刻對其進行優化和完善。

以上即為排名功能的主要使用場景,用戶可以根據自身實際情況來查看對其更有針對性的性能瓶頸參數,並對其進行快速完善。我們希望通過該功能可以讓研發團隊看到自己的優勢和不足,高效提升自己項目的遊戲品質。另外,我們也不會不斷更新和細分行業數據,以求做到更精準、更全面、更有建設性。

以上介紹的子函數堆棧信息和項目性能排名兩大功能目前已在UWA 網站上線,研發團隊提交性能測評即可體驗!(傳送門:www.uwa4d.com)

關於UWA

由侑虎科技開發的遊戲/VR應用性能優化平台,目前提供 1)性能檢測與優化 2)資源檢測與分析 3)UWA GOT 三大工具。同時,我們也會為大家開發更省心的功能,希望通過它們可以減少開發者反覆測試定位問題的時間,從而將更多的精力集中在項目開發和解決問題中。我們將以實力和態度詮釋我們對性能優化的定義:解決你的性能問題,方為「優化」。

推薦閱讀:

為什麼他們都用UWA GOT?
【輿情熱點】空殼APP黑色產業鏈 比想像中更可怕
Unity內存優化總結(上)
掘金·翻譯計劃|如何在移動 APP 中設計輸入框
APP連接伺服器,所需要知道的一切事情

TAG:移动开发 | 性能 | 优化 |