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



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



3.2 解析和构建树
JavaScript 文件进入引擎后,解析器进行词法解析 , 它将代码分解成 token 以确定它们的含义 。这些 token 组成了AST(抽象语法树) 。
jeans是什么意思 js是什么意思


编译器在语义分析中验证语言元素和关键词的正确用法,而 ASTs 在这个过程中扮演着重要的角色 。之后,ASTs 被用于生成实际的字节码或者机器码 。
jeans是什么意思 js是什么意思


3.3 引擎的核心

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



我们之前谈到,JavaScript 是由 Ignition 这个解释器解释的 , 同时由 TurboFan 这个 JIT 优化编译器进行编译 。
首先,前面步骤生成的 ASTs 传递给解释器 , 该解释器迅速生成未经过优化的机器码,并且其执行是无延迟的 。
Profiler 在代码运行时进行观察,找出可以进行优化的地方 。例如,一个‘for’循环跑了 100 次,但是每次迭代产生的结果都是一样的 。
使用这个分析器后,任何未优化的代码都将传递给编译器以进行优化,同时生成机器码,它最终会替换掉之前由解释器生成的未优化代码中的对应部分 。
随着分析器和编译器不断地更改字节码,JavaScript 的执行性能逐渐提高 。
3.4 更多历史
在V8 的 5.9 版本推出之前 , 它使用两个优化编译器和一个基线编译器 。
  • 基线编译器 full-codegen 迅速生成未优化的机器码 。
  • 两个优化编译器 Crankshaft 和 TurboFan 用于优化代码 。
JavaScript 增加了新的特性后,架构的复杂度上升,维护相同的管道对 V8 团队来说变得更加困难了 。如果你想阅读更多相关的旧方法以及转向新管道的原因,可以访问他们的网站 。
3.5 放眼未来
随着更多进一步提升性能的研究的进行,V8 引擎的工作机制在未来还可能发生变化 。此外,随着 Webassembly 逐渐成形 , 可能会向管道添加额外步骤 。
4.结论
ECMAScript 引擎的实现有很多 , 其中以谷歌的 V8 最为出名 。希望这篇文章的简述不仅可以帮助你理解 JavaScript 的工作原理,还能从大体上了解一门编程语言的工作原理 。如果你想了解 V8 团队的未来计划或者引擎的细节,这里有一篇很不错的博客 。
关于本文
译者:@Chorer
译文:https://chorer.github.io//2019/05/10/Trs-Javascript 究竟是如何工作的?(第一部分)/
作者:@Priyesh Patel
原文:https://blog.bitsrc.io/how-does-javascript-really-work-part-1-7681dd54a36d

推荐阅读