?V8 JavaScript引擎8.0减少了40%的堆 增加了可选的链接和空合并
很多文章的报道都是由微观而宏观,今日小编讲给大家带来的关于?V8 JavaScript引擎8.0减少了40%的堆 增加了可选的链接和空合并的资讯也不例外,希翼可以在一定的程度上开阔你们的视野!y有对?V8 JavaScript引擎8.0减少了40%的堆 增加了可选的链接和空合并这篇文章感兴趣的小伙伴可以一起来看看
谷歌的V8 JavaScript引擎的最新版本V8 8.0使用指针压缩来减少40%的堆大小,并且不会影响性能 。此外 , 它还使用?添加了对可选链接的支持 。操作符和为零合并使用?? 。V8 v8.0将在Chrome 80版本中正式公布 。

文章插图
V8 v8.0适用压缩JavaScript标记值,用来表示指针到堆或小整数,V8的核心团队成员Leszek?wirski曾解释道 。V8将只使用较低的位,并合成较高的位,而不是使用完整的64位来表示64位CPU上的指针 。V8团队已经完整地记录了他们的指针压缩方法,该方法利用了与其他平台(包括Java)使用的相同的技术 。与InfoQ谈话,?wirski澄清V8内存压缩V8 v8.0作品bychopping高级32位内存地址 。这强制“压缩”指针跨越4GB空间,所有“压缩”指针都用作其中的相对偏移量 。通过将基偏移量添加回压缩指针来计算完整指针 。他还补充说,该团队计划将单词对齐和地址级位转换结合起来,以扩展压缩堆大?。蛊涑?GB的限制 。一般的想法是你将你的记忆组织成单词而不是字节 。如果使用8字节的单词,则只需要表示从0、7、15、23等位置开始的地址 , 从而给出跨越2 < sup > 3 < /sup > * 2 < sup > 32 < /sup >的地址字节 。

文章插图
值得注意的是,V8团队表示 , 指针压缩并不会造成性能损失 。这与这样一个事实有关:从一个压缩指针到一个完整指针本身就是一个相当快的操作 。在V8的情况下还有一个额外的好处,那就是垃圾收集器也变得更快了 。根据初步的基准测试,这使得V8 v8.0在实际的web站点(比如Facebook、CNN和谷歌Maps)上的运行速度更快,无论在移动设备还是桌面设备上 。
在JavaScript方面,V8 v8.0引入了对两个实用的语法约定的支持:可选的链接和空合并 。

文章插图
可选链接的目的是使按顺序访问属性更容易,而不会因为中间对象为null或未定义而导致浮现异常的风险 。例如 , 为了防止这种错误发生的可能性 , 在下面的代码中,我们提前检查我们要访问的所有中间属性是否定义良好:
可以通过以下代码替换它,其中我们使用了可选的链接操作符?为了确保一旦中间组件为空或未定义,整个表达式将短路为未定义:
零聚并算子 , ??是||在以下情况下的细化:
在这种上下文中,||的缺点是,在上面的示例设置中 , 不能在需要设置的值时使用它 。迭代,计算为假,例如,当设置 。迭代= = 0 。在这种情况下,您仍然会使用默认值 , 例如4 。相反,空合并操作符??会正确处理这些个案,即:
换句话说,a ??b仅在a为空或未定义时计算为b , 否则计算为a 。
【?V8 JavaScript引擎8.0减少了40%的堆 增加了可选的链接和空合并】V8 v8.0还不是正式的V8稳定版本,将在几周后在Chrome 80稳定版中公布 。同时 , 可以使用git checkout -b 8.0 -t branch-heads/8.0访问它 。
推荐阅读
- 谷歌用更多的新运行时更新了谷歌应用程序引擎:Node.js 12 Go 1.13 PHP 7.3和Python 3.8
- 思科的AppDynamics旨在为其创造中枢神经系统 从认知引擎开始
- 为什么要把引擎盖打开停在路边的车?
- Redmi K60 Ultra首发!狂暴引擎2.0实现《原神》不掉画质、亮度
- 威廉姆斯车队使用的是什么引擎?
- 微信8.09有什么功能
- 破碎群岛飞行 破碎群岛飞行解锁攻略8.0
- 三星s8如何升级安卓8.0
- 崩坏3是使用什么引擎制作的
- 三星s7能升级8.0系统吗
