Chrome V8优化编译器
单态性、多态性和超变态性在速度上还存在差异吗?
Monomorphism => [{a:47}, {a:5}, {a:9}];
Polymorphism => [{a:1, b:65}, {c:22, a:57, d:8},{e:14, a:819}];
...发布于 2021-09-20 15:34:05
(这里是V8开发人员。)
是的,这是安全的假设,永远会有。
更难说的是,这对您的应用程序是否重要。例如,这取决于你在做什么。将不同类型的对象放入数组根本没有任何区别;只有在访问这些对象的属性之后才会遇到多态的概念(例如,如果在其他地方有for (let o of array) { o.a = 42; } --数组不关心,o.a部分关心)。
此外,在微基准测试中明显可见的效果可能只会影响噪声范围内的大型实际应用程序(例如,1%或更少)。因此,这通常不值得担心,除非您有特定的理由(例如:分析结果)相信这在您的情况下可能是一个问题。
https://stackoverflow.com/questions/69256229
复制相似问题