概要
wasm生成の練習のため、実践Rustプログラミング入門を参考にしてマンデルブロ集合の計算のwasmとjsで速度比較するWebページを作成しました。
しかし開発中、wasmの速度が遅くなったり速くなったりする挙動に悩まされました。色々調べた結果、Chromeでデベロッパーツールを開いているか否かが原因だったようです。
比較
なんでこうなるのか全くわかっていません🤷後述追記した。
この現象はlocalhostや本番環境関係なく発生しています。
デベロッパツールを開いてconsole.log
で時間計測する際には注意が必要になりそうです。
「wasm 遅い」で検索すると色々出てきますが、こういうのも原因のひとつになっているんじゃないかと思いました。
2023/09/21 0:56 追記
Twitter(X)でご指摘いただきました。ありがとうございます。
Chrome において、DevTools をただ開くと wasm の実行が極めて遅くなる現象が確認されております。これはバグではなくて仕様なのですが、結構複雑な仕様で、
DevTools を開くと TurboFan の最適化がキャンセルされて遅くなる しかし Profile タブで Profile を取るときには再度 TurboFan の最適化が適用される という挙動になっております。Chrome では、ただ DevTools を開いているだけで wasm の実行がかなり遅くなります。大変気づきにくいトリガーなので、wasm 系の開発をされる時にはお気をつけください。
そういう仕様らしいです。
その他
- localhost の WebAssembly は遅いので気を付けろ! - Qiita
- 最初これかなと思ったけど、関係なかった
- ブラウザによっても速度は変わる(これはそういうもの)
- Firefox:117.0.1 (64 ビット)で試したらwasmが明らかに遅かった