2011-06-07 43 views
7

The new JavaScript engine takes advantage of multiple CPU cores through Windows to interpret, compile, and run code in parallel. - http://technet.microsoft.com/en-us/library/gg699435.aspx微軟稱IE9具有並行的JavaScript渲染和執行

The Chakra engine interprets, compiles, and executes code in parallel and takes advantage of multiple CPU cores, when available. - http://msdn.microsoft.com/en-us/ie/ff468705.aspx

等待,什麼?!?這是否意味着我們已經在IE9中實現了多線程並行JavaScript代碼執行(web-workers之外)?

我在想這只是一個糟糕的營銷噱頭,但希望看到一些關於此的更多信息。也許它們意味着不同的瀏覽器窗口/選項卡/進程可以使用多個CPU?

+4

我有一種感覺,他們的意思是「當你在頁面中包含多個腳本時,我們將並行加載和解釋它們」。實際的JavaScript執行是同步的。 – Raynos 2011-06-07 14:38:54

+0

+1,@Raynos。但他們說「執行/運行」(「執行」和「運行」是同義詞,對嗎?)可以同時發生。 – 2011-06-07 14:40:55

+1

@DavidMurdoch他們不能。一半的互聯網將會崩潰,我們會在很久以前注意到IE9的這些競爭狀況。同樣可以理解的是,他們可以跨標籤並行運行js代碼,每個標籤有一個js線程。 – Raynos 2011-06-07 14:43:37

回答

3

結論,主要依據的意見,從而使這個問題與實際答案最終提供一個社區維基答案:

這可能是因爲微軟的意思是:(i)的獨立的任務解釋和/或跑步;和(ii)編譯並行發生。他們很可能已經應用了像Sun的老式HotSpot JVM這樣的技術,以便Javascript虛擬機在第一時間解釋代碼,因爲它可以立即開始執行。它也可以編譯任何看起來經常使用的代碼,以獲得好處。它甚至可能有不同級別的編譯器優化,它會慢慢撥號。在這種情況下,它可能會使用多個內核來解釋或運行一段代碼,同時還編譯任意許多其他代碼,甚至在重新編譯和更好地優化正在運行的同一段代碼時。

但是,在技術層面上,您也可以執行靜態分析來確定回調在狀態方面的相互獨立性,並在觸發事件促使他們這樣做時允許這些回調並行執行。通過這種方式,一個Javascript虛擬機可以實際解釋/運行代碼,而不會影響語言的語義連續性。這樣的系統在邏輯上與超標量CPU的操作相似,儘管更大的移除和更大的複雜性。