天天看點

egret性能優化總結

## 來自官方的優化建議

詳見:http://edn.egret.com/cn/article/index/id/287

(1) 少使用Alpha混合。

(2) 顯式停止計時器,讓它們準備好進行垃圾回收。

(3)使用事件偵聽器并在不需要時删除這些偵聽器。

(4) 在不需要觸摸互動性時顯式禁用觸摸互動性。

(5) 合理使用dispatchEvents 函數。

(6) 盡可能重用對象,建立對象池,而不建立對象并對其執行垃圾回收。

(7)多次調用類屬性時,避免直接使用this.att,建立局部變量指派。

(8)Event.ENTER_FRAME數量控制。

(9)減少不必要的引用。

(10)減少顯示對象的旋轉縮放。

(11)使用SpriteSheet合并的圖檔尺寸要優于單張圖檔的總尺寸,尤其是帶透明通道的。

(12)在Http請求中,加載單個檔案速度要優于加載多個檔案

##個人總結

1) 滑動清單盡量使用資料綁定的方式(詳見 eui.Scroller + eui.List 的使用),這樣的做法減少Draw ,最多為選項個數+1

2)顯示移除不需要的面闆,不用的盡量removeChild 而不是設定visiable

3) 顯式停止計時器,不要每次都進行 egret.getTimer(),應做為全局資料

4)顯式 删除對象的所有引用確定被垃圾回收器回收。

5) 盡量不要在使用方法内建立函數,一個函數内不要嵌套另一個函數的定義。

6) 盡量使用let 代替 var 避免閉包導緻的BUG

7) 将this指派給另一個臨時變量self,let self = this

8) 不要在聲明的時候初始化對象,需要指派基本類型。可選擇使用前初始化。

9) 初始化數組 =[] 比new 效率高 , = {} 比new 效率高

10) exml檔案注意通過可視化編輯會産生小數,去掉小數

11)盡可能複用對象,或建立對象池,建立對象時,将對象建立在循環外部并在循環内反複重用。這是許多面向對象程式設計常用的方法。

12)禁用不必要顯示對象的觸摸互動,預設touchEnabled =true ,需要手動設定為false,在禁用時注意touchChildren = false 才能徹底禁止touch

13) 靜态的UI 使用建議使用cacheAsBitmap減少重繪次數,動态的不要使用該方法

14) 少用mask,特别是Rectangle 每回都要去計算消耗性能較大

15)盡量将配置檔案合并到一個大檔案裡,減少下載下傳次數。在Http請求中,加載單個檔案速度要優于加載多個檔案。配置檔案去掉格式化,利用線上Json格式化工具(如bejson,sojson)處理Json資料。Json資料可以去掉一些不必要的小數和冗長命名

16)TextField減少對于描邊(stroke)的使用,用圖檔代替,因為描邊是需要先通過計算邊界渲染

17)配置檔案盡量使用key :value的方式,直接通過key取值減少查詢

18)資料查詢多的,使用key:value結構

19) ScrollerBar 的資料,如果單個更改,盡量通過updataItem() 去更改,避免重新綁定資料