天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

JavaScript 性能優(yōu)化技術(shù)

  隨著Google Chrome的發(fā)布,WEB應(yīng)該說是老樹發(fā)新芽,在技術(shù)本身并沒有突破的情況下,每一個(gè)環(huán)節(jié)都在以更快的速度進(jìn)行前進(jìn),譬如:

  1、JavaScript。現(xiàn)在每一個(gè)瀏覽器都在比較誰的執(zhí)行速度更快,在你追我趕的過程中,毫無疑問,WEB變得更加快速,應(yīng)用的能力也有越來越強(qiáng)大了。IE6、FF2的時(shí)代在現(xiàn)在回顧起來,已經(jīng)變成老牛拉車的"歷史"了。

  2、WEB標(biāo)準(zhǔn)化的速度也越來越快,CSS、HTML5的普及越來越加速,手機(jī)也從WAP快速的向WEB標(biāo)準(zhǔn)看齊。原來更多的WEB開發(fā)向IE傾斜的趨勢,現(xiàn)在更多的向標(biāo)準(zhǔn)化傾斜。

  3、與Flash的爭斗,尤其是apple的旗幟鮮明的不支持Flash的戰(zhàn)斗,使得HTML5的職能從傳統(tǒng)的文字圖片迅猛的向2D、動畫、視頻等領(lǐng)域擴(kuò)展,私有技術(shù)將越來越困難。

  所有的這些,都意味著WEB正在朝著第2春進(jìn)行努力。本文則試圖收集一下目前各主流瀏覽器的JavaScript加速機(jī)制,嘗試探討未來JavaScript能走多遠(yuǎn)?

  Firefox 3.6 Trace JIT 技術(shù)

  Firefox在Chrome的壓力之下,迅速的發(fā)布了TraceMonkey引擎,相關(guān)的技術(shù)文檔那個(gè)可以參考:http://www.ics.uci.edu/%7Efranz/Site/pubs-pdf/ICS-TR-06-16.pdf

  這個(gè)技術(shù)的特點(diǎn)是:

  1、JS解釋器首先將源代碼轉(zhuǎn)變成為JavaScript字節(jié)碼(LIR),每一個(gè)字節(jié)碼都是SSA(Static Single Assignment)的。這個(gè)字節(jié)碼在某種格式上與Java Bytecode是類似的。不同的是,JavaScript字節(jié)碼缺乏類型信息,因此,在解釋的過程中,需要根據(jù)當(dāng)前的數(shù)據(jù),進(jìn)行選擇性的處理。因此,每條指令其實(shí)都是涉及到更為復(fù)雜的運(yùn)行時(shí)類型檢查、動態(tài)分派的。

  2、TraceMonkey首先以解釋的模式運(yùn)行指令,但對loop(向后跳轉(zhuǎn))進(jìn)行特殊關(guān)注:每一個(gè)向后跳轉(zhuǎn)指令意味著一次循環(huán)的開始,TraceJIT關(guān)注的是對循環(huán)的優(yōu)化,當(dāng)一次循環(huán)開始時(shí),TraceMoney試圖對一次循環(huán)的所有指令進(jìn)行跟蹤,拉出一條平坦的執(zhí)行線索(trace tree)。

  3、每一條執(zhí)行線索,對其內(nèi)部的類型信息,已經(jīng)進(jìn)行了一個(gè)假設(shè),在這條線索執(zhí)行過程中,相關(guān)的字節(jié)碼實(shí)際上可以理解為已經(jīng)替換為類型化的字節(jié)碼(類似于Java的Bytecode)了。這個(gè)類型化的字節(jié)碼再經(jīng)過簡單的JIT編譯后,直接以機(jī)器碼的方式執(zhí)行。在線索執(zhí)行開始時(shí),會對類型信息進(jìn)行檢查,如果出現(xiàn)類型不匹配,則可能產(chǎn)生一個(gè)新的執(zhí)行線索。

  4、執(zhí)行線索內(nèi)在的包含了method inline等技術(shù)。

  應(yīng)該說,這種Trace技術(shù),與以往的method level JIT相比,是完全不同的。在適合的應(yīng)用里,Trace JIT相比V8等,還會有更大的執(zhí)行效率提高。

  V8

  Chrome V8毫無疑問是本次瀏覽器大戰(zhàn)的導(dǎo)火索,其功過還需要時(shí)間來驗(yàn)證。在http://code.google.com/intl/zh-CN/apis/v8/design.html中描述了V8的優(yōu)化機(jī)制:

  Fast Property Access。快速對象屬性訪問。其特點(diǎn)是將JS對對象屬性的訪問,從一個(gè)動態(tài)的查找過程轉(zhuǎn)換成類似于Java/C++的靜態(tài)訪問。毫無疑問,在JavaScript中,對象屬性訪問是最為頻繁的一類操作,這個(gè)動態(tài)查找的過程其實(shí)是相當(dāng)之消耗時(shí)間的。

  動態(tài)機(jī)器碼生成。這個(gè)也是與快速屬性訪問相關(guān)的。它把動態(tài)的JS對象轉(zhuǎn)變?yōu)橐粋€(gè)類似于Java的靜態(tài)布局對象。

