精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當前位置:存儲企業(yè)動態(tài) → 正文

谷歌V8 JavaScript引擎引入新解釋器Ignition,旨在減少內存消耗

責任編輯:editor007 作者:David Iffland |來源:企業(yè)網D1Net  2016-08-30 17:04:26 本文摘自:INFOQ

谷歌發(fā)布了新的JavaScript解釋器Ignition,Chrome 53將在一些內存有限的Android設備上使用它。

谷歌資深軟件工程師Ross McIlroy在一篇博文中探討了構建Ignition的原因。

V8目前沒有解釋器。初始執(zhí)行的JavaScript代碼最先被解析,并編譯成一個未優(yōu)化的狀態(tài)。解析器和編譯器的協(xié)同工作機制會導致部分代碼后續(xù)解析兩次、甚至是三次。總之,按照谷歌的說法,V8將33%的頁面啟動時間用在了解析和編譯代碼上。這也導致了大量的內存開銷。

通過使用解釋器,谷歌希望減少當前系統(tǒng)的內存使用。Ignition還是依賴于一個解析器,但JavaScript被編譯成字節(jié)碼,而不是原生代碼。McIlroy表示,“我們[使用Ignition]將代碼編譯成簡潔的字節(jié)碼,而不是編譯成機器碼,大大減少了結果代碼。因此,我們可以減少系統(tǒng)的內存使用,對于不常運行的函數而言尤其如此。”

由于字節(jié)碼較小,所以可以編譯全部源代碼,而不用避免編譯未使用的代碼。也就是說,腳本只需要解析一次,而不是像當前的編譯過程那樣解析多次。

McIlroy還提供了一些技術細節(jié):

Ignition解釋器使用低級的、體系結構無關的TurboFan宏匯編指令為每個操作碼生成字節(jié)碼處理程序。TurboFan將這些指令編譯成目標平臺的代碼,并在這個過程中執(zhí)行低級的指令選擇和機器寄存器分配。Ignition是一個寄存器機,每個字節(jié)碼都將其輸入和輸出指定為顯式寄存器尋址;它不是一個棧式機,每個字節(jié)碼消費輸入,并把輸出推送到一個隱式棧上。

其他瀏覽器供應商已經將使用解釋器作為第一個步驟。Mozilla的SpiderMonkey和微軟的Chakra JavaScript引擎都是一開始就有解釋器,而且它們都是連接到了一個兩層的編譯系統(tǒng)。

從Chrome 53(預計在9月初發(fā)布穩(wěn)定版本)開始,內存為512MB或不足512MB的Android設備將開始使用Ignition。要想深入了解Ignition,請查看谷歌發(fā)布的設計文檔。

查看英文原文:V8's New JavaScript Interpreter Improves Memory Consumption

關鍵字:谷歌Ignition

本文摘自:INFOQ

x 谷歌V8 JavaScript引擎引入新解釋器Ignition,旨在減少內存消耗 掃一掃
分享本文到朋友圈
當前位置:存儲企業(yè)動態(tài) → 正文

谷歌V8 JavaScript引擎引入新解釋器Ignition,旨在減少內存消耗

責任編輯:editor007 作者:David Iffland |來源:企業(yè)網D1Net  2016-08-30 17:04:26 本文摘自:INFOQ

谷歌發(fā)布了新的JavaScript解釋器Ignition,Chrome 53將在一些內存有限的Android設備上使用它。

谷歌資深軟件工程師Ross McIlroy在一篇博文中探討了構建Ignition的原因。

V8目前沒有解釋器。初始執(zhí)行的JavaScript代碼最先被解析,并編譯成一個未優(yōu)化的狀態(tài)。解析器和編譯器的協(xié)同工作機制會導致部分代碼后續(xù)解析兩次、甚至是三次。總之,按照谷歌的說法,V8將33%的頁面啟動時間用在了解析和編譯代碼上。這也導致了大量的內存開銷。

通過使用解釋器,谷歌希望減少當前系統(tǒng)的內存使用。Ignition還是依賴于一個解析器,但JavaScript被編譯成字節(jié)碼,而不是原生代碼。McIlroy表示,“我們[使用Ignition]將代碼編譯成簡潔的字節(jié)碼,而不是編譯成機器碼,大大減少了結果代碼。因此,我們可以減少系統(tǒng)的內存使用,對于不常運行的函數而言尤其如此。”

由于字節(jié)碼較小,所以可以編譯全部源代碼,而不用避免編譯未使用的代碼。也就是說,腳本只需要解析一次,而不是像當前的編譯過程那樣解析多次。

McIlroy還提供了一些技術細節(jié):

Ignition解釋器使用低級的、體系結構無關的TurboFan宏匯編指令為每個操作碼生成字節(jié)碼處理程序。TurboFan將這些指令編譯成目標平臺的代碼,并在這個過程中執(zhí)行低級的指令選擇和機器寄存器分配。Ignition是一個寄存器機,每個字節(jié)碼都將其輸入和輸出指定為顯式寄存器尋址;它不是一個棧式機,每個字節(jié)碼消費輸入,并把輸出推送到一個隱式棧上。

其他瀏覽器供應商已經將使用解釋器作為第一個步驟。Mozilla的SpiderMonkey和微軟的Chakra JavaScript引擎都是一開始就有解釋器,而且它們都是連接到了一個兩層的編譯系統(tǒng)。

從Chrome 53(預計在9月初發(fā)布穩(wěn)定版本)開始,內存為512MB或不足512MB的Android設備將開始使用Ignition。要想深入了解Ignition,請查看谷歌發(fā)布的設計文檔。

查看英文原文:V8's New JavaScript Interpreter Improves Memory Consumption

關鍵字:谷歌Ignition

本文摘自:INFOQ

電子周刊
回到頂部

關于我們聯(lián)系我們版權聲明隱私條款廣告服務友情鏈接投稿中心招賢納士

企業(yè)網版權所有 ©2010-2024 京ICP備09108050號-6 京公網安備 11010502049343號

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 湘阴县| 德庆县| 阜平县| 贵阳市| 三台县| 沁水县| 大同市| 枣强县| 隆化县| 罗甸县| 平原县| 靖宇县| 桃园县| 修武县| 龙口市| 陵水| 浪卡子县| 黑水县| 河间市| 龙海市| 山阴县| 绥中县| 平舆县| 淅川县| 炎陵县| 莆田市| 无锡市| 烟台市| 庄河市| 塔城市| 芒康县| 常宁市| 广东省| 扬州市| 宽城| 临武县| 额敏县| 醴陵市| 白水县| 新营市| 镇坪县|