競速(一):JavaScript引擎家譜

伯樂線上讀者發表於2013-06-22

伯樂線上注:英文原文:John Dalziel,感謝@AvisBlume 的熱心翻譯。如果其他朋友也有不錯的原創或譯文,可以嘗試推薦給伯樂線上。以下是譯文。

如今我們都會理所應當地認為瀏覽器中的JavaScript執行速度很快,在creativejs.com上我們就可以看到很多振奮人心的例子,但是在以前可並非如此。

網頁瀏覽器由很多不同的元件構成,它們分工協作為我們帶來快速高效的瀏覽體驗。有些元件負責解釋程式碼,有些負責渲染顯示,有些負責管理外掛,還有的負責其它功能。在本系列的文章中我們將討論JavaScript引擎這個元件,它負責將JavaScript程式碼編譯成計算機可識別執行的本地指令。

最早的JavaScript引擎是SpiderMonkey,1995年的時候出現在Netscape Navigator 2.0瀏覽器中。它的誕生速度堪比神話,Brendan Eich只花了10天時間就設計出了JavaScript語言及其編譯器。JavaScript隨後迅速走紅,次年8月就被微軟作為JScript放到了IE3.0中。1996年年底正式開始標準化程式,於1997年的6月出現在ECMA-262中。

之後每個瀏覽器都將支援JavaScript作為一個標準特性,每個瀏覽器廠商都會開發自己的引擎來支援該特性。隨著時間流逝,這些引擎不斷進化、消亡、重生著。對於心臟不強健的人來說,要弄清這些引擎所有的版本、分支和研發代號簡直比登天還難。

舉例來說,KDE的Konqueror瀏覽器使用開源的KJS JavaScript引擎。Apple的開發人員將其整合進了JavaScriptCore,供WebKit使用。研發代號經歷了Squirrelfish、Squirrelfish Extreme直至最終上市的Nitro。

但也有換酒不換瓶的例子。有些引擎的開發代號一直沒變,但其它都在變。譬如Mozilla的Firefox瀏覽器的JavaScript引擎,一直都叫做SpiderMonkey。但現在的它與1995年出現在Netscape瀏覽器中的老祖宗相比已經是天差地別了。

21世紀初的時候,JavaScript被標準化。它創造力十足但程式碼執行速度依舊很慢。2008年的時候一堆新引擎展開了競速。那年年初最快的引擎要屬Opera的Futhark,但到夏天的時候,Mozilla就開發出了Tracemonkey,而Google也推出了帶有名為 V8.的JavaScript引擎的Chrome瀏覽器。

拋開這些令人頭昏眼花的研發代號不說,這些引擎還是有共同點的:它們都是用來分析和執行JavaScript的。那麼它們的不同點又在哪呢?它們的速度不同。

2008年之後為了提升JavaScript引擎的速度各種設計創意層出不窮,只為了打造速度最快的瀏覽器。在第2部分中,我們將在細節上討論這些創意,並且向大家介紹下JavaScript。

 

英文原文:John Dalziel,編譯:@AvisBlume

譯文連結:http://blog.jobbole.com/41913/

【非特殊說明,轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊,謝謝合作!】

相關文章