偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

兩種JavaScript解析引擎性能對(duì)比談

開(kāi)發(fā) 前端
隨著Google Chrome的發(fā)布,表明目前瀏覽器都在向著執(zhí)行速度快的方向發(fā)展,文章則收集了目前各主流瀏覽器的JavaScript加速機(jī)制,嘗試探討未來(lái)JavaScript能走多遠(yuǎn)?

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

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

◆Web標(biāo)準(zhǔn)化的速度也越來(lái)越快,CSS、HTML 5的普及越來(lái)越加速,手機(jī)也從WAP快速的向Web標(biāo)準(zhǔn)看齊。原來(lái)更多的Web開(kāi)發(fā)向IE傾斜的趨勢(shì),現(xiàn)在更多的向標(biāo)準(zhǔn)化傾斜。

◆與Flash的爭(zhēng)斗,尤其是apple的旗幟鮮明的不支持Flash,特別是在已經(jīng)開(kāi)始預(yù)售的iPad上摒棄了Flash,促使HTML 5的職能從傳統(tǒng)的文字圖片迅猛的向2D、動(dòng)畫(huà)、視頻等領(lǐng)域擴(kuò)展,將對(duì)Flash這樣的私有技術(shù)構(gòu)成威脅。(51CTO編者注:近日Adobe高管曾回應(yīng)說(shuō),“HTML 5要想追上Flash,還要一段不短的時(shí)間;而且,也有可能永遠(yuǎn)追不上

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

Firefox 3.6 Trace JIT 技術(shù)

Firefox在Chrome的壓力之下,迅速的發(fā)布了TraceMonkey引擎,這個(gè)技術(shù)的特點(diǎn)是:

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

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

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

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

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

V8

Chrome V8毫無(wú)疑問(wèn)是本次瀏覽器大戰(zhàn)的導(dǎo)火索,其功過(guò)還需要時(shí)間來(lái)驗(yàn)證。V8的優(yōu)化機(jī)制:

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

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

◆有效的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號(hào)稱(chēng)推出了世界上那個(gè)最快速的JS引擎,不過(guò),由于沒(méi)有文檔資料,暫時(shí)并不清楚其內(nèi)部機(jī)制。

預(yù)測(cè):

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

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

【編輯推薦】

  1. JavaScript最讓人費(fèi)解的十件事
  2. JavaScript語(yǔ)法中12個(gè)需要繞開(kāi)的陷阱
  3. JavaScript將增加本地操作API 可直接操作本地文件
  4. 探秘Google的JavaScript開(kāi)發(fā)工具Closure
  5. 詳解Javascript框架中的全局變量

 

責(zé)任編輯:王曉東 來(lái)源: javaeye
相關(guān)推薦

2010-02-24 14:25:48

WCF地址

2011-06-16 10:02:08

JAVA靜態(tài)載入

2014-04-17 10:56:40

優(yōu)化策略MySQL緩存

2010-08-11 14:22:26

Flex彈出窗口

2021-04-26 09:00:00

JavaScript開(kāi)發(fā)代碼

2024-01-05 08:46:50

ReactVue

2018-03-01 15:20:59

iOS開(kāi)發(fā)多線程

2009-02-17 20:08:22

Firefox JavWineLinux

2011-08-25 17:29:40

LUAPHPWEB

2009-12-14 15:34:54

動(dòng)態(tài)路由協(xié)議

2010-10-09 15:12:00

JavaScript溢出

2010-07-27 15:03:37

Flex ArrayC

2011-02-23 12:49:31

KonquerorEmbedded

2020-11-08 14:43:25

Python列表去重編程

2009-12-07 13:42:24

WCF框架

2010-07-19 09:01:54

.NET 4.0緩存

2019-12-25 09:53:01

虛擬機(jī)技術(shù)固態(tài)硬盤(pán)

2012-08-06 13:37:35

瀏覽器WindowsUbuntu

2020-05-11 13:03:03

SR-TEIP路由器

2024-10-09 11:31:51

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)