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