50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

先到先得!“阿里爸爸”全新出品SpringBoot高级笔记(全彩版)

Java全栈架构师

Java 源码 程序员 面试 springboot

数据治理,说起来容易,做起来难

奔向架构师

数据治理 数据资产 6月月更

网络协议之:redis protocol详解

程序那些事

网络协议 程序那些事 6月月更

居家办公让我绩效拿了C | 社区征文

大菠萝

初夏征文

TLog 助力盘古框架实现微服务链路日志追踪

码农大熊

盘古开发框架

Flutter 网络请求封装之Dio(Cookie管理、添加拦截器、下载文件、异常处理、取消请求等)

yechaoa

flutter android 6月月更 dio

社招两年半10个公司28轮面试面经(含字节、拼多多、美团、滴滴......)

CoderW

Java 面试 简历模板 大厂

DDD概念复杂难懂,实际落地如何设计代码实现模型?

Java全栈架构师

程序员 后端 领域驱动设计 DDD 架构师

Tiger DAO VC产品正式上线,Seektiger生态的有力补充

鳄鱼视界

揭秘GES超大规模图计算引擎HyG:图切分

华为云开发者联盟

人工智能 图计算 图切分

web内容如何保护:如何有效地保护 HTML5 格式的视频内容?

zhoulujun

DRM 视频版权保护 数字版权保护 h5视频版权

Maven 基础

zarmnosaj

6月月更

SDN系统方法 | 10. SDN的未来

俞凡

架构 网络 sdn SDN系统方法

TML转义字符:xss攻击与HTML字符的转义和反转义

zhoulujun

XSS xss攻击 转义字符 反转义

喜报|海泰方圆通过CMMI-3资质认证,研发能力获国际认可

电子信息发烧客

面对AI人才培养的“产学研”鸿沟,昇腾AI如何做厚产业人才黑土地?

脑极体

《网络是怎么样连接的》读书笔记 - 集线器、路由器和路由器(三)

懒时小窝

网络编程 网络

Java代码优化请求合并与分而治之

码农参上

Java 大数据 高并发 java实战

什么是算子?

华为云开发者联盟

人工智能 算子

HotSpot JVM 「01」类加载、链接和初始化

Samson

学习笔记 hotspot 6月月更

Wireshark网卡无法找到或没有显示的问题

岚哲

网络 Wireshark 域名 vpn 网卡

华为发布两大昇腾计划 推动AI人才发展和科研创新

郝俸🦁好棒

昇腾

中断操作:AbortController学习笔记

zhoulujun

新一代构建工具(1):对比rollup/parcel/esbuild—esbuild脱颖而出

zhoulujun

Rollup webpack esbuild

MyBatis 执行流程及源码解析

码农参上

mybatis java实战

六大专题全方位优化,阿里巴巴性能优化小册终开源,带你直抵性能极致

Java全栈架构师

Java 程序员 面试 性能优化

解析数仓lazyagg查询重写优化

华为云开发者联盟

数据库 后端

Pipenv中安装Django

宇宙之一粟

django 6月月更

IET出席2022世界科技社团发展与治理论坛 为构建国际科技共同体献言献策

E科讯

源码其实很简单!阿里巴巴最新出品Spring学习脑图+视频+文档真香

Java全栈架构师

Java spring 源码 程序员 面试

微博评论的计算架构

极客土豆

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