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

當前位置:存儲企業(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>
      主站蜘蛛池模板: 大港区| 日土县| 大同市| 河西区| 咸阳市| 调兵山市| 鱼台县| 红河县| 雅江县| 苍山县| 西盟| 绥江县| 江陵县| 凤山市| 民权县| 巍山| 铜山县| 临颍县| 称多县| 吉林省| 乐安县| 苍山县| 荆州市| 广宁县| 越西县| 榕江县| 丘北县| 天全县| 永昌县| 宁远县| 宁德市| 安图县| 留坝县| 化州市| 建平县| 洞口县| 什邡市| 镇巴县| 汤原县| 随州市| 保康县|