「译」JS 引擎核心: 原型优化
本文转载于: 猿2048 网站➱ https://www.mk2048.com/blog/blog.php?id=hc01b0jkjb 原文链接: JavaScript engine fundamentals: optimizing prototypes 作者序 本系列主要介绍那些 JS 引擎中用到的核心设计。本文的作者是 V8 引擎的开发者 Benedikt and Mathias ,但不用担心,这些内容是适用于各大 JS 引擎的。作为一个 JS 开发者,深入了解 JS 引擎的工作原理可以有助于你去解读自己代码的一些性能特征。 在上一篇文章中( 原文 , 译文 ),我们讨论了 JS 引擎是如何使用 Shapes(形,V8 中对这种数据结构的命名,具体原理请参考上一篇文章) 和 Inline Caches(暂译内联缓存,一种用于优化访问性能的数据结构,具体原理同样参考上一篇文章) 来优化对对象与数组的访问性能的。本文将会解释 优化管线中的权衡 以及引擎是如何优化原型属性访问的性能的。 **小贴士:**如果你更倾向于看视频来学习,可以跳过本文直接看这个 视频 。(需要梯子,推荐使用酸酸乳) 优化层级与执行权衡(Optimization tiers and execution trade-offs) 我们的上一篇文章讨论了现代 JS 引擎都存在着一个相同的运行管线设计: