JavaScript引擎大战:Google提出StrongMode和SoundScript议案,增强V8性能
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)关注我们,并与我们的编辑和其他读者朋友交流。
相关文章:

数值分析第三次作业-常微分方程的数值解法
一、欧拉方法 二、修正的欧拉方法 2.1.梯形公式 将问题(*)的解表成积分形式,用数值积分方法离散化。例如,对微分方程

SYNCHRO 4D可视化调度学习教程 SYNCHRO 4D: Visual Scheduling
MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz,2 Ch 技能水平:初级|流派:电子学习|语言:英语中英文字幕(根据原英文字幕机译更准确) |时长:3h 14m |大小:1.36 GB 含课程练习文件 课程获取:SYNCHR…

SpringBoot复习:4(@ImportResource)
ImportResource注解 作用:这个注解可以用来导入Spring的配置文件(bean.xml文件)。 适用场景: 可以试想一下这样一个场景,老板要你将原来的Spring项目改成SpringBoot项目,原项目底下有一大堆的bean.xml文件…

YTU 2723: 默认参数--求圆的面积
2723: 默认参数--求圆的面积 时间限制: 1 Sec 内存限制: 128 MB提交: 206 解决: 150题目描述 根据半径r求圆的面积, 如果不指定小数位数,输出结果默认保留两位小数。 部分代码已给定如下,只需要提交缺失的代码。 #include <iostream> #include <iomanip&…

jmeter内存溢出处理方式记录
方法一: 使用jmeter进行压力测试时 遇到一段时间后报内存溢出outfmenmory错误,导致jmeter卡死了,先尝试在jmeter.bat中增加了JVM_ARGS"- Xmx2048m -Xms2048m -Xmn256m -XX:PermSize128m -Xss256k",但结果运行时间增加了…

支持向量机学习笔记1
1、支持向量机是一种二类分类模型。它的模型基本定义是特征空间上间隔最大的线性分类器。 2、核函数的引入,使得支持向量机可以进行非线性分类。 3、支持向量机也可以完成多类别分类(将在后面介绍) 4、支持向量机的学习策略为间隔最大化&a…

C4D入门学习教程
MP4 |视频:AVC,1280720 30 fps |音频:AAC,48 KHz,2 Ch |时长:2h 12m 语言:英语中英文字幕(根据原英文字幕机译更准确)|大小解压后:560M C4D是一个有抱负的运动图形艺术家和设计师的重要工具。借助C4D&#…

SpringBoot复习:5(配置绑定)
配置绑定 在SpringBoot中我们如何读取到properties文件中的内容,并且把它封装到JavaBean中,以供随时使用呢? 我们可以使用以下两种方式来实现。 方法一:ConfigurationPropertiesComponent 第一种方法,我们可以使用C…
是男人就下100层【第五层】——2048游戏从源代码到公布市场
上一篇《是男人就下100层【第五层】——换肤版2048游戏》中阳光小强对2048游戏用自己的方式进行了实现,并分享了核心源码,这一篇阳光小强打算将该项目的全部源码公开并结合这个实例在这篇文章中介绍一下怎样加入广告和实现分享功能。终于执行效果例如以下…

zabbix菜单出现问号乱码问题
zabbix菜单出现问号乱码问题 安装后zabbix,设置成中文后,发现菜单出现了好多的乱码,google之后才知道这与zabbix数据库字符集设置有关。查看当前的默认字符集:mysql> show create database zabbix;---------------------------…

