介绍
您是否曾经想过是什么使Chrome浏览器如此快速有效?答案在于其JavaScript引擎V8的核心。在这篇博客文章中,我们将带您穿越V8引擎的内部运作,揭示其阶段和步骤,以为您提供对铬浏览器的性能的全面了解。
。阶段1:词汇分析
在过程的开始时,V8引擎从网页接收JavaScript源代码。第一阶段称为词汇分析,其中源代码分为一系列令牌。这些令牌是代码中最小的有意义的单元,例如关键字,标识符,操作员和文字。此步骤通过从原始代码创建有组织的结构为后续阶段铺平了道路。
阶段2:语法解析
上一个阶段中生成的令牌序列进行语法解析。在这里,引擎构建了代表代码层次结构的抽象语法树(AST)。 AST帮助引擎了解代码不同部分之间的关系,从而促进了随后的优化和执行阶段。
阶段3:点火解释器
在大多数公开讨论中,重点通常保留在涡轮扇拟进行的编译器上,但是V8引擎采用了一个称为点火解释器的中间阶段。点火解释器将AST转换为字节代码并直接执行。这提供了最初的性能提升,而优化编译器在后台发挥了魔力。这个鲜为人知的阶段是发动机快速启动时间的关键部分。
阶段4:Turbofan优化编译器
Turbofan编译器在增强V8发动机的性能方面处于中心位置。它采用大量复杂技术来优化点火解释器生成的字节代码。这些优化包括插入功能,持续的折叠,消除代码消除等等。结果是针对特定硬件体系结构量身定制的高度优化的机器代码,从而更快地执行JavaScript代码。
阶段5:隐藏的类和内联缓存
虽然公共文档提到了Turbofan编译器,但隐藏类和内联缓存的复杂机制却很少探索。 V8使用隐藏的类来有效地处理对象属性访问,通过根据其创建顺序将固定的内存偏移分配给属性。另一方面,内联缓存通过观察属性的访问方式并相应地调整代码来优化属性访问。这些优化在减少JavaScript对象中属性访问的开销方面起着重要作用。
阶段6:执行和分析
使用Turbofan生成的优化计算机代码,JavaScript代码将有效执行。在执行过程中,引擎收集分析数据,这有助于其在随后的运行中做出有关代码优化的明智决定。这种反馈驱动的方法可确保发动机适应代码的实际使用模式,从而进一步提高性能。
结论
Chrome浏览器的速度和效率归功于V8引擎的出色架构。从将JavaScript代码分解为代币到Turbofan编译器进行的复杂优化,每个阶段都会有助于发动机的整体性能。当我们深入研究所涉及的阶段和步骤时,我们还发现了隐藏的宝石,例如点火解释器以及隐藏的类和内联缓存的复杂性。
下次您打开Chrome浏览器并见证其快速性能时,请记住V8引擎幕后发生的阶段的复杂舞蹈,使您的浏览体验无缝且令人愉悦。
参考
封面:https://www.freelancinggig.com/blog/2019/01/19/what-is-googles-v8-javascript-engine/
连接
查看我的其他博客:
Travel/Geo Blogs
订阅我的频道:
Youtube Channel
Instagram:
Destination Hideout