成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

兩種JavaScript解析引擎性能對比談

開發 前端
隨著Google Chrome的發布,表明目前瀏覽器都在向著執行速度快的方向發展,文章則收集了目前各主流瀏覽器的JavaScript加速機制,嘗試探討未來JavaScript能走多遠?

隨著Google Chrome的發布,Web應該說是老樹發新芽,在技術本身并沒有突破的情況下,每一個環節都在以更快的速度進行前進,譬如:

◆JavaScript。現在每一個瀏覽器都在比較誰的執行速度更快,在你追我趕的過程中,毫無疑問,Web變得更加快速,應用的能力也有越來越強大了。IE6、FF2的時代在現在回顧起來,已經變成老牛拉車的"歷史"了。

◆Web標準化的速度也越來越快,CSS、HTML 5的普及越來越加速,手機也從WAP快速的向Web標準看齊。原來更多的Web開發向IE傾斜的趨勢,現在更多的向標準化傾斜。

◆與Flash的爭斗,尤其是apple的旗幟鮮明的不支持Flash,特別是在已經開始預售的iPad上摒棄了Flash,促使HTML 5的職能從傳統的文字圖片迅猛的向2D、動畫、視頻等領域擴展,將對Flash這樣的私有技術構成威脅。(51CTO編者注:近日Adobe高管曾回應說,“HTML 5要想追上Flash,還要一段不短的時間;而且,也有可能永遠追不上

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

Firefox 3.6 Trace JIT 技術

Firefox在Chrome的壓力之下,迅速的發布了TraceMonkey引擎,這個技術的特點是:

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

2、TraceMonkey首先以解釋的模式運行指令,但對loop(向后跳轉)進行特殊關注:每一個向后跳轉指令意味著一次循環的開始,TraceJIT關注的是對循環的優化,當一次循環開始時,TraceMoney試圖對一次循環的所有指令進行跟蹤,拉出一條平坦的執行線索(trace tree)。

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

4、執行線索內在的包含了method inline等技術。

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

V8

Chrome V8毫無疑問是本次瀏覽器大戰的導火索,其功過還需要時間來驗證。V8的優化機制:

◆Fast Property Access。快速對象屬性訪問。其特點是將JS對對象屬性的訪問,從一個動態的查找過程轉換成類似于Java/C++的靜態訪問。毫無疑問,在JavaScript中,對象屬性訪問是最為頻繁的一類操作,這個動態查找的過程其實是相當之消耗時間的。

◆動態機器碼生成。這個也是與快速屬性訪問相關的。它把動態的JS對象轉變為一個類似于Java的靜態布局對象。

◆有效的GC。V8提供的是一個stop-the-world, generational, accurate的GC機制。而FF提供的則不是一個分代的GC。在實際應用中,分代的GC相比不分代的GC顯然具有更高的效率。這一點,也是Java Hotspot所必須的。

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

預測:

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

綜上,這些優化技術賦予了JavaScript更為強大的處理能力,使得瀏覽器可以更為快速的"下載執行"更大型的應用。使得原本需要在"native"語言中完成的功能,現在開始,可以在腳本語言中支持。
 

【編輯推薦】

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

 

責任編輯:王曉東 來源: javaeye
相關推薦

2010-02-24 14:25:48

WCF地址

2011-06-16 10:02:08

JAVA靜態載入

2014-04-17 10:56:40

優化策略MySQL緩存

2021-04-26 09:00:00

JavaScript開發代碼

2010-08-11 14:22:26

Flex彈出窗口

2018-03-01 15:20:59

iOS開發多線程

2024-01-05 08:46:50

ReactVue

2009-02-17 20:08:22

Firefox JavWineLinux

2009-12-14 15:34:54

動態路由協議

2011-08-25 17:29:40

LUAPHPWEB

2010-10-09 15:12:00

JavaScript溢出

2009-12-07 13:42:24

WCF框架

2010-07-27 15:03:37

Flex ArrayC

2011-02-23 12:49:31

KonquerorEmbedded

2010-07-19 09:01:54

.NET 4.0緩存

2020-11-08 14:43:25

Python列表去重編程

2024-10-09 11:31:51

2012-08-06 13:37:35

瀏覽器WindowsUbuntu

2019-01-11 13:57:06

2009-10-30 11:30:38

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 美女国内精品自产拍在线播放 | 国产色婷婷精品综合在线手机播放 | 久久国产视频网站 | 伊人亚洲 | 99re视频在线 | 国产日韩精品在线 | 精品日韩在线 | 国产精品视屏 | 成人乱人乱一区二区三区软件 | 欧美涩涩网| 国产高清久久久 | 国产色片| 欧美久久视频 | 久久美女网 | 欧美在线视频免费 | 国产日韩精品视频 | 中文字幕av亚洲精品一部二部 | 最新中文字幕 | 日本成人在线观看网站 | 久草久草久草 | 日韩视频成人 | 99久久免费精品国产男女高不卡 | 大久| 精品一区二区免费视频 | 国产一区二区精品在线观看 | 蜜桃官网 | 久久综合一区 | 国产免费一二三区 | 99精品一区二区三区 | 天天摸天天干 | 人操人免费视频 | 黄色在线| 本道综合精品 | 天色综合网 | 亚洲欧美国产精品一区二区 | 亚洲一区二区电影在线观看 | 亚洲免费一区二区 | 国产精品久久性 | 亚洲综合视频 | 日韩一区二区三区视频在线观看 | 亚洲在线免费观看 |