动态

详情 返回 返回

H5遊戲性能優化系列-----cpu相關優化 - 动态 详情

cpu優化主要是優化cpu使用率,幀率平穩性(卡幀,長耗時任務),主要從以下幾個方面優化

  • 設置合適的幀率。根據遊戲類型設置合適的幀率,比如slg,回合制這種類型遊戲一般開30幀,mmo等即時戰鬥的或者對流暢度有很高要求的可以開60幀。
  • 幀同步與狀態同步的抉擇。一般來説狀態同步會比幀同步的前後端消息量大,也就説消息同步壓力更大。但是狀態同步前端實現起來比較簡單,只用根據對應消息更新狀態即可。
  • 分幀處理。對複雜邏輯進行分幀處理,比如後端返回的大量消息,存入消息隊列中分幀處理,避免在同一幀處理大量的消息。
  • 將長任務利用setTimeout等api劃分成多個短任務(八股文叫做微任務與宏任務),其實也算是另類分幀吧。
  • 使用對象池管理需要頻繁創建和銷燬的對象。
  • 在能使用worker的平台上,將耗時的任務放在worker中執行,比如zlib解壓縮,圖片解碼等。
  • 在不能使用紋理壓縮的平台上,png和jpg等原始圖片的解碼是很佔用cpu的,可以使用二進制的方式加載圖片,然後使用png和jpg解碼庫在worker中解碼圖像,或者使用createImageBitmap(非所有平台支持)。
  • 微信小遊戲的ios平台,因為不支持jit導致js代碼執行效率底下,cpu使用率會持續高位,如果內存優化到位的話,可以開啓高性能模式。
  • JS代碼混淆。注意這裏不是minify等壓縮工具,而是像js-deobfuscator這種加密混淆工具,混淆程度嚴重影響js代碼執行效率,混淆之後代碼會變大,所以如果不是發行方要求儘量不混淆,如果非要混淆設置合適的混淆策略。
  • Spine和龍骨動畫的使用。這種動畫在場景上一旦多起來了就很卡,即使spine的骨骼、頂點、網格、圖集都優化的很好,也頂不住數量多了之後就會卡(很多用Spine或者龍骨作為角色模型和技能動畫的都有類似問題,後面會單開一起講講Spine能優化的點)。

 

對於h5遊戲,分析cpu相關性能指標我們一般用Chrome開發者工具的Performance,抓取一段時間內的遊戲運行狀態進行分析。

通過幀率的波形圖,重點關注波峯位置,Task時間線的紅色任務或者任務右上角帶紅色角標的任務,點擊之後在下面的CallTree頁籤查看函數執行堆棧,找到函數執行中耗時的地方進行優化。

Add a new 评论

Some HTML is okay.