1. 程式人生 > >客戶端性能優化

客戶端性能優化

制作 嚴重 性能 boa 放置 常用 article 數據訪問 使用

通用優化經驗

  1、如無必要,不要在onFrame onSecond onRender這種頻繁刷新的事件中,進行大量復雜的運算,或者創建對象,這些事件太頻繁了,執行復雜操作對性能開銷很大

  2、使用緩沖池技術,把頻繁使用的數據或者對象緩存起來,避免重復創建

  3、不再使用的對象,需要記得回收掉,remove del clear等

  4、不要再舞臺或者畫布上,放置大量的需要渲染的對象,太多的顯示對象會嚴重影響渲染效率

    例如在使用fancy3d時,如果在一個UI界面上,同時加載3個或者更多drawboard,每個drawboard加載1個3D模型或者場景,這樣的效率極差,優化的辦法是合並,例如把3個模型放入同一個場景中,UI上只有一個drawboard負責加載這一個場景即可

  5、使用圖集技術,降低io和數據訪問次數

  6、顯式停止計時器,讓它們準備好進行垃圾回收

  7、使用事件偵聽器並在不需要時刪除這些偵聽器

  8、多次調用類屬性或者需要從多層嵌套的數組中取值時,避免直接使用this.att,建立局部變量賦值,例如 this.attrs.att => var attrs = this.attrs attrs.att

  9、把一些常用的參數創建為全局變量,避免重復定義

    fancy3d項目中,創建一個全局Vector3對象,供客戶端運算使用,避免了在使用時重復創建vector3對象的問題

內存泄漏

  1、UI泄漏

  2、實體泄漏

    ①各種程序創建的對象的泄漏

      忘記回收

      由於實體被別的地方引用,導致回收不掉

    ②美術資源制作時候,由於沒有按照規範,導致的實體泄漏,常見的是特效泄漏

      在fancy3d項目中,由於特效制作時,沒有正確的設置粒子的生命周期,導致技能特效顯示後不能自動回收,導致客戶端特效泄漏

  3、代碼邏輯導致

egret客戶端優化參考資料

egret渲染優化 https://blog.csdn.net/bibimybest/article/details/80519576

egret內存泄漏 https://blog.csdn.net/yangxuan0261/article/details/81260498

客戶端性能優化