20190WebAssemblyはバイナリをブラウザ上で直接実行するためJavaScriptより高速ですが、実際にどれくらい早いのか改めて検証してみました。今回は基本的な数値計算を扱うので、GPUを使った場合も検証します。行列計算と総和を扱います。実装JavaScript配列へのアクセスを高速化するために、行列を1次元化して固定長のFloat32Arrayに保存しています。result}WebAssemblyJavaScriptと同様にRustで書きました。こちらも配列へのアクセスを高速化するために行列を1次元化しています。sum}ベンチマーク上記の計算を複数回行い、実行時間の平均値を取ります。計算の速度を検証するだけなので、検証用の値はMath.random()で生成します。58.19ms実際のコードはこちらに置いてあります。まとめシンプルな計算問題でWebAssemblyとJavaScriptの速度を比較し、WebAssemblyの方が1〜2倍程度早いという結果になりました。WebAssemblyによりアプリケーションを高速化できる可能性はありますが、数値計算の高速化には依然として並列計算等のアプローチが不可欠です。TensorFlow.jsが最近WebAssemblyをサポートし始めましたが、WebAssembly上でニューラルネットワーク推論を最適化することで、GPUに近いパフォーマンスを出すことに成功しています(https://github.com/tensorflow/tfjs/tree/master/tfjs-backend-wasm)。