2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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:083167
用户头像

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

关注

评论

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

联盟链落地与激励机制

CECBC

论做AI芯片的正确姿势

flow

【权限系统设计】ACL, DAC, MAC, RBAC, ABAC模型的不同应用场景

小隐乐乐

支持 100 种语言的 Canva 是怎么做本地化管理的?

葛仲君

产品经理 本地化 产品本地化 国际化

为什么 90 后一言不合就跳槽?

非著名程序员

程序员 个人成长 职业成长 延迟满足感 即时反馈

LeetCode题解:21. 合并两个有序链表,递归,JavaScript,详细注释

Lee Chen

大前端 LeetCode

F5G的星光闪烁,为工业而明,向未来而歌

脑极体

2.2.2 类反射场景与使用 -《SSM深入解析与项目实战》

谙忆

DT时代释放金融数据价值,驱动金融商业裂变

华为云开发者联盟

金融科技 华为云 modelarts 数据价值 用户细分

腾讯SaaS千帆对渠道的态度——合作共赢的诚意

人称T客

当我们谈注册中心时谈什么?

捉虫大师

zookeeper nacos 注册中心

英特尔推出“OpenVINO领航者联盟”,携手DFRobot推进AI商业落地新探

最新动态

十二张图搞懂浏览器安全——(同源策略、XSS、CSRF、跨域、HTTPS、安全沙箱等知识点)

执鸢者

https 浏览器安全 同源策略 XSS 跨域

超英文邮件50%!Flink 中文邮件列表必须有姓名

Apache Flink

flink

week 10

Geek_2e7dd7

LeetCode题解:21. 合并两个有序链表,迭代(优化),JavaScript,详细注释

Lee Chen

大前端 LeetCode

贵州:“区块链+”促经济转型产业升级

CECBC

Github+docsify零成本轻松打造在线文档网站

Java全栈封神

Java GitHub 全栈 文档 docsigy

计算机网络基础(十七)---传输层-TCP的可靠传输

书旅

TCP 计算机网络 网络协议 计算机基础 TCP/IP

9个常用ES6特性归纳(一般用这些就够了)

华为云开发者联盟

Java 程序员 编程语言 ES6 编程效率

5招详解linux之openEuler /centos7防火墙基本使用指南

华为云开发者联盟

centos7 网络安全 防火墙 openEuler 网络环境

libuv 异步网络编程之 TCP helloworld

Huayra

网络编程 libuv

十五张图带你彻底搞懂从URL到页面展示发生的故事

执鸢者

大前端 浏览器 页面展示

你是否真的懂数组?

架构师修行之路

数组 数据结构与算法

微服务架构

不在调上

煌煌中原 化鲲为鹏

脑极体

【漫画】最近,老王又双叒get了CDN的新技能—可编程化敏捷开发

阿里云Edge Plus

CDN

主权投资基金或有助于实现可持续发展目标

CECBC

week 10

Geek_2e7dd7

最右JS2Flutter框架——动画、小游戏的实现(四)

刘剑

flutter 大前端 探索与实践

获奖名单公布 | 写作平台八月宠粉福利来袭,参与创作领取限时大奖~

InfoQ写作社区官方

写作平台 征稿 热门活动

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