有效的GC。V8提供的是一個(gè) stop-the-world, generational, accurate的GC機(jī)制。而FF提供的則不是一個(gè)分代的GC。在實(shí)際應(yīng)用中,分代的GC相比不分代的GC顯然具有更高的效率。這一點(diǎn),也是Java Hotspot所必須的。

  其它的,Opera 10.50號稱推出了世界上那個(gè)最快速的JS引擎,不過,由于沒有文檔資料,暫時(shí)并不清楚其內(nèi)部機(jī)制。

  預(yù)測:

  FF的優(yōu)化機(jī)制和V8的優(yōu)化機(jī)制是不一樣的,兩者完全是可以互補(bǔ)的。因此,可以想象,如果將V8的優(yōu)化機(jī)制,如快速對象屬性訪問、分代GC等引入進(jìn)來,結(jié)合Trace JIT技術(shù),相信速度會有更大的提升。同理,對于V8而言,如果將Trace技術(shù)引入進(jìn)來,對運(yùn)行時(shí)的類型進(jìn)行更準(zhǔn)確的預(yù)測,那么,執(zhí)行速度應(yīng)該也有更大幅度的提升。

  綜上,這些優(yōu)化技術(shù)賦予了JavaScript更為強(qiáng)大的處理能力,使得瀏覽器可以更為快速的"下載執(zhí)行"更大型的應(yīng)用。使得原本需要在"native"語言中完成的功能,現(xiàn)在開始,可以在腳本語言中支持。

it知識庫JavaScript 性能優(yōu)化技術(shù),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 91成品视频 | 国产人妻系列无码专区97SS | 老汉老太bbbbbxxxxx | 久久一本岛在免费线观看2020 | 欧美成人国产 | 国产中文视频 | 亚洲视频免费在线观看 | 国产成人在线免费观看 | 亚洲精品国产在线网站 | 校园刺激全黄H全肉细节文 校园纯肉H教室第一次 | 免费一级特黄欧美大片久久网 | 东莞桑拿美女 | 91日本在线观看亚洲精品 | 一二三四在线视频社区 | 麻豆精品乱码WWW久久密 | 亚洲综合色五月久久婷婷 | 日日啪无需播放器 | 亚洲免费人成 久久 | 国产国产人免费观看在线视频 | 双腿被绑成M型调教PLAY照片 | 欧美熟妇VIVOE精品 | 我的奶头被客人吸的又肿又红 | 国产WW久久久久久久久久 | 色播播电影 | 免费可以看黄的视频s色 | 国产午夜精品久久久久婷婷 | 亚洲AV人无码综合在线观看蜜桃 | Y8848高清私人影院软件优势 | 挤奶门事件完整照片 | 真实处破女全过程完免费观看 | 久久精品国产亚洲AV影院 | 日本美女色 | 亲爱的妈妈6韩国电影免费观看 | 亚洲 欧美 日韩 卡通 另类 | 黄色三级网站在线观看 | 亚洲综合国产在不卡在线 | 亚洲高清国产拍精品动图 | 99re6热这里在线精品视频 | 2019午夜75福利不卡片在线 | 久久婷五月综合色啪网 | 成人在免费视频手机观看网站 |