【发布时间】:2021-11-14 06:26:16
【问题描述】:
Chrome V8 优化编译器
单态、多态和超态在速度上还有区别吗?
Monomorphism => [{a:47}, {a:5}, {a:9}];
Polymorphism => [{a:1, b:65}, {c:22, a:57, d:8},{e:14, a:819}];
...
【问题讨论】:
标签: javascript optimization compiler-construction v8
Chrome V8 优化编译器
单态、多态和超态在速度上还有区别吗?
Monomorphism => [{a:47}, {a:5}, {a:9}];
Polymorphism => [{a:1, b:65}, {c:22, a:57, d:8},{e:14, a:819}];
...
【问题讨论】:
标签: javascript optimization compiler-construction v8
(这里是 V8 开发人员。)
是的,可以肯定地假设总会有。
更难说的是它对您的应用程序是否重要。
例如,这取决于你在做什么。将不同种类的对象放入数组中根本没有任何区别。只有在之后访问这些对象的属性才会遇到多态性的概念(例如,如果您在其他地方有 for (let o of array) { o.a = 42; } - 数组并不关心,o.a 部分会关心)。
此外,在微基准测试中清晰可见的效果可能只会影响噪声范围内(例如 1% 或更少)内的大型实际应用。因此,通常不必担心这一点,除非您有特定的理由(例如:分析结果)相信这可能是您的问题。
【讨论】: