Skip to content
目录

11. JavaScript 引擎横向对比

中对比 JS 引擎,不要背跑分,重点讲 架构共性和场景差异

主要引擎

  • V8:Chrome、Edge、Node.js、Deno、Electron 等使用。
  • SpiderMonkey:Firefox 使用。
  • JavaScriptCore(JSC):Safari / WebKit 使用,Bun 也基于 JSC 做运行时封装。
  • Hermes:React Native 常用,强调移动端启动速度和包体。
  • QuickJS:体积小,适合嵌入式或工具场景。

现代 JS 引擎的共性

主流引擎大多具备:

  • 字节码或中间表示。
  • 解释器 + 多层 JIT。
  • IC / Shape / 隐藏类等属性访问优化。
  • 反馈驱动优化。
  • 推测失败后的 deopt / bailout。
  • 分代、增量或并发 GC。

所以回答时可以先说“总体趋势趋同”,再讲各自差异。

V8

V8 的典型链路是 Ignition → Sparkplug → Maglev → Turbofan。

特点:

  • Chrome 和 Node 生态强。
  • 隐藏类、IC、反馈向量驱动优化。
  • GC 使用分代、增量、并发等策略。
  • 有指针压缩、Sandbox、Snapshot 等工程优化。

SpiderMonkey

SpiderMonkey 是 Firefox 的 JS 引擎。

常见关键词:

  • Bytecode Interpreter。
  • Baseline Interpreter / Baseline Compiler。
  • WarpMonkey 作为高层优化路径。
  • Shape 和 IC 用于对象属性访问优化。

它和 V8 一样,也是反馈驱动、多层优化、失败回退。

JavaScriptCore

JSC 是 WebKit / Safari 的 JS 引擎。

常见分层表述:

  • LLInt:解释器。
  • Baseline JIT:快速机器码。
  • DFG JIT:中层优化。
  • FTL JIT:更激进优化。

JSC 通常和 Apple 的平台、能耗、内存策略联系紧密。

Hermes 和 QuickJS

Hermes 面向 React Native,更重视移动端启动速度、包体和内存可控性。

QuickJS 体积小、易嵌入,适合脚本工具或嵌入式,不是为浏览器峰值性能设计。

总结

V8、SpiderMonkey、JSC 都是现代高性能浏览器引擎,核心方向都是多层执行、反馈优化和 GC 降停顿。Hermes、QuickJS 更偏具体场景,不适合简单和浏览器引擎比跑分。

MIT License.