【发布时间】:2021-08-27 18:30:58
【问题描述】:
v8 专家的问题。
众所周知,如果对象的“形状”没有改变,v8 会将对象属性存储在一个特殊的数组中,并通过索引访问它们,这样访问速度非常快。我可能在细节上错了。
如 2018 年的 this blog post 中所述,此数组的大小限制为 1022。
这些信息仍然正确吗?也许最近在这方面有一些改进?
谢谢!
【问题讨论】:
-
为什么需要提高这个数字?没有任何合理的对象具有这么多属性。对于更大的东西,无论如何你都会使用
Map。 -
@Bergi:“改进”并不意味着方向,它可能意味着提高或降低价值;-)
-
@Bergi 我的目标是在用户空间中实现更好的 v8 多态性:github.com/canonic-epicure/monopoly 我正在做一些关于如何做到这一点的小实验,其中一个将 v-table 存储为对象。问题是 v8 是以这种方式实现的,某个 mixin 的 v-table 需要包含该 mixin 所涉及的类的 所有 属性。因此需要大对象。当然,我希望快速访问 v-table 条目。
-
在“改进”下,我的意思是增加课程的限制
标签: javascript caching limit inline v8