通用優化經驗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