什么是Closed-form solution?
最近看论文,讨论微分方程解时遇到closed-form solution概念,上网检索,找到一个较浅显易懂的解释如下。 与工学院所学的微分方程不同的是,工学院的学生一般都是学如何把特定的微分方程的解用基本函数(例如多项式、三角函…

c4d中的3D插图制作视频教程 Skillshare – 3D Illustration in Cinema 4D
技能分享——C4D的3D插图 教程大小解压后:1.33G 1920X1080 mp4 语言:英语中英文字幕(根据原英文字幕机译更准确) C4D是众所周知的平易近人的软件,也是进入3D艺术梦幻世界的理想门户。 加入马特的这个课程,…

SpringSecurity学习:1(第一个SpringSecurity项目)
此博客是记录自己学习过程的记录 第一个SpringSecurity项目 导入依赖 详细的步骤我就不多说了,使用IDEA创建过SpringBoot项目的人一般都能看懂。 这一步我们可以在使用IDEA创建SpringBoot项目的时候完成,如下图: 在创建SpringBoot项目时&a…

使用Struts2标签遍历集合
遍历Map<String,Object>遍历Map<Stirng,List<Student>>遍历List<Map<String,Student>>Student.java package action;public class Student {private Long sid;private String name;public Student() {// TODO Auto-generated constructor stub}p…

TortoiseGit的使用详解
然后A修改了,A想上传代码,发现冲突了,原因是A依靠的是1版本的代码进行了修改,而此时远程仓库的代码是2版本,这样当然会产生冲突。当从远程仓库拉取代码时,代码会直接拉取到工作区,然后我们要添加、提交,然后才可以把拉取的代码放入本地仓库,本地仓库的代码可以通过推送,推送到远程仓库,这是一个大循环。解决冲突的办法就是,先把远程仓库的2版本的代码进行拉取,然后TortoiseGit会列出冲突的文件代码,然后自己手动解决、选择自己需要的代码,右键选择解决冲突,最后再重新上传就可以了。点击拉取,可以下载文件。

Java的System.out.println()深入解析理解
语句来输出信息,从开始学习Java就知道用它来输出Hello World,没有深究其实现原理,现在查阅文档、源代码后记录一下。方法进行字符流输出,只是整个过程封装了许多方法来支持各种类型的变量、以及自动初始化等,使得用户能够方便快捷在控制台打印数据。变量进行了初始化,让它指向控制台,于是就可以直接使用了。的,因此即使程序中没有手动导入,也可访问到。由C/C++实现,这里只是一个接口,在。修饰的,根据Java语法,它只能调用。方法重载,因此可输出多种类型的数据。接着看,在构造方法中,先是初始化了。

第一次作业,针对软件工程这门课程提出五个疑问。
1、如果对于不爱好计算机的同学来说学习软件工程的意义大吗,有多大? 2、软件工程的知识面那么广,如果才能系统有效的将它学好? 3、软建工程这门课是否有点纸上谈兵了? 4、软件工程是衣门很枯燥的学科,我们怎…

matlab2013 a/b 找不到vs2013 c++ 编译器 解决方案
64-bit Matlab 解压附件后,放到 C:\Program Files\MATLAB\R2013a\bin\win64\mexopts32-bit Matlab 解压附件后,放到 C:\Program Files\MATLAB\R2013a\bin\win32\mexopts点我下载附件 原文出处:http://kaba.hilvi.org/homepage/blog/vs_201…

C4D运动图形基本训练学习教程
MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz,2 Ch 技能水平:初级|语言:英语中英文字幕(根据原英文字幕机译更准确) |持续时间:3h 1m |大小解压后:1.7 GB 含课程练习文件 C4D继续作为3D艺术家的行业标准解决…

linux快捷上传下载文件
借助securtCRT,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器 其中,对于sz和rz的理解与记忆我用了如下的方法(因为很多时候容易搞混):sz中的s意为send&…

Java多线程复习:3(在操作系统中查看和杀死进程线程)
此博客是记录自己学习过程的记录,仅做参考 Windows下查看和杀死进程线程 查看所有进程 tasklist 查看指定关键字的进程 tasklist | findstr 关键字 Java程序运行的时候都是通过java.exe来运行的,所以想要查看Java程序运行的详情的话必须使用jdk自带的命…

Adt 配置注释模板
点击Window->Preferences->Java->Code Style->Code Templates,如下图所示: 选中,点击右侧的Edit进行编辑。

解决Attempt to execute SCRIPT mexLasso as a function
Attempt to execute SCRIPT mexLasso as a function: Error in selectFeature (line 22)w mexLasso(L, A, param);Error in demo (line 62)P selectFeature(AA_pos, AA_neg, paramSR); % feature selection 遇到这个问题一般是因为名为mexLasso的文件与…

灰猩猩拓扑速成班
Greyscalegorilla Plus Topology Crash Course 灰猩猩附加拓扑速成班 大小解压后:5.62G 1920X1080 时长:1小时16分 语言:英语中英文字幕(机译) 信息: 这个拓扑速成课程正如其名。它将为您提供坚实的拓扑基础…

Java多线程复习:5(sleep、yield方法和线程优先级)
sleep、yield方法和线程优先级 sleep方法 调用 sleep 会让当前线程从 Running 进入 Timed Waiting 状态(阻塞);其它线程可以使用 interrupt 方法打断正在睡眠的线程,这时 sleep 方法会抛出 InterruptedException;睡眠…

Atitit.java jna 调用c c++ dll的原理与实践 总结 v2 q27
Atitit.java jna 调用c c dll的原理与实践 总结 v2 q27 1. Jna简单介绍1 2. Jna范例halo owrld1 3. Jna概念2 3.1. (1)需要定义一个接口,继承自Library 或StdCallLibrary2 3.2. 2)接口内部定义2 4. 数据类型映射 NA官方给出的…

Android自定义控件系列之基础篇
一、概述在android开发中很多UI控件往往需要进行定制以满足应用的需要或达到更加的效果,接下来就通过一个系列来介绍自定义控件,这里更多是通过一些案例逐步去学习,本系列有一些典型的应用,掌握好了大家也可去创新开发出一些更好的UI…
用matlab编辑器打开.m文件
1、复制如下代码在,matlab命令行里运行 commandwindow; cwdpwd; cd([matlabroot \toolbox\matlab\winfun\private]); fileassoc(add,{.m,.mat,.fig,.p,.mdl,[. mexext]}); % 重点,增加了多种文件类型 cd(cwd); disp(Changed Windows file associations.…

Unity制作2D动作平台游戏视频教程
Metroidvania工具包:打造统一的2D行动平台 流派:电子学习| MP4 |视频:h264,1280720 |音频:AAC,48.0 KHz 语言:英语中英文字幕(根据原英文字幕机译更准确)|大小解压后:8.96 GB |时长:20h 53m 学习用C#编码,…

Redis初学:1(NoSQL的简介和Redis的安装)
什么是NoSQL NoSQL数据库意即:Not Only SQL 不仅仅是SQL,它区别于传统的关系型数据库,储存方式按照的是key-value的形式存储数据,这个我们可以联想到我们以前学过的HashMap。 NoSQL的特点: 语法上区别于传统的SQL语句…