Mozilla正在SpiderMonkey中测试JavaScript并行计算
Mozilla正致力于实现JavaScript“并行(parallelism)计算”,以便充分利用硬件性能。Dave Herman是Mozilla Research的首席研究员和策略总监。近日,他在一篇博文中提到,他们正在其JavaScript引擎SpiderMonkey中进行相关实验。
他们试图通过一种底层的、渐进的方法为JavaScript添加更加灵活和强大的并行计算原语。他首先指出:
我正在谈论的不是“并发(concurrency)”……JavaScript的异步并发模型很受欢迎,也取得了成功,而且promises、ES6 generators和即将到来的async/await正使它变得越来越好。
这里要探讨的是可以释放设备(GPU、SIMD指令及多内核处理器)潜能的并行计算。Web Workers已经在多核并行计算方面做了一些工作,但其工作线程是完全隔离的,只能通过postMessage进行通信。
还有一种方案比较激进,就是像Nashorn那样将JavaScript变成一种完全多线程的数据模型。不过,那需要宿主Java程序小心地同步脚本,否则,JavaScript应用程序无法得到“运行至完成(run-to-completion)”的保证。而且,这个过程会伴随大量的标准化和实现工作,进而会带来生态系统方面的风险。
另一方面,Mozilla Research和Intel Labs这些年来也在确定性并行计算API(有人称为River Trail或PJS)方面做了一些实验。但他们选择了一种很困难的方法,因为很难找到一种足够通用的高级模型能够适合各式各样的并行程序。
于是,他们引入了SharedArrayBuffer类型。不同于PJS,它内置的锁定机制为工作线程带来了新的锁定形式,但同样地,部分对象也可能因此遭受数据争用。不过,与Nashorn不同的是,这种情况只会出现在选择使用共享内存作为后台存储的对象中。如果创建了一个不使用共享缓冲区的对象,那么可以确定,它永远不会出现数据争用。Dave表示,这是一种相对保守的方法,但应该能够满足许多应用场景的需求。实际上,几年前就有人探讨过这种方法。在去年的JSConf大会上,谷歌PNaCI团队的Nick Bray还演示了一个在Chrome中共享缓冲区的原型。
目前,Dave及其团队正在SpiderMonkey中测试SharedArrayBuffer API,并且正在草拟它的规范。Firefox每日构建版本中已经提供了原型实现,感兴趣的读者可以下载试用并提供反馈。
Mozilla正在SpiderMonkey中测试JavaScript并行计算的更多相关文章
- 第十一章:WEB浏览器中的javascript
客户端javascript涵盖在本系列的第二部分第10章,主要讲解javascript是如何在web浏览器中实现的,这些章节介绍了大量的脚本宿主对象,这些对象可以表示浏览器窗口.文档树的内容.这些章节 ...
- JavaScript权威指南--WEB浏览器中的javascript
知识要点 1.客户端javascript window对象是所有客户端javascript特性和API的主要接入点.它表示web浏览器的一个窗口或窗体,并且可以用window表示来引用它.window ...
- 在WebBrowser中执行javascript脚本的几种方法整理(execScript/InvokeScript/NavigateScript) 附完整源码
[实例简介] 涵盖了几种常用的 webBrowser执行javascript的方法,详见示例截图以及代码 [实例截图] [核心代码] execScript方式: 1 2 3 4 5 6 7 8 9 1 ...
- 通过Jasmine和Guard自动测试JavaScript
原文标题:Autotesting JavaScript with Jasmine and Guard 原文地址:http://edspencer.net/2013/06/15/autotesting- ...
- 运用PhantomJS测试JavaScript
我认为我不需要说服你,测试你的JavaScript代码是一个好主意.但是,测试需要DOM操作的JavaScript代码有时候确是繁琐的.这意味着你需要在浏览器中测试代码而不能使用终端,对吗?错了,事实 ...
- HTML文档中使用JavaScript和css
HTML文档中使用JavaScript和css 引入css 内嵌式引入:将css代码写在HTML中的style标签里面 <!DOCTYPE html> <html> <h ...
- Rspec: feature spec 功能测试 测试JavaScript.
我们要把应用各组件放在一起做集成 测试,这样才能保证模型和控制器之间能够良好契合. 在 RSpec 中,这种测试称为功能测试(feature spec),有时也称为验收测试(acceptance te ...
- 在 Flash ActionScript 2.0 中调用 Javascript 方法
本篇文章由:http://xinpure.com/call-the-javascript-method-in-flash-actionscript-2-0/ 在 Flash ActionScript ...
- 一步一步学Silverlight 2系列(21):如何在Silverlight中调用JavaScript
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
随机推荐
- 单表扫描,MySQL索引选择不正确 并 详细解析OPTIMIZER_TRACE格式
单表扫描,MySQL索引选择不正确 并 详细解析OPTIMIZER_TRACE格式 一 表结构如下: 万行 CREATE TABLE t_audit_operate_log ( Fid b ...
- [转] Tomcat 配置 SSL
PS: keystore有自己的访问密码,这个保护层次要低一些,然后keystore里面存有自己的私钥,所以用户要破解的话,既要有keystore,又要有keystore的密码,p12是客户端keys ...
- WebService学习笔记系列(三)
网上有一些提供webservice服务的网站,我们要怎么调用呢? 今天来看个如何调用手机归属地查询服务.这个网站上提供了许多webservice服务,其中包括手机归属地查询服务,我们今天就用wsimp ...
- 用maven打包项目成war文件
打开pom.xml,右键选择Run As -> Maven package就可以自动打包成war文件了.
- Java GetAndPost
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
- 关于ASP.Net中路径的问题
比如你的工程是Webapplication1(url是:http://localhost/webapplication1/webform1.aspx) Request.ApplicationPath ...
- 如何在Sql2008中获取表字段属性和注释?
如何在Sql2008中获取表字段属性和注释? select b.[value] from sys.columns a left join sys.extended_properties b on a. ...
- 关于基于.net的WEB程序开发所需要的一些技术归纳
前提: 最近公司里有一个同事,年龄比我大几岁,但是由于是转行来做开发的,许多的关于.net开发技术不是很入行,所以总是会问我一些东西,基于自己以前的一些 经验,总是会愿意给他讲一些总结性的东西,希望他 ...
- SQL-Server索引漫谈
http://www.cnblogs.com/teroy/archive/2013/05/23/3070547.html
- C# DataTable的詳細用法 - hcw_peter的专栏 - 博客频道 - CSDN
C# DataTable的詳細用法 - hcw_peter的专栏 - 博客频道 - CSDN.NET 在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够 ...