V8
技术分析一
作:whzeng@126.com
为什么V8
的速度比其他浏览器的JS
引擎快?以下将做一个大致的分析。只是个人的分析,可能有不正确之处,欢迎指正。
V8
执行JavaScript
的流程如下:
图1
V8
处理JavaScript
流程
V8
执行过程分为两个阶段:编译阶段和执行阶段。
首先JavaScript
经过Compiler
将脚本转为抽象语法树(AST)
,然后在宏汇编器的作用下,将AST
的每个节点转化为机器相关的指令(
如Intel
有IA32
实现,ARM
有arm
实现)
,最后交由CPU
直接执行这些生成的指令。
其他浏览器JS
引擎(Firefox)
在编译阶段和V8
类似,但是生成的指令不是机器相关的指令而是自定义的指令,因此导致在执行阶段需要解释执行。这也就是为什么V8
引擎的性能如此卓越的根本原因。
从根本上,V8
是包含了一个JIT
编译器,并且直接有CPU执行生成的体系结构相关的指令,因此才比其他引擎快。