.NET6にてBlazor WebAssembyにAOTコンパイル、事前コンパイルがサポートされました。これにより直接.NETコードを直接 Blazor WebAssemby にコンパイルできます。
これにより.NET6以前は.NET中間言語インタープリタを使用して実行されていた時に比べAOTコンパイルによってパフォーマンスの向上が期待されます。
.NET中間言語インタープリタ を使用して実行されていた時は通常の.NETランタイムを使用していたため実行速度が遅くなっていました。
しかしデメリットとしてアプリのサイズが大きくなります。
通常設定のままではAOTは有効化されないため、まずはAOTを有効にする必要があります。
AOTを使用するために必要なworkroadをインストールします。下記のコマンドを実行してください。
dotnet workload install wasm-tools
次にプロジェクトにAOTを有効にします。
Blazor WebAssembyのプロジェクトから、<プロジェクト>を右クリックで選択し、[プロパティ]を選択します。
開いたプロジェクトのプロパティから[ビルド] – [全般] – [Ahead-of-time(AOT) compilation]のチェックボックスにチェックを入れます。
これでAOTを有効化できました。
Blazor WebAssembyにAOTを有効化するとどれくらい速度の違いが出るかの確認を以下に記します。
項目 | AOTコンパイルあり | AOTコンパイルなし |
速度 | 1439ms | 1931ms |
私が試したプログラムでは約0.5秒の速度短縮になりました。
処理速度の短縮具合はプログラムによって異なることが考えられるため様々なもので試してみたいことと、
.NET MAUI Blazor Appとの速度差がどのような結果になるかというのも機会があれば記事にしていきたいと思います。
Webアプリの開発だと React / Vue / Angular が上がることが多いと思いますが、主に.NETでの開発経験が多い私にとっては、このBlazor WebAssembyの発展も気になるところであります。