V8引擎执行原理
-
v8是C 编写的Google开源高性能JavaScript和WebAssembly引擎,它用于Chrome和Node.js等。
-
它实现ECMAScript和WebAssembly。
-
v8可独立运行,也可嵌入到任何C 应用程序中。
parse模块
-
parse模块会将JavaScript代码转换成AST(抽象语法树),因为解释器并不直接认识JavaScript代码;
-
如果函数没有被调用,那么是不会被转换成AST树的;
lgnition
-
lgnition是一个解释器,会将AST转换成ByteCode(字节码);
-
同时会收集TruboFan优化所需的信息(比如函数参数的类型信息,有了类型才能进行真是的运算);
-
如果函数只调用一次,lgnition会解释执行ByteCode;
-
lgnition的v8官方文档:Firing up the Ignition interpreter · V8
TurboFan
-
TurboFan是一个编译器,可以将字节码编译为CPU可以执行的机器码;
-
如果一个函数被多次调用,那么就会被标记为热点函数,那么就会经过TurboFan转换成优化的机器码,提高代码执行的性能;
-
但是,机器码实际上也会被还原为ByteCode,这是因为如果后续执行函数的过程中,类型发生了变化(比如sum函数原来执行的是number类型,后来执行变成了string类型),之前优化的机器码并不能正确处理运算,就会逆向的转换成字节码;
-
TurboFan的v8官方文档:Digging into the TurboFan JIT · V8
V8引擎解析图
这篇好文章是转载于:编程之路
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 编程之路
- 本文地址: /boutique/detail/tanhghecei
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13