WebAssemblyランタイムは2026年、ネイティブにどこまで迫ったか
Performance of WebAssembly Runtimes in 2026

libsodiumのベンチマークを2024年・2025年・2026年のWebAssemblyランタイムで比較した。Wasmtimeは毎年着実に改善し、Bunは2025年から2026年で約3倍高速化。wide_arithmetic命令が利用可能な場合、WasmtimeとWasmerはネイティブの1.3〜1.5倍まで迫る。一方Wazeroはほぼ横ばいで、ランタイム間の性能差は依然として大きい。
wide_arithmeticが機能したとき、それは実験全体で最大の高速化だった。Wasmtime 46.0.0はなしでネイティブの2.41倍、ありで1.46倍。Wasmer 7.1.0はなしで2.08倍、ありで1.33倍だった。
HNでの議論
25- azakai
ここのnodeの遅さを見る限り、最適化を強制せずに実行したのではないかと思う。nodeはOSR(オン・スタック・リプレースメント)を行わないため、ベンチマークスクリプトがベースラインコンパイラから完全に最適化されたティアに昇格する機会を得られない。
node --no-liftoff
で実行すればこの問題は避けられる。
(これはWebでは問題にならない。コードはいずれにせよイベントループに戻らなければならず、ティアアップが機能するからだ。nodeはそうしたワークフローに最適化されている。)
- pmkary
ずっと昔、wasmerに入るための面接の準備をしていたとき、当時彼らはLinuxのカーネル拡張としてwasmerを実行することで、4桁(10,000倍)速くしたと見せてくれた。WASIを考えると、wasmerのようなもののプラグインとしての使いやすさよりも、なぜWASMがすべてのOSで第二のバイナリとして受け入れられないのか、といつも思う。例えばWindowsは.exeと同様に.wasmもサポートでき、ついにクロスプラットフォームバイナリが手に入るだろう。Appleは決して受け入れないだろうが、Microsoftはやるだろうし、Linuxは単純に持てる。
- ncruces
自分のwasm2goがwazeroと比べてどうなのか気になる。自分でテストすべきだな。 :)