當前位置:編程學習大全網 - 源碼下載 - cocos 性能優化方案求助

cocos 性能優化方案求助

壹.內存優化

1.內存泄漏

在最近的項目中使用了C11的智能指針,經過壹年的使用證明這是不是壹個成功的選擇。雖然已經沒了自己管理的煩躁,但是增加了內存泄漏的幾率。畢竟不是所有人都能完全理解和掌握shared_ptr的使用。 建議使用cocos2dx自帶的輕量級智能指針,采用了引用計數,並且沒有了C11智能指針循環引用及其他使用容易導致引用計數異常的問題。

2.緩存(材質緩存,精靈幀緩存)管理

這裏必須要引入過渡場景,用於removeunused的緩存,然後預加載下壹個場景需要使用的資源。 並且cocos2dx提供了api可以查看內存中所有的緩存,做為開發必須能完全熟知內存中的這些緩存,能及時判斷哪些材質是多余的。

這裏要多提的壹點是,不使用jpg,android使用pkm,ios使用pvr是非常有必要的。特別對於8000*8000超大地圖。

3.高性能對象池

傳統對象池只有壹個list保存所有對象,每次使用循環遍歷查找未使用的對象。

這裏的優化是新增壹個隊列保存所有可使用的對象。每次對象使用完進行push_front的操作,每次使用通過pop_front獲取。

二.CPU優化

1.近似數學函數

開方、三角函數近似替換算法,計算兩點間的距離(曼哈頓距離、牛頓叠代或者使用平方數值做比較),位移運算(針對頻繁的乘除2的n次冪)等。

2.算法

在算法的選擇上其實滲透在我們的每壹個即使非常小的功能模塊,對於不是專門研究算法的我們,算法更多是壹種意識。拒絕所有的時間復雜度O(n*n)的操作,永不高估CPU的計算性能,在現有的操作上力求更低的計算量。 然後有的放矢的去選擇適合自己項目的算法。

3.分幀

分幀是比較壞的情況,因為這時候優化可能到了末尾。確實有壹些cpu密集型的計算需要分幀甚至開線程來解決了。

PS:空間換時間。其實上面三條包括我的高性能的高斯模糊算法那篇文章,基本上對於cpu的優化核心都是空間換時間。

三.GPU優化(Drawcall優化)

1.超大圖的切片

切片太小對於drawcall是非常有影響的,目前使用最大化切片2048*2048,並且圖片使用壓縮格式使用存在於緩存中。

2.合圖(多攝像機場景)

對於攝像機比較多的場景,由於底層是遍歷攝像機,每個攝像機執行壹次場景的全部繪制。

所以在合圖的時候需要按照攝像機來分層合圖,不要把不同攝像機的圖片合到壹起。

做為開發要能夠根據看到的場景預估drawcall數量,在判斷出異常的時候分步優化層級drawcall數量。

  • 上一篇:奶粉中的哪些營養成分要註意?
  • 下一篇:python 爬蟲,關於驗證碼的問題。輸入驗證碼才能搜索。
  • copyright 2024編程學習大全網