所以我在看Franziska Hinkelmann的talk on the V8 engine。
她在20:03评论说,如果有超过四种对象类型,V8引擎将不会优化。我刚刚开始使用node.js,所以我在这些方面没有任何经验,但有四个看起来非常低。不是OO软件通常涉及四种以上的对象类型吗?
我知道V8对对象可以具有的快速处理属性数量有限制(8,也似乎很低)。
答案 0 :(得分:1)
V8开发者在这里。在您所引用的演讲中,Franziska所指的情况是代码中的单个位置(例如,单个do_something_with(obj.prop);
)会看到超过四种类型(对于obj
),它切换到不同的模式。这与“不优化”不同 - 相反,当V8检测到这种模式时,它会优化它;事实上,对高度多态代码进行优化需要采用与优化单态代码不同的方法。
正如jfriend00已经评论过的那样,你很可能不必担心这个内部细节。
此外,对于记录,对象在快速访问/慢速创建配置中可以具有的属性数量大约为1,000。 (这是另一种情况,即没有“好”/“快”和“坏”/“慢”状态,它相当“优化一个”或“优化另一个”。)