瀏覽器的js引擎大PK

不同瀏覽器有不同的JS引擎:

WebKit , Safari瀏覽器          ->SquirrelFish Extreme,

Firefox                                    àTraceMonkey引擎

Google Chrome                     àV8引擎,(C++)

Opera                                   -> Carakan

 Mozilla                          ->SpiderMonkey(C語言)

 Mozilla                                  à Rhino( Java)

Mozilla                          ->JaegerMonkey

 

SEE (Simple ECMAScript Engine) C語言開發的輕量級的 ECMAScript (JavaScript) 解析器和實時運行環境

 

 

 

(1)javascript 解析引擎 V8(C++)

 http://www.oschina.net/p/v8

 

V8 是 Google 發佈的開源 JavaScript 引擎,採用 C++ 編寫,在 Google 的 Chrome 瀏覽器中被使用。V8 引擎可以獨立運行,也可以用來嵌入到 C++ 應用程序中執行。\

 

 

 

(2)javascript 腳本引擎 SpiderMonkey (c語言)

http://www.oschina.net/p/spidermonkey

 

SpiderMonkey是Mozilla項目的一部分,是一個用C語言實現的JavaScript腳本引擎,另外還有一個叫做Rhino的Java版 本。

爲了在SpiderMonkey中運行JavaScript代碼,應用程序必須有三個要素:JSRuntime,JSContext和全局對象。
運行時環境

JSRuntime,爲其中的JavaScript變量、對象、腳本和應用程序中使用的上下文分配空間。每個JSContext和腳本中的每個對象都生活在一個 JSRuntime中。他們不能轉移到其他運行時上或在與其它運行時共享。一般來說大多數應用程序只需要一個運行時環境。
上下文

JSContext,就像是一臺小機器,它涉及JavaScript代碼和對象的很多東西。它可以編譯和執行腳本、獲取和設置對象屬性、調用 JavaScript函數、一種類型轉換爲另一種JavaScript數據、創建對象,等等。幾乎所有JSAPI函數都要一個JSContext*作爲其第一個參數,就像<stdio.h>中的大多數函數都需要FILE*一樣.
全局對象

全局對象包含所有可以在JavaScript代碼中使用的類、函數和變量。

當JavaScript代碼要做一些事時,比如window.open("http://www.mozilla.org/"),實際上它是在訪問一個全局屬性(全局對象的屬性),在這裏是window。

腳本能看到的全局屬性完全由應用程序控制。應用程序首先創建一個對象並加入JavaScript標準類,如Array和Object。然後加入任何程序想加入的自定義的類、函數和變量(象這裏的window)。應用程序每次運行js腳本(例如使用JS_EvaluateScript)時提供了該腳本使用的全局對象。至於腳本,它也可以創建自己全局函數和變量。所有的這些函數、類和變量都作爲屬性存儲在全局對象中。

 

 

(3)JS 解析器 rhino(Java)

 

http://www.oschina.net/p/rhino

 

 

Rhino是用純Java寫成的JavaScript的開放源代碼實現。它最常被用於嵌入Java應用程序,以便爲終端用戶提供腳本的能力。

 

 

 

(4)JavaScript 解析引擎 Simple ECMAScript Engine(C語言)

 

http://www.oschina.net/p/SEE

 

 

SEE(Simple ECMAScript Engine) 是一個用C語言開發的輕量級的 ECMAScript (JavaScript) 解析器和實時運行環境。支持ECMAScript Edition 3, JavaScript 1.5 。

 

 

 

(5) JavaScript引擎 SquirrelFish Extreme

 

http://www.oschina.net/p/squirrelfish+extreme

 

幾周前 Google Chrome 發佈之後,因其創新的 UI 以及出色的 JavaScript 執行效率而備受讚譽。最近,作爲 Safari 與 Chrome 瀏覽器內核的 WebKit 發佈了一個新 JavaScript 引擎,SquirrelFish Extreme,經過測試,該引擎的在執行速度上明顯超過 Chrome 的 V8。下圖是性能的比較

 

(6) JavaScript引擎 Carakan

http://www.oschina.net/p/carakan

 

Opera全新JS引擎Carakan,目前數度是其他已存在JavaScript引擎(基於SunSpider)的2.5倍。其在轉化爲本地機器代碼時專門針對正則表達式做了優化,有意思的是,Chrome瀏覽器也剛剛宣佈了此點。

Carakan引擎的三個顯著新特性:

1.基於寄存器的字節碼:之前的引擎“ECMAScript”使用的是基於堆棧字節碼指令集,這種基於對堆棧存取的方法對於生成字節碼是比較簡單的。

在新的引擎裏,我們採用了基於寄存器的字節碼指令集,這種方式採用了固定大小的寄存器,每次操作都可以訪問任意的寄存器,更少的指令被執行並且不會拷貝大量的數據。

2.本地代碼生成:我們將整個或部分“ECMAScript”引擎編譯到本地代碼中以達到更快的執行速度。

3.自動對象分類:在新的引擎中每個對象都是被封裝成類以存取不同的數據,這些類的劃分是與原型保持一致的。

每個瀏覽器的JS引擎都不一樣嗎?

現在每個瀏覽器基本上都有自己的JS引擎(非瀏覽器引擎)了,如Firefox瀏覽器的TraceMonkey引擎,Google Chrome瀏覽器的V8引擎,Safari瀏覽器有SquirrelFish Extreme,目前又增加了Opera的Carakan。

 

 

(7) 新一代JavaScript引擎 TraceMonkey

http://www.oschina.net/p/tracemonkey

 

TraceMonkey是套開放源代碼、以C++語言所編寫的新一代JavaScript引擎,於2008年8月23日正式發佈。目前爲Mozilla的Firefox網頁瀏覽器3.5、3.6版本所使用。

TraceMonkey採用了爾灣加州大學團隊Andreas Gal、Michael Bebenita、Mason Chang和Gregor Wagner所貢獻的“Tracing”技術,Andreas Gal目前爲TraceMonkey的項目領導人、以及Mozilla和Adobe所合作的Tamarin計劃所開發的“Nanojit”技術。

 

 

(8) JavaScript引擎 JaegerMonkey

http://www.oschina.net/p/jaegermonkey

 

Mozilla預計將在9月1日發佈JaegerMonkey引 擎,因此JaegerMonkey將被整合到Firefox 4.0。

V8基準測試顯示,JaegerMonkey引擎積分爲6829 ms,TraceMonkey引擎積分爲6841 ms。Sunspider測試顯示,JaegerMonkey引擎仍然要落後於TraceMonkey引擎——754 ms vs. 718 ms,而且JaegerMonkey引擎運行速度仍然落後於Webkit瀏覽器,Chrome和Safari的積分都要低於400 ms,Chrome瀏覽器的積分甚至逼近300 ms。Opera的積分也低於300s。

JaegerMonkey引擎在今年初發布是,其目標是突破Sunspider測試的500 ms大關。當然,這已經無法滿足一般用戶的需求了,畢竟連IE9開發版積分都已經低於500 ms。Mozilla還表示,JaegerMonkey引擎的目標是要超越競爭瀏覽器,這就意味着Mozilla的目標是300ms以下。

Mozilla稱,JaegerMonkey是重新編寫的,過去8周的時間JaegerMonkey已經有很大的改進。在下面6周的時 間,Mozilla將完善JaegerMonkey引擎,爲9月1日順利發佈做好充分地準備。

Mozilla宣傳,JaegerMonkey引擎的運行速度是競爭瀏覽器10多倍。

 

 

(9) Web瀏覽器引擎 WebKit

http://www.oschina.net/p/webkit

 

WebKit是開源的Web瀏覽器引擎,蘋果的Safari、谷歌的Chrome瀏覽器都是基於這個框架來開發的。WebKit 還支持移動設備和手機,包括iPhone和Android手機都是使用WebKit做爲瀏覽器的核心。

 

(10)WebKitGTK+

http://www.oschina.net/p/webkitgtk

WebKitGTK+是可移植渲染引擎WebKitGTK+平臺下的接口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章