写点什么

JavaScript 引擎大战:Google 提出 StrongMode 和 SoundScript 议案,增强 V8 性能

  • 2015-03-18
  • 本文字数:1232 字

    阅读完需:约 4 分钟

JavaScript 引擎性能大战硝烟迷漫,Chrome V8 引擎团队宣布了一个新的计划,在这个计划里他们介绍了两个新的虚拟机概念:强化模式(StrongMode)和强化脚本(StrongScript)。

强化模式是 ES5 严格模式(strict mode)的一个扩展,在这个模式下只允许使用性能可预测的 JavaScript 特性。它是 JavaScript 语言的一个子集,在允许的情况下关闭妨碍虚拟机充分优化代码的部分特性。

举个例子,强化模式下的其中一个限制是数组不能有空洞。在一篇描述 SoundScript 的博客文章中,Dr. Axel Rauschmayer 说:

如果数组没有空洞,它们的元素就会被存储在连续内存中并且可以被索引访问,如果数组一旦有了空洞,就必须使用由索引到元素的映射。

所以,只要消除数组空洞就可以提升性能。如果想要使用这个模式,开发者需要在代码的最前面加入如下声明:

复制代码
use strong

按照强化模式规范编写的 JavaScript 仍然可以在其它浏览器中运行,启用强化模式意味着 V8 会进行额外的性能优化,当你使用了不被建议的代码时会抛出错误提示。Mozilla 的研究员, Emscripten 的负责人 Alon Zakai 对此感到非常担忧

这让我感到很困扰,如果它正常运行,那么没问题,但是如果遇到增强模式不推荐使用的代码,那么事情就大有不同,其它浏览器可能以不同的方式执行。当然,如果想避免这个问题发生,强化模式需要抛出 警告(warnings) 而非 错误(errors),作为规范,仅提示人们他们可以优化的内容就足够了。

在一个有潜力成为 JavaScript 重大改变的相关议案中,SoundScript 旨在向运行时 JavaScript 中添加面向用户的类型。JavaScript 的其中一个特性就是它的动态类型系统,然而随着应用规模的增加,为了满足运行大型项目的需求,像 TypeScript 一样的外部类型系统如雨后春笋般涌现。

事实上,SoundScript 将会基于 TypeScript 实现一套尽可能与 TypeScript 相似的标准,V8 团队表示在虚拟机中支持强类型会让它可以使用类型信息以尽早地积极优化。

Hacker News 上的一个讨论中,JavaScript 的创始人 Brendan Eich,希望 Chrome 在这些提案上有所作为:

V8 团队承诺与 TC39 一起为语义化工作并且开源这些代码,这么做大有裨益。最糟糕的情况是,这会变成另一个 Chrome 掌权的游戏,变成另一个 Chrome 的权力场。但是所有迹象都表明,到目前为止事情并没有像这样发展下去。

Google 声称强化模式和 SoundScript 暂时是实验性的,像这样的新特性在加入标准之前还有很长的路要走。ECMAScript 负责的标准核心 TC39 在形成新标准之前,像 SoundScript 这样的提案还需要充分地实践。

我们鼓励开发者阅读 强化模式的提案,开发者们可以在命令行中使用如下 flag 打开 Chrome canary:

复制代码
--js-flags="--strong-mode"

查看英文原文: http://www.infoq.com/news/2015/03/Google-StrongMode-SoundScript-V8


感谢夏雪对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2015-03-18 00:082609
用户头像

发布了 63 篇内容, 共 130.1 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

数据增强(二)-SamplePairing

AIWeker

人工智能 深度学习 数据增强 5月月更

将项目自动化发布到多台windows服务器上的工具有吗?哪个好?

行云管家

IT运维 自动化运维 服务器运维

“祖师级”技术人的哲理:认知、热爱、恒心

非凸科技

c++ C# MySQL 程序员 编程语言

helm charts 内置函数

ghostwritten

Kubernetes Helm

helm 模板函数与管道

ghostwritten

Kubernetes Helm

helm 注意事项

ghostwritten

Kubernetes Helm

公有云厂商有哪些?排名是怎样?

行云管家

云计算 公有云 企业上云 云厂商

TiDB【城市开拓招募帖】回答“社区活动什么时候来我的城市?”

TiDB 社区干货传送门

【刷题第四天】剑指 Offer II 076. 数组中的第 k 大的数字

白日梦

5月月更

【ELT.ZIP】OpenHarmony啃论文俱乐部——即刻征服3D网格压缩编码

ELT.ZIP

3D OpenHarmony ELT.ZIP 图像视觉

helm 插件:helm-schema-gen——yaml转换json

ghostwritten

Kubernetes Helm

开源项目丨 Taier 1.1 版本正式发布,新增功能一览为快

袋鼠云数栈

大数据

helm values.yaml

ghostwritten

Kubernetes Helm

helm 控制流程:循环、判断

ghostwritten

Kubernetes Helm

helm 自动滚动部署

ghostwritten

Kubernetes Helm

【ELT.ZIP】OpenHarmony啃论文俱乐部——计算机视觉数据压缩应用

ELT.ZIP

计算机视觉 OpenHarmony 数据压缩 ELT.ZIP

helm test 测试

ghostwritten

Kubernetes Helm

如何使用 ansible 变量

ghostwritten

ansible

ansible 安装 httpd

ghostwritten

ansible httpd

helm v2 hooks

ghostwritten

Kubernetes Helm

java培训redis集群原理分享

@零度

redis JAVA开发

web前端培训vue3响应式reactive源码分析

@零度

前端开发 Vue 3

helm NOTES.txt

ghostwritten

Kubernetes Helm

helm 命名模板

ghostwritten

Kubernetes Helm

TiDB 6.0 Book Rush!一起来分布式创作 6.0 的使用手册吧!

TiDB 社区干货传送门

helm charts openshift Certified 实践

ghostwritten

Kubernetes Helm

ansible 远程容器机种方法

ghostwritten

Docker ansible

ansible 模块:yum

ghostwritten

ansible yum

用一个性能提升了666倍的小案例说明在TiDB中正确使用索引的重要性

TiDB 社区干货传送门

转行运维工程师之后,我先把这几个Linux 命令记在了本子上,实干9场景

梦想橡皮擦

5月月更

2022年5月中国数据库排行榜:墨天轮榜单榜首易位,前九三商三云三开源

墨天轮

数据库 opengauss TiDB 国产数据库 达梦

JavaScript引擎大战:Google提出StrongMode和SoundScript议案,增强V8性能_JavaScript_David Iffland_InfoQ精选文章