写点什么

SIMD.js:为计算密集型应用而生的 JavaScript API

  • 2014-11-20
  • 本文字数:1238 字

    阅读完需:约 4 分钟

SIMD (Single Instruction Multiple Data))即单指令多数据流,它是一种采用一个控制器来控制多个处理器,同时对一组数据(又称“数据矢量”)中的每一个分别执行相同的操作从而实现空间上的并行性的技术。该技术在图形处理、音频处理、编码、物理仿真、加密等领域中都得到了广泛应用,已成为现代 CPU 处理器最重要的功能设计。然而对于现代网页相当重要的 JavaScript 代码,却一直没有以处理器的 SIMD 指令集来提升性能。于是,Intel、Google 和 Mozilla根据 Dart SIMD 规范联合开发了 JavaScript API——SIMD.js,它包括许多新类型以及对这些类型进行算术运算、排序、加载、存储等操作的方法。 SIMD.js 的目的是在浏览器中实现 SIMD API,并在现有的硬件上运行。SIMD.js 不需要任何原生码或原生插件,仅用 JavaScript 就能够开发出计算密集应用(如游戏和媒体处理),且任何能够运行 JavaScript 的地方都可以运行 SIMD.js。不过,SIMD.js 主要是“短”风格的 API,比较适用于解决短 SIMD(Short SIMD)问题, 所以相对于平常的标量代码,它有较明显的加速。然而,对于现在的一些 CPU,它的固定长度类型不能实现最大的性能。因此,仍需开发其它的解决方案来提升性能。

目前 SIMD.js 主要支持具有 SSE 的 x86 平台和具有 NEON 的 ARM 平台,而 MIPS Power 等其他平台的支持还在考虑中。SIMD.js 正快速演变为更通用的 API。SIMD.js API 正处于活跃的开发之中,已经进行到草案阶段,且为其它阶段的准备工作也在进行中, 正向最终 API 一步步靠近。另外,在支持 Firefox Nightly 版本中 SIMD.js 正处于积极的开发之中,Internet Explorer已考虑加入SIMD.js 。同时, 在 Chromium (Chrome 浏览器的引擎)的分支中, 也有一个原型的实现。在Firefox Nightly 版本中启用SIMD 后的测试结果显示,JavaScript 计算曼德尔布罗特集合的速度提升至4 倍。

Hack News 上关于SIMD.js 讨论已经有数百条,多数人肯定了开发SIMD.js 提升JavaScript 效率举措,还有人提出了新增对 WebCL 的支持的建议。有人认为把 SIMD 应用到一个编程语言中是不合适的,做了不该属于自己该做的事情,而最好的方式是使用增强类型接口和编译技术,并添加语言原语以帮助代码的生成。另外还指出曼德尔布罗特集合计算例子是一个通用的例子,不能充分证明 SIMD.js 对 JavaScript 加速效果。

未来,SIMD.js 将会提供更广泛的功能,并提升更大范围应用的性能, 尤其如游戏、视频、音频操控、科学模拟等对性能要求比较高的应用。另外,Emscripten 也将使用流行的SIMD 来编译C++,以生成优化后的SIMD.js 代码;长短SIMD 风格的API 将能够相互合作。更多关于SIMD.js 的详细信息请查看Mozilla 官方的一篇关于SIMD.js 的介绍 EcmaScript strawman 提案以及、Axel Rauschmayer 博士先生的一篇关于SIMD.js 的博客


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-11-20 08:283277
用户头像

发布了 92 篇内容, 共 50.1 次阅读, 收获喜欢 5 次。

关注

评论

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

F5 BIG-IQ 4.6.0 - 集中管理 BIG-IP

sysin

F5

区块链 Web3 项目的外包开发流程

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发公司

Proxyman Premium for Mac(网络调试和分析工具)

Geek贝

VNC Server for Mac(VNC远程控制软件)

Geek贝

如何使用第三方库中的@pura/harmony-utils(V1.3.3)申请授权工具类一

小赵学鸿蒙

三方SDK 数码相机

F5 BIG-IQ 5.4.0 - 集中管理 BIG-IP

sysin

F5

F5 BIG-IQ Centralized Management 下载汇总 - 集中管理 BIG-IP 设备和服务

sysin

F5

未来钱包:AI资产管理+跨原子交换的智能终端

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

Carbon Copy Cloner for Mac(磁盘克隆/同步/备份软件)

Geek贝

vscode [ctrl+click]‘vue 单文件组件’,‘转到定义’不起作用

柠檬与橘子

淘宝商品详情 API 与物联网技术融合的创新应用探索

Noah

Spring用到的10种设计模式,真巧妙!

电子尖叫食人鱼

spring

AudFree Audio Capture for Mac:Mac 上的音频捕获专家

晨光熹微

堡垒机在数据安全中的作用你知道吗?

行云管家

网络安全 数据安全 堡垒机

多链资产管理中心:支持1000+币种的一站式钱包开发方案

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 公链开发代币开发

专业的音乐创作编辑软件PreSonus Studio One 6 Pro for mac

Geek贝

社交金融钱包:融合聊天包与DAO治理的Web3入口

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

鸿蒙便捷生活类应用上架流程二

小赵学鸿蒙

运动健康 HarmonyOS应用上架

Valentina Studio Pro for Mac:Mac 平台数据库管理的全能助手

晨光熹微

如何使用第三方库中的@pura/harmony-utils(V1.3.3)申请授权工具类二

小赵学鸿蒙

三方SDK 数码相机

F5 BIG-IQ 8.4.0 - 集中管理 BIG-IP

sysin

F5

WonderPen 妙笔:Mac 上的写作利器

晨光熹微

KCNScrew Pack for Mac:Mac 软件序列号查询神器

晨光熹微

MySQL事务:工作原理与实用指南

不在线第一只蜗牛

MySQL 数据库

《启信宝2025奶茶趣味报告》:奶茶企业5年激增140%,增至近40万家

合合技术团队

人工智能 报告 #大数据

F5 BIG-IQ 6.1.0 - 集中管理 BIG-IP

sysin

F5

量子级安全架构:抗攻击包的冷热隔离与生物验证技术

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

F5 BIG-IQ 7.1.0 - 集中管理 BIG-IP

sysin

F5

VS Code:轻量级高扩展编辑器,M1芯片性能全开

柠檬与橘子

苹果造车失败?这些百亿级项目立项都应该做的正确决策!

IPD产品研发管理

产品 互联网 产品经理 产品设计

场上显眼包!海信100吋电视世界第一霸屏世俱杯

Alter

SIMD.js:为计算密集型应用而生的JavaScript API_JavaScript_李士窑_InfoQ精选文章