客戶端性能優化

通用優化經驗json

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

  二、使用緩衝池技術,把頻繁使用的數據或者對象緩存起來,避免重複建立緩存

  三、再也不使用的對象,須要記得回收掉,remove del clear等微信

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

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

  五、使用圖集技術,下降io和數據訪問次數this

  六、顯式中止計時器,讓它們準備好進行垃圾回收.net

  七、使用事件偵聽器並在不須要時刪除這些偵聽器插件

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

  九、把一些經常使用的參數建立爲全局變量,避免重複定義

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

內存泄漏

  一、UI泄漏

  二、實體泄漏

    ①各類程序建立的對象的泄漏

      忘記回收

      因爲實體被別的地方引用,致使回收不掉

    ②美術資源製做時候,因爲沒有按照規範,致使的實體泄漏,常見的是特效泄漏

      在fancy3d項目中,因爲特效製做時,沒有正確的設置粒子的生命週期,致使技能特效顯示後不能自動回收,致使客戶端特效泄漏

  三、代碼邏輯致使

 H5重度遊戲優化經驗(針對微信小遊戲)

  加載

    ①緩存 

      微信支持將 代碼包4~8m 資源包50m 緩存到本地 

      commonJS2解決4M包不夠用的問題 (拆分代碼和配置文件)

      微信小遊戲不支持動態增長代碼

      能夠將一部分資源存放在本地

      5.1 assetmanager 嚴格 區別於 RES的寬鬆

      Processor 資源加載都會走這裏,能夠重寫Processor方法,增長cache

    ②資源合併

      打包圖集 紋理集

      subkey

      json文件合併 merge.json  寫本身的插件plugins

  建立

    減少

      能夠着重優化相似進度條這個重複單項

    複用

      緩存部份內容供複用,可能會涉及到內存問題

 

 

egret客戶端優化參考資料

egret官方視頻 https://mp.weixin.qq.com/s/2XRI7qzUvrZevlijtJ7I8Q

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

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

egret分包策略文檔 https://mp.weixin.qq.com/s/9vg2cA1L-_eY2lTdbTSVeQ

相關文章
相關標籤/搜索