SIMD

我们在本系列的 异步与性能 中详细讲解了一个指令,多个数据(SIMD),但因为它是未来JS中下一个很可能被确定下来的特性,所以这里简要地提一下。

SIMD API 暴露了各种底层(CPU)指令,它们可以同时操作一个以上的数字值。例如,你可以指定两个拥有4个或8个数字的 向量,然后一次性分别相乘所有元素(数据并行机制!)。

考虑如下代码:

  1. var v1 = SIMD.float32x4( 3.14159, 21.0, 32.3, 55.55 );
  2. var v2 = SIMD.float32x4( 2.1, 3.2, 4.3, 5.4 );
  3. SIMD.float32x4.mul( v1, v2 );
  4. // [ 6.597339, 67.2, 138.89, 299.97 ]

SIMD将会引入mul(..)(乘法)之外的几种其他操作,比如sub()div()abs()neg()sqrt()、以及其他许多。

并行数学操作对下一代的高性能JS应用程序至关重要。