返回

JavaScript 引擎基本原理:形状与内联缓存

前端

一切从你写的 JavaScript 代码开始。JavaScript 引擎会解析源码并将其转换成抽象语法树(AST)。AST 是代码的结构化表示,它可以被编译器或解释器进一步处理。

编译器会将 AST 转换成机器码,而解释器则会一行一行地执行 AST。JavaScript 引擎通常使用 JIT(即时)编译器来提高性能。JIT 编译器会在运行时将代码编译成机器码,这样可以减少编译时间,提高代码执行速度。

JavaScript 引擎还使用了一些优化技术来提高性能,其中之一就是 Shapes 和 Inline Caches。

Shapes

Shape 是 JavaScript 对象的一种表示形式。每个 Shape 都包含了一组属性和方法。当 JavaScript 引擎执行代码时,它会为每个对象创建一个 Shape。Shape 可以帮助 JavaScript 引擎快速地查找对象的属性和方法。

Inline Caches

Inline Cache 是一种缓存技术,用于减少属性和方法查找的时间。当 JavaScript 引擎第一次执行代码时,它会创建一个 Inline Cache。Inline Cache 中包含了对象属性和方法的地址。当 JavaScript 引擎再次执行相同的代码时,它会直接从 Inline Cache 中获取属性和方法的地址,这样可以减少查找时间,提高代码执行速度。

Shapes 和 Inline Caches 是 JavaScript 引擎提高性能的两种重要技术。它们可以帮助 JavaScript 引擎快速地查找对象的属性和方法,从而提高代码执行速度。