V8学习

284 阅读2分钟

背景

什么是V8

   V8引擎是一个JavaScript引擎的实现,使用C++开发,目前主要用在 Chrome browser和 NodeJS中。作为一种虚拟机,将人类可以理解的编程语言翻译为机器可以理解的语言。

浏览器引擎

  浏览器引擎(Rendering Engine)包括布局引擎、渲染引擎,它的名字有很多比如渲染引擎、排版引擎、解释引擎 ,它是浏览器的重要组成部分,它将Html、CSS、JavaScript转换成用户可见的图形结果。早期JS引擎包含在浏览器引擎中,现在JS引擎越来越独立,使得js不仅仅局限在浏览器中使用。

  不同的厂商使用不同的浏览器引擎与JS引擎,主流浏览器引擎使用对比如下表所示。

主流浏览器浏览器渲染引擎js引擎
IE -> EdgeTrident -> EdgeHTML -> BlinkJScript(IE3.0-IE8.0) / Chakra(IE9+)
Firefoxgecko内核SpiderMonkey(1.0-3.0)/ TraceMonkey(3.5-3.6)/ JaegerMonkey(4.0-)
SafariWebkitNitro(4-)
chromeWebkit-> BlinkV8
OperaPresto-> BlinkLinear A(4.0-6.1)/ Linear B(7.0-9.2)/ Futhark(9.5-10.2)/ Carakan(10.5-)
js代码如何被执行
  • 解释执行,需要先将输入的源代码通过解析器编译成中间代码,之后直接使用解释器解释执行中间代码,然后直接输出结果。具体流程如下图所示
  • 编译执行。采用这种方式时,也需要先将源代码转换为中间代码,然后我们的编译器再将中间代码编译成机器代码。

V8引擎

    在 V8 出现之前,所有的 JavaScript 虚拟机所采用的都是解释执行的方式,这是 JavaScript 执行速度过慢的一个主要原因。V8 率先引入了即时编译JIT(Just In Time)技术,混合编译执行和解释执行这两种手段,给 JavaScript 的执行速度带来了极大的提升。

v8代码结构
v8执行js代码