V8 上的 Javascript 私有财产性能

问题描述 投票:0回答:1

我在 jsperf.app 上创建了一些测试,结果与这篇 V8 博客文章中的图表不符:https://v8.dev/blog/faster-class-features

根据该链接中的“解释”图表,在基于 Chromium 的浏览器上,公共类字段现在的初始化速度与“命名属性”相同,而私有类字段的初始化速度慢了不到 20%。 基于此测试,在最新版本的 Chrome 115 上,在 Windows 10/64 上,我发现私有和公共类字段的初始化速度比类中定义和初始化的属性慢 45% (+/-3%)构造函数。在具有相同版本 Chrome 的 Android 上,情况是相同的,但 +/- 范围更宽。私人领域总是比公共领域慢几个百分点。

同一测试的此版本初始化每种类型的属性 10 个,并且私有/公共字段接近 100% 慢,因此它具有累积效应,正如您所期望的那样。

这里有什么故事?我以为 V8 v10.0 一年多前就发布到 Chrome 了。

javascript performance v8 private-members
1个回答
0
投票

这里有什么故事?

那篇 V8 博客文章并不是在谈论

eval("class C { pub; }")
的速度(这本质上是你的基准测试所测量的);相反,它谈论的是
new C();
的表现。假设类定义很少见(您实际上没有数百万个类声明,不是吗?),而类实例化很频繁且对性能至关重要(您的应用程序很可能在运行过程中创建数百万个对象) .

正如您在测试的更新版本中看到的,在所有三种情况下,字段初始化性能确实几乎相同。

我以为 V8 v10.0 一年多前就发布到 Chrome 了。

正确,V8 10.0 在 Chrome 100 中附带。

© www.soinside.com 2019 - 2024. All rights reserved.