javascript 怎么使用simd

JavaScript017

javascript 怎么使用simd,第1张

SIMD(Single Instruction Multiple

Data))即单指令多数据流,它是一种采用一个控制器来控制多个处理器,同时对一组数据(又称“数据矢量”)中的每一个分别执行相同的操作从而实现空间上的并行性的技术。该技术在图形处理、音频处理、编码、物理仿真、加密等领域中都得到了广泛应用,已成为现代CPU处理器最重要的功能设计,然而对于现代网页相当重要的JavaScript代码,却一直没有以处理器的SIMD指令集来提升性能。

目前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倍

未来,SIMD.js将会提供更广泛的功能,并提升更大范围应用的性能,尤其如游戏、视频、音频操控、科学模拟等对性能要求比较高的应用。另外,Emscripten也将使用流行的SIMD来编译C++,以生成优化后的SIMD.js代码;长短SIMD风格的API将能够相互合作

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

基于 AngularJS 的拖拽指令

支持 GPU 加速

支持边界限制

支持设置拖拽把柄

移动端与 PC 端通用

使用

支持使用 script 标签或者 webpack、requirejs、seajs 调用:

script

调用

script src="lib/angular.js"></script>

<script src="dist/angular-drag.js"></script>

<script>

var app = angular.module('app', ['angular-drag'])

</script>

webpack

安装

npm install angular-drag

调用

require('angular-drag')

var app = angular.module('app', ['angular-drag'])

angular-drag 依赖 angular 与 jquery 两个全局模块

指令

drag 被拖拽的元素

drag-handle 触发拖拽的把柄(可选)

示例

简单的可拖拽元素

<div drag class="example">

hello world

</div>

自定义拖拽的把柄

<div drag class="example">

<div drag-handle></div>

<p>hello world</p>

</div>

需要为Chrome加入一些启动参数

Chrome浏览器的用户请找到Chrome浏览器的快捷方式,如果没有就创建一个快捷方式(右键点击chrome.exe,选择“创建快捷方式”或者“发送到”→“桌面快捷方式”),右键点击快捷方式,选择属性。

在目标框内,双引号的后边,加入以下内容:

--enable-webgl --ignore-gpu-blacklist --allow-file-access-from-files

关闭目前开启的所有Chrome窗口,然后用此快捷方式启动Chrome浏览器。

其中:

--enable-webgl 表示开启WebGL支持

--ignore-gpu-blacklist 表示忽略GPU黑名单,也就是说有一些显卡GPU因为过于陈旧等原因,不建议运行WebGL,这个参数可以让浏览器忽略这个黑名单,强制运行WebGL

--allow-file-access-from-files 表示允许从本地载入资源,如果你不是WebGL的开发者,不需要开发调试WebGL,只是想要看一下WebGL的Demo,那你可以不添加这个参数