伊人99re_av日韩成人_91高潮精品免费porn_色狠狠色婷婷丁香五月_免费看的av_91亚色网站

中培偉業(yè)IT資訊頻道
您現(xiàn)在的位置:首頁 > IT資訊 > 學(xué)習(xí)交流 > 6種提升 HTML5性能的方法

6種提升 HTML5性能的方法

2017-03-16 09:00:53 | 來源:中培企業(yè)IT培訓(xùn)網(wǎng)

HTML5作為新的開發(fā)語言,目前已經(jīng)成為行業(yè)大熱中培偉業(yè)《基于HTML5的前端開發(fā)應(yīng)用最佳實踐》姚老師表示,在移動設(shè)備硬件性能弱于PC的背景下,對性能的需求顯得更為重要,而HTML5性能優(yōu)化前與優(yōu)化后有著極大的差別,如何優(yōu)化才能提高性能,對此熟知的人很少。姚老師LayaAir引擎為例,通過代碼示例詳細介紹了6種如何利用引擎對HTML5作出性能的極致優(yōu)化的方法

(一):代碼執(zhí)行基本原理

LayaAir引擎支持AS3、TypeScript、JavaScript三種語言開發(fā),然而無論是采用哪種開發(fā)語言,最終執(zhí)行的都是JavaScript代碼。所有看到的畫面都是通過引擎繪制出來的,更新頻率取決于開發(fā)者指定的FPS,例如指定幀頻率為60FPS,則運行時每個幀的執(zhí)行時間為六十分之一秒,所以幀速越高,視覺上感覺越流暢,60幀是滿幀。

由于實際運行環(huán)境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達到,所以這部分不是開發(fā)者能夠決定的,開發(fā)者能作的是盡可能通過優(yōu)化,在低端設(shè)備或低性能瀏覽器中,提升FPS幀速。

LayaAir引擎在每幀都會重繪,在性能優(yōu)化時,除了關(guān)注每幀執(zhí)行邏輯代碼帶來的CPU消耗,還需要注意每幀調(diào)用繪圖指令的數(shù)量以及GPU的紋理提交次數(shù)。

(二):基準測試

LayaAir引擎內(nèi)置的性能統(tǒng)計工具可用于基準測試,實時檢測當前性能。開發(fā)者可以使用laya.utils.Stat類,通過Stat.show() 顯示統(tǒng)計面板。

WebGL下表示渲染提交批次,每次準備數(shù)據(jù)并通知GPU渲染繪制的過程稱為1次DrawCall,在每1次DrawCall中除了在通知GPU的渲染上比較耗時之外,切換材質(zhì)與shader也是非常耗時的操作。 DrawCall的次數(shù)是決定性能的重要指標,盡量限制在100之下。

(三):內(nèi)存優(yōu)化

對象池,涉及到不斷重復(fù)使用對象。在初始化應(yīng)用程序期間創(chuàng)建一定數(shù)量的對象并將其存儲在一個池中。對一個對象完成操作后,將該對象放回到池中,在需要新對象時可以對其進行檢索。

由于實例化對象成本很高,使用對象池重用對象可減少實例化對象的需求。還可以減少垃圾**器運行的機會,從而提高程序的運行速度。

資源卸載

游戲運行時總會加載許多資源,這些資源在使用完成后應(yīng)及時卸載,否則一直殘留在內(nèi)存中。

     關(guān)于濾鏡、遮罩

嘗試盡量減少使用濾鏡效果。將濾鏡(BlurFilter和GlowFilter)應(yīng)用于顯示對象時,運行時將在內(nèi)存中創(chuàng)建兩張位圖。其中每個位圖的大小與顯示對象相同。將第一個位圖創(chuàng)建為顯示對象的柵格化版本,然后用于生成應(yīng)用濾鏡的另一個位圖

(四):圖形渲染性能

優(yōu)化Sprite

1.盡量減少不必要的層次嵌套,減少Sprite數(shù)量。

2.非可見區(qū)域的對象盡量從顯示列表移除或者設(shè)置visible=false。

3.對于容器內(nèi)有大量靜態(tài)內(nèi)容或者不經(jīng)常變化的內(nèi)容(比如按鈕),可以對整個容器設(shè)置cacheAs屬性,能大量減少Sprite的數(shù)量,顯著提高性能。如果有動態(tài)內(nèi)容,最好和靜態(tài)內(nèi)容分開,以便只緩存靜態(tài)內(nèi)容。

4.Panel內(nèi),會針對panel區(qū)域外的直接子對象(子對象的子對象判斷不了)進行不渲染處理,超出panel區(qū)域的子對象是不產(chǎn)生消耗的。

  優(yōu)化DrawCall

1.對復(fù)雜靜態(tài)內(nèi)容設(shè)置cacheAs,能大量減少DrawCall,使用好cacheAs是游戲優(yōu)化的關(guān)鍵。

2.盡量保證同圖集的圖片渲染順序是挨著的,如果不同圖集交叉渲染,會增加DrawCall數(shù)量。

3.盡量保證同一個面板中的所有資源用一個圖集,這樣能減少提交批次。

優(yōu)化Canvas

在對Canvas優(yōu)化時,我們需要注意,在以下場合不要使用cacheAs:

1.對象非常簡單,比如一個字或者一個圖片,設(shè)置cacheAs=bitmap不但不提高性能,反而會損失性能。

2.容器內(nèi)有經(jīng)常變化的內(nèi)容,比如容器內(nèi)有一個動畫或者倒計時,如果再對這個容器設(shè)置cacheAs=bitmap,會損失性能。

可以通過查看Canvas統(tǒng)計信息的第一個值,判斷是否一直在刷新Canvas緩存。

(五):減少CPU使用量

JavaScript中任何對象都是動態(tài)的,你可以任意地添加屬性。然而,在大量的屬性里查找某屬性可能很耗時。如果需要頻繁使用某個屬性值,可以使用局部變量來保存它:

在相對布局中,很經(jīng)常需要正確地獲取顯示對象的邊界。獲取顯示對象的邊界也有多種做法,而其間差異很有必要知道。

(六):其他優(yōu)化策略

1.減少粒子使用數(shù)量,在移動平臺Canvas模式下,盡量不用粒子;

2.在Canvas模式下,盡量減少旋轉(zhuǎn),縮放,alpha等屬性的使用,這些屬性會對性能產(chǎn)生消耗。(在WebGL模式可以使用);

3.不要在timeloop里面創(chuàng)建對象及復(fù)雜計算;

4.盡量減少對容器的autoSize的使用,減少getBounds()的使用,因為這些調(diào)用會產(chǎn)生較多計算;

5.盡量少用try catch的使用,被try catch的函數(shù)執(zhí)行會變得非常慢

標簽:

相關(guān)閱讀

主站蜘蛛池模板: 黑人40cm性做爰免费视频 | 精品91自产拍在线观看二区 | 欧美与黑人午夜性猛交久久久 | 欧美浓毛大泬毛茸茸 | 91国语高清在线 | 樱花草在线观看播放WWW | 日韩有码一区二区三区 | 免费的日本网站 | 姑娘第5集高清在线观看 | 九热精品| 9191成人国产在线播放 | 免费看无码自慰一区二区 | 欧美乱码一区二区 | 加勒比AV中文字幕不卡 | 最新av在线播放 | 亚洲综合亚洲 | 成人亚洲精品777777大片 | 伊人网在线视频 | 亚洲无码avvv久久影院 | www.4虎.com | 中文字幕不卡AV无码专线一本 | 伊人久久大香线蕉av网禁呦 | 国产办公室秘书无码精品99 | 日韩欧美中文字幕一区二区 | 无码精品一区二区三区在线A片 | 女十八毛片aaaaaaa片 | 免费观看一级视频 | 欧美日韩在大午夜爽爽影院 | AAAAAA级特色特黄的毛片 | 成人国产精品久久 | 欧美一级黄色大片 | 50路60路老熟妇啪啪 | 桃色av无码 | 免费的很黄很污的视频 | 成人国产精品色哟哟 | 中国多毛妞体内射精 | 亚洲精品视频在线免费播放 | 人妻系列无码专区AV在线 | 午夜家庭影院 | 欧美XXXX18性欧美 | 久久99国产精品久久99果冻传媒 |