写点什么

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

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

关注

评论

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

SoundSource 5:Mac 音频控制器,重塑你的听觉世界!

Rose

mac电脑哪款PDF编辑软件好用?推荐Adobe Acrobat Pro DC Mac 版

Rose

唯品会商品详情API接口的深度探索与应用实例

代码忍者

API 接口 pinduoduo API

一文介绍MySQL架构

伤感汤姆布利柏

二十载岁月如磐,一位高校女教师的技术坚守之路

华为云开发者联盟

鸿蒙 云主机 昇腾 AI 大底座

js 数字计算的精度问题

不在线第一只蜗牛

JavaScript 前端

常德等保测评机构有哪些?电话多少?

行云管家

等保 等保测评 常德

UML软件建模器 StarUML for Mac v6.3.0 激活版

Rose

KubeEdge 1.19.0版本发布!更完备的节点设备能力,全新的Dashboard体验

华为云原生团队

云计算 容器 云原生

做ppt去哪找模板?这5个模板网站值得推荐!

职场工具箱

效率工具 职场 PPT模板 办公软件 AI生成PPT

GitLab 升级如何查看升级路径?

极狐GitLab

做了5年Java后端开发,靠着这份面试题跟答案,我从12K变成了30K

采菊东篱下

java面试

Luminar Neo:超多功能的照片编辑神器来袭

Rose

1000%增长!我仅用一个小时搞定!AI智能体+AI小程序=MVP王炸组合!

陈宇明

Mac蓝光高清播放工具 Blu-ray Player Pro v3.3.22中文版

Rose

脑机接口、嵌入式 AI 、工业级 MR、空间视频和下一代 XR 浏览器丨RTE2024 空间计算和新硬件专场回顾

声网

Clicker for Netflix—— 提升奈飞观影体验!

Rose

大数据行业数据多样性体现在哪里?用堡垒机可以保障大数据安全吗?

行云管家

大数据 数据安全 数据运维

QCN6224: Unlocking Long-Range IoT Potential for Smart Applications

wallyslilly

QCN6224

HTTP和HTTPS的区别

秃头小帅oi

逻辑数据编织平台现代企业数据管理和分析的理想选择

Aloudata

数据仓库 数据分析 数据虚拟化 Data Fabric 数据编织

申请亚马逊商品详情API需要多少钱

代码忍者

API 接口 API 测试 pinduoduo API

Clicker for YouTube mac版 YouTube视频播放器

Rose

双十一购物攻略:如何利用爬虫技术获取历史价格趋势,理性购物不踩雷

EquatorCoco

爬虫 双十一

非凸科技支持第49届ICPC亚洲区域赛南京站成功举行

非凸科技

#编程 ICPC

通义×Milvus:手把手教你打造专属AI技术顾问

Zilliz

AI Milvus 通义

探秘 Parallels Desktop 18虚拟机:为何它是 Mac 用户的福音?

Rose

人到一定年纪,要学会远离多巴胺

禅道项目管理

项目管理 多巴胺 中年人 上瘾模型 延迟满足

ps2019cc安装教程 附Photoshop cc 2019 激活工具

Rose

家居艺术新篇章:东芝艺术电视LA,定义生活美学新高度

Geek_2d6073

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