[Unity優化]UWA性能診斷與優化
總體性能趨勢
1、CPU性能佔用
①項目運行過程中高於33ms的幀數佔比推薦值<10%,高於50ms的幀數佔比推薦值<5%。
2、GC調用
①調用頻率 ( 幀/次 ):GC觸發調用頻率推薦值>1000幀/次,GC觸發得越快,即項目運行時卡頓次數越多。
3、渲染模塊性能
①Drawcall 峯值:項目中Draw Call峯值推薦值<200;
②Triangle 峯值:項目運行過程中渲染的三角形面片數量的最大值(推薦值<100000)。視域體內的模型數量越多、使用的Shader越複雜,則渲染的面片數越多。
4、物理模塊性能
①CPU均值:物理引擎每幀的平均CPU耗時(推薦值<2ms,主體範圍0~3ms)。對於Unity引擎而言,其4.x版本所使用的物理引擎爲 Nvidia PhysX 2.8,報告中統計的是Physics.Simulate的CPU耗時;其5.x版本所使用的物理引擎爲 Nvidia PhysX 3.3,報告中統計的是Physics,Simulate和Physics.Processing的CPU耗時總和。
②Contacts數量峯值:項目運行過程中碰撞對(Contact Pair)數量的最大值(推薦值<20)。所謂“碰撞對”,是指當前空間中發生碰撞的物體之間的接觸點,每個“碰撞對”均連接兩個相互產生碰撞的物體。一般來說,Contacts 數量越大,則表明碰撞物體的數量越多,即物理系統的CPU開銷越大。
③靜態碰撞體峯值:項目運行過程中靜態碰撞體數量的最大值(推薦值<100)。“靜態碰撞體”是指未掛載Rigidbody組件的碰撞體。
④動態碰撞體峯值:項目運行過程中動態碰撞體數量的最大值(推薦值<100)。“動態碰撞體”是指掛載了Rigidbody組件的碰撞體。
5、動畫模塊性能
①Animator.Update CPU均值:項目運行過程中Animator.Update每幀的平均CPU時間(推薦值< 2ms;主體範圍0~3ms)。其對應的是Unity新動畫系統Mecanim。
②Animation.Update CPU均值:項目運行過程中Animation.Update每幀的平均CPU時間(推薦值< 2ms;主體範圍0~3ms)。其對應的是Unity 3.x動畫系統。
③蒙皮網格更新CPU均值:項目運行過程中MeshSkinning.Update每幀的平均CPU時間(推薦值< 2ms;主體範圍0~3ms)。
6、粒子系統性能
①ParticleSystem 更新CPU均值:項目運行過程中粒子系統更新的平均CPU耗時(推薦值< 2ms;主體範圍0~3ms)。②ParticleSystem渲染CPU均值:項目運行過程中粒子系統渲染的平均CPU耗時(推薦值< 2ms;主體範圍0~3ms)。
7、UI性能模塊(動靜分離)
①CPU 均值:UI模塊平均每幀的CPU佔用時間(推薦值< 3 ms;主體範圍 0~5 ms)。
②堆內存分配總值:UI模塊堆內存分配總體數值(推薦值< 30 MB)。堆內存分配越高,說明UI界面在製作和使用上優化空間越大。
③堆內存分配均值:UI模塊平均每幀的堆內存分配(推薦值< 2 KB)。
8、加載模塊性能
①LUP CPU峯值(ms):項目運行過程中,Loading.UpdatePreloading的CPU耗時最大值(推薦值< 1500ms)。
②RUUA CPU峯值(ms):項目運行過程中,Resources.UnloadUnusedAssets的CPU耗時最大值。除CPU峯值外,您還需要關注該函數的調用頻率(推薦值< 1000ms)。
內存管理
1、內存佔用
①總內存峯值 (MB):項目運行時Unity引擎所統計的真實物理內存分配,這裏並不包含系統緩存和第三方庫的自身分配內存(推薦值< 150 MB)。
②堆內存峯值 (MB):項目運行時 Mono 管理和分配的託管堆內存(推薦值< 40 MB)。
③GFX 內存峯值 (MB):項目運行時用於渲染的資源所佔用的內存,該值爲底層顯卡驅動所反饋的內存分配量。一般來說,該部分內存佔用主要由渲染相關的資源量所決定,包括紋理資源、Mesh資源、Shader資源以及解析這些資源的相關庫所分配的內存等(推薦值< 80 MB)。
④泄露風險
2、資源使用
①內存峯值 (MB):表示紋理資源在使用過程中的內存最大量。建議結合運行截圖來判斷內存使用是否合理(推薦值< 50 MB)。
②大於1MB數量:所檢測到內存大於1MB的紋理資源數量(推薦值< 20)。
③RGBA32格式數量:所檢測到格式爲RGBA32的紋理資源數量。建議儘可能將RGBA32格式紋理轉換爲硬件支持的紋理格式,既可以降低內存的使用,又可以提升資源的加載效率(推薦值< 20)。
④RGB24格式數量:所檢測到格式爲RGB24的紋理資源數量。建議儘可能將RGB24格式紋理轉換爲硬件支持的紋理格式(推薦值< 20)。
資源管理
1、資源管理彙總
2、AssetBundle加載
3、具體AB使用情況
4、資源加載
5、資源卸載
6、資源實例化/激活
代碼效率
1、CPU時間佔用
2、堆內存分配
CPU性能
1、Overdraw功能
2、Mipmap功能
重要參數解析
1、引擎性能參數:建議將用到的Shader打成一個AssetBundle,然後在遊戲開啓時,一次性加載並常駐內存。
2、自定義變量
3、自定義代碼段
硬件參數解析
1、溫度與電量
2、網絡傳輸
3、內存設備