阿里云飞天发布时刻,领先大模型限免,超7000万 tokens免费体验 了解详情
写点什么

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

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

关注

评论

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

软件测试 | 测试开发 | 利用 pytest 玩转数据驱动测试框架

测吧(北京)科技有限公司

pytest

软件测试 | 测试开发 | APK 逆向工程 - 解析 apk 基本信息和方法调用图

测吧(北京)科技有限公司

软件测试 测试 APK

软件测试 | 测试开发 | 文未有福利 | 接口自动化你不懂?听HttpRunner的作者怎么说

测吧(北京)科技有限公司

HttpRunner

MobTech 短信验证Android端 API

MobTech袤博科技

android

阿里P8大牛手写《亿级流量并发手册》GitHub下载榜飙升至第一

退休的汤姆

Java 程序员 面试 社招 秋招

基于 LowCodeEngine 的调试能力建设与实践

阿里巴巴终端技术

前端 低代码

Java:将Excel转换为XPS

Geek_249eec

Java Excel XPS

企业应用现代化实用教程 | 微服务架构怎么选?Dubbo、Spring Cloud、Istio终极对决

York

微服务 云原生 Spring Cloud istio Service Mesh (ASM)

数字藏品系统开发:(开发NFT数字藏品源码)

开源直播系统源码

NFT 数字藏品 数字藏品系统

开源一夏 |为什么BigDecimal比较大小一定要用compareTo

六月的雨在InfoQ

开源 equals BigDecimal 8月月更 compareTo

授人为师,首期明道云零代码教练员研修班圆满结束

明道云

华为大数据开发平台 DataFactory 行业应用典型案例

宇宙之一粟

华为云 大数据技术 8月月更

华为初面+综合面试(Java技术面)附上面试题

钟奕礼

Java 编程 程序员 java面试 后端架构

软件测试 | 测试开发 | RPC接口测试技术-Tcp 协议的接口测试

测吧(北京)科技有限公司

TCP/IP

面试 | 百度测试开发岗位面试题目回顾

测吧(北京)科技有限公司

面试‘

软件测试 | 测试开发 | MockServer 服务框架设计

测吧(北京)科技有限公司

软件测试

表弟面试阿里又挂了,我强烈推荐程序员必备阿里面试的300+面试题(含答案解析)给他后,苦肝两月,成功上岸蚂蚁金服

钟奕礼

Java 编程 程序员 java面试 技术宅

单测增量代码覆盖率统计方案

转转技术团队

测试 测试覆盖率统计工具

leetcode 409 Longest Palindrome 最长回文串(简单)

okokabcd

LeetCode 算法与数据结构

佛山等保测评机构有哪些?怎么做?

行云管家

等保 等级测评 佛山

MASA Stack 第四期社区例会

MASA技术团队

.net 云原生 dapr blazor MASA

阿里P8架构师汇总了史上101个最牛逼的Java技术点

钟奕礼

Java 编程 程序员 架构 java面试

全球首创!网易伏羲提出135种人脸表情划分标准,荣登IEEE官网

网易伏羲

人工智能 IEEE 网易伏羲

软件测试 | 测试开发 | 专项测试技术初识Hook

测吧(北京)科技有限公司

软件测试 hook

何止一个惨字形容,水滴Java面试一轮游,壮烈了,问啥啥不会,数据库血崩,我该怎么办?

钟奕礼

Java 编程 程序员 后端 java面试

云监控是什么意思?哪个软件好?

行云管家

云计算 云平台 云监控

Spring源码解析(五)Spring 加载bean 依赖注入

石臻臻的杂货铺

spring 源码 8月月更

APP上架因收集个人信息问题被拒绝该怎么解决?

YonBuilder低代码开发平台

程序员 技术 App 信息安全

长安链p2p-Liquid学习笔记

长安链

Spring源码分析(六)FactoryBean 接口解析

石臻臻的杂货铺

spring 源码 8月月更

微服务日志监控的挑战及应对方案

穿过生命散发芬芳

日志监控 8月月更

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