HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

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

关注

评论

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

那些被忽视的Python核心功能...

互联网工科生

Python

中国电信与国家信息中心共同发布国信政务云

天翼云开发者社区

云计算 政务云

企业选择大文件传输软件的真正原因

镭速

大文件传输软件

Flink 实践教程:入门(12):元数据的使用

腾讯云大数据

流计算 Oceanus

华为阅读与博集新媒达成合作 推进数字化阅读高质量发展

最新动态

Concealer for Mac(文件信息加密工具) v1.3.6中文版

mac

苹果mac Windows软件 Concealer 密码管理软件

CommunityOverCode Asia 专题介绍之流处理

Apache Flink

大数据

一文读懂快速开发平台

互联网工科生

低代码 开发平台 JNPF

用低代码开发平台构建高效敏捷工作流

力软低代码开发平台

文心一言 VS 讯飞星火 VS chatgpt (72)-- 算法导论7.1 3题

福大大架构师每日一题

福大大架构师每日一题

那些 MySQL 8.0 中的隐藏特性

爱可生开源社区

MySQL 8.0

一文让你了解网络安全和云安全的区别与联系

行云管家

云计算 网络安全 云安全

为什么要推进“电子凭证会计数据标准化”?

用友BIP

电子凭证

基于PINN的传播动力学研究

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

HTML5 Canvas 和 SVG哪个简单好用

2D3D前端可视化开发

html5 SVG 数据可视化 canvas 前端设计

JMeter源码解析之结果收集器

优测云服务平台

Jmeter 性能测试 压力测试 #性能测试

阿里云 EMAS & 魔笔:7月产品动态

移动研发平台EMAS

阿里云 消息推送 移动开发 低代码开发 app自动化测试

拓展知识 启望未来 | 记内蒙古移动《AntDB ACA初级认证培训》活动

亚信AntDB数据库

数据库 AntDB AntDB数据库

大文件传输软件| 生命科学中的关键因素

镭速

大文件传输快速

技术分享 | StoneData 的身份认证与访问控制策略:构建安全可靠的数据分析环境

StoneDB

MySQL 数据库 HTAP StoneDB

杭钢集团:用友iuap为数智底座的数智化转型之路

用友BIP

数智底座

AREX 如何支持 Dubbo 自定义私有协议的录制回放

AREX 中文社区

dubbo 自动化测试 流量回放 流量录制

斩获可信云最佳实践,天翼云存储资源盘活系统助力“一云多芯”!

天翼云开发者社区

云计算 存储

带你走进数仓大集群内幕丨详解关于作业hang及残留问题定位

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

混合云环境实现K8S可观测的6大策略

高端章鱼哥

Kubernetes 分布式 k8s APM 混合云

加速中产 “返贫” 的4个迹象

博文视点Broadview

为什么要选择文件传输软件?有哪些最佳高速文件传输软件?

镭速

文件传输软件

NFTScan | 07.31~08.06 NFT 市场热点汇总

NFT Research

NFT\

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