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でパフォーマンスが出ないときの対処方法でした。
同じ現象が出ている方の参考になれば幸いです。

では。