JSConf JP 2019で "How to Boost Your Code with WebAssembly" という話をしました

abstract: https://jsconf.jp/2019/talk/fuji-goro

Wasmを触り始めるにはまだ少しはやくて、おそらく2020年にはリリースされるであろうSIMDなどがほしいところです。とはいえ、JSの最適化コンパイラ(スライドではV8のTurboFanにだけ触れていますがほかのJSエンジンでも基本的には同じ傾向なはず)に頼らず安定したパフォーマンスを出せるというのは大きなメリットなので、その方面だと現在の状況でも考慮に値する可能性はあります。

ところでスライドでも触れてますが、eBayのバーコードスキャナ事例は大変興味深いです。

ここのエントリでも次のように書かれていて

This is sort of expected, as JavaScript can indeed be equally fast as native code, but only when it is in a “hot path,” i.e. heavily optimized by JIT compilers.

「JSはネイティブコード並の速度を出せるが、それはホットパスでJITコンパイラが高度な最適化をできる場合にかぎる」ということです。そしてプロダクションでは最適化コンパイラが必ずしも効果がなく結果が不安定だったと。

JSのベンチマークはしばしばこの「ホットパス」(スライドではホットスポット)だけを対象にしてしまうので、Wasmの真の力は V8 の --no-opt オプションを使ってベンチマークしてみるとよくわかるということですね。