
rust-webpack-templeateでパフォーマンスが出ないとき
こちらはrust-webpack-templeateを用いている方向けに書いています。
webpackでリリースモードを指定してるのに、
デバッグの時とパフォーマンスが変わらなかった時の対処方法の紹介です。
実際に自分で遭遇した事象になります。
それでは本文です。
目次
結論:wasmがリリースモードになっていない
下記のようにwebpackのwasmをコンパイルモードを指定します。
wasmを生成しているのは@wasm-tool/wasm-pack-plugin
rust-webpack-templeateでは@wasm-tool/wasm-pack-pluginを用いてwasmを生成しています。
https://github.com/wasm-tool/wasm-pack-plugin
こちらの使用方法にforceModeに記載があります。
wasmの出力を強制する
webpackのmode 「development「production」に対応して
wasmコンパイルも自動で
- 「development」ならdebugモードでコンパイル
- 「production」ならreleaseモードでコンパイル
が選択されるはずが、これが効きませんでした。
そこで、明示的にforceMode: “production”を指定し解決しました。
使用したパッケージのバージョンはこちら
“@wasm-tool/wasm-pack-plugin”: “1.3.1”
リリースモードは流石の性能
参考として性能差を記載します。
こちらのプログラムを開発する過程で速度測定した結果です。
sha2を100000回ハッシュ化するのに
- forceMode: “development” は 5.5 秒
- forceMode: “production” は 0.2 秒
当たり前の結果にはなりますけども、25倍以上の性能差になりました。
それでもパフォーマンスがでない?
wasmをリリースモードでコンパイルしてもパフォーマンスが出ない場合
別の要因があるかもしれません。
ブラウザにフォーカスしたパフォーマンスについてこちらで紹介しています。
ご参考にください。
まとめ
以上でrust-webpack-templeateでパフォーマンスが出ないときの対処方法でした。
同じ現象が出ている方の参考になれば幸いです。
では。