JavaScript 进阶实战课
石川
JavaScript Patterns and Anti-Patterns 等开源项目创建者,O'Reilly 技术评审
15066 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
开篇词 (1讲)
JavaScript 进阶实战课
15
15
1.0x
00:00/00:00
登录|注册

14 | 通过SparkPlug深入了解调用栈

你好,我是石川。
第 11 讲的时候,我们通过函数中的闭包了解了栈和堆这两种数据结构。在12 讲中,我们通过递归了解了函数在调用栈中的循环执行。那么今天,我们再通过 V8 的 Sparkplug 编译器来深入的了解下 JavaScript 引擎中的调用栈,其中栈帧(stack frame)栈指针(stack pointer)帧指针(frame pointer)的概念
这里,可能有不太了解 V8 的同学,我们来简单看一下 Sparkplug 的前世今生。最开始的时候啊,V8 用的是一个相对比较快的 Full-codegen 编译器生成未优化的代码,然后通过 Crankshaft 这个及时(JIT)编译器对代码进行优化和反优化。但是随着更多人浏览网页的习惯从 PC 端转向移动端,性能问题变得更加重要了。而这个流水线既没能对 ES6 之前的,也没能对 ES6 之后版本的 JS 做到理想的优化。
所以随之而来的,V8 就引入了 Ignition 解释器和 TurboFan 的优化编译器以移动优先为目的的流水线。它最大的特点呢,就是通过 Ignition 最终生成字节码,之后再通过 TurboFan 生成优化后的代码,和做相关的反优化。
可是这个时候,问题又来了,TurboFan 和 Crankshaft 比起来,有时也有不足。所以为了解决这个问题,V8 又创建了一个把 Full-codegen,Crankshaft,Ignition 和 TurboFan 整合起来的“全家桶”的流水线。这显然让问题显得更复杂了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

V8引擎的Sparkplug编译器是一种快速编译器,通过对JavaScript字节码的直接编译,避免了重新解析源码和生成中间码的复杂过程。相比于其他编译器,Sparkplug的优化机会有限,但由于其简单快速的特点,代码易于移植,并且在工作流中与TurboFan相互补充,不需要大量优化。文章介绍了V8引擎的发展历程和性能优化方向,解释了Sparkplug编译器的出现原因和工作原理。通过深入了解调用栈的概念,读者可以更好地理解JavaScript引擎中的执行过程和优化编译器的作用。Sparkplug特意创建并维护与解释器相匹配的栈帧布局,简化了编译、加快了编译速度,并与系统其余部分的集成基本适配。尽管Sparkplug在很多方面与解释器做着相似的工作,但它消除了无法消除的解释器成本,对CPU优化也有着积极的影响。文章还提到了Sparkplug的窥孔优化原理,展示了V8引擎对性能极致优化的追求。通过对Sparkplug的讲解,读者可以更多地了解栈帧、栈针和帧指针的概念,以及JS的编译流水线。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《JavaScript 进阶实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • WGH丶
    这节课对我来说太硬了 先放下 后面学学编译相关的知识

    作者回复: 嗯嗯,了解下编译对深入理解JS是很有帮助的

    2022-12-26归属地:海南
  • 魏志鹏
    看不懂汗 流汗

    作者回复: 有具体不清楚的点可以帮助你了解吗?要是系统性的,也建议参考极客时间上一些编译原理的课,增加对基础编译知识的了解。

    2022-11-13归属地:北京
  • 真嗣
    这节课过于硬核了...
    2023-01-12归属地:上海
    1
  • 晴空万里
    这个差的东西有点多呀
    2023-11-01归属地:广东
  • 神佑小鹿
    那个图的指针方向是不是错的???
    2023-03-17归属地:广东
  • 度衡
    图里面的虚线'反优化'干啥呢?不应该只优化吗,怎么还反优化?
    2023-01-01归属地:北京
  • 魏志鹏
    不懂啊
    2022-11-13归属地:陕西
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部