日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

jeans是什么意思 js是什么意思( 二 )



jeans是什么意思 js是什么意思



3.2 解析和構(gòu)建樹
JavaScript 文件進(jìn)入引擎后,解析器進(jìn)行詞法解析 , 它將代碼分解成 token 以確定它們的含義 。這些 token 組成了AST(抽象語法樹) 。
jeans是什么意思 js是什么意思


編譯器在語義分析中驗(yàn)證語言元素和關(guān)鍵詞的正確用法,而 ASTs 在這個(gè)過程中扮演著重要的角色 。之后,ASTs 被用于生成實(shí)際的字節(jié)碼或者機(jī)器碼 。
jeans是什么意思 js是什么意思


3.3 引擎的核心

jeans是什么意思 js是什么意思



我們之前談到,JavaScript 是由 Ignition 這個(gè)解釋器解釋的 , 同時(shí)由 TurboFan 這個(gè) JIT 優(yōu)化編譯器進(jìn)行編譯 。
首先,前面步驟生成的 ASTs 傳遞給解釋器 , 該解釋器迅速生成未經(jīng)過優(yōu)化的機(jī)器碼,并且其執(zhí)行是無延遲的 。
Profiler 在代碼運(yùn)行時(shí)進(jìn)行觀察,找出可以進(jìn)行優(yōu)化的地方 。例如,一個(gè)‘for’循環(huán)跑了 100 次,但是每次迭代產(chǎn)生的結(jié)果都是一樣的 。
使用這個(gè)分析器后,任何未優(yōu)化的代碼都將傳遞給編譯器以進(jìn)行優(yōu)化,同時(shí)生成機(jī)器碼,它最終會(huì)替換掉之前由解釋器生成的未優(yōu)化代碼中的對(duì)應(yīng)部分 。
隨著分析器和編譯器不斷地更改字節(jié)碼,JavaScript 的執(zhí)行性能逐漸提高 。
3.4 更多歷史
在V8 的 5.9 版本推出之前 , 它使用兩個(gè)優(yōu)化編譯器和一個(gè)基線編譯器 。
  • 基線編譯器 full-codegen 迅速生成未優(yōu)化的機(jī)器碼 。
  • 兩個(gè)優(yōu)化編譯器 Crankshaft 和 TurboFan 用于優(yōu)化代碼 。
JavaScript 增加了新的特性后,架構(gòu)的復(fù)雜度上升,維護(hù)相同的管道對(duì) V8 團(tuán)隊(duì)來說變得更加困難了 。如果你想閱讀更多相關(guān)的舊方法以及轉(zhuǎn)向新管道的原因,可以訪問他們的網(wǎng)站 。
3.5 放眼未來
隨著更多進(jìn)一步提升性能的研究的進(jìn)行,V8 引擎的工作機(jī)制在未來還可能發(fā)生變化 。此外,隨著 Webassembly 逐漸成形 , 可能會(huì)向管道添加額外步驟 。
4.結(jié)論
ECMAScript 引擎的實(shí)現(xiàn)有很多 , 其中以谷歌的 V8 最為出名 。希望這篇文章的簡述不僅可以幫助你理解 JavaScript 的工作原理,還能從大體上了解一門編程語言的工作原理 。如果你想了解 V8 團(tuán)隊(duì)的未來計(jì)劃或者引擎的細(xì)節(jié),這里有一篇很不錯(cuò)的博客 。
關(guān)于本文
譯者:@Chorer
譯文:https://chorer.github.io//2019/05/10/Trs-Javascript 究竟是如何工作的?(第一部分)/
作者:@Priyesh Patel
原文:https://blog.bitsrc.io/how-does-javascript-really-work-part-1-7681dd54a36d

推薦閱讀