SIMD 的含义是使用一个指令,完成多个数据的运算;SISD 的含义是使用一个指令,完成单个数据的运算,这是 JavaScript 的默认运算模式。显而易见,SIMD 的执行效率要高于 SISD,所以被广泛用于 3D 图形运算、物理模拟等运算量超大的项目之中。

    为了理解 SIMD,请看下面的例子。

    如果采用 SIMD 模式,只要运算一次就够了。

    上面代码之中,数组ab的四个成员的各自相加,只用一条指令就完成了。因此,速度比上一种写法提高了 4 倍。

    SIMD 通常用于矢量运算。

    上面代码中,和w是两个多元矢量。它们的加运算,在 SIMD 下是一个指令、而不是 n 个指令完成的,这就大大提高了效率。这对于 3D 动画、图像处理、信号处理、数值处理、加密等运算是非常重要的。比如,Canvas 的getImageData()会将图像文件读成一个二进制数组,SIMD 就很适合对于这种数组的处理。