ブレザーのパフォーマンス

asp.net blazor web webassembly

質問

それがまだアルファレベルにあるにもかかわらず、私はブレザーを使い始めたいと思います。私が理解しているように、blazorはWebAssemblyを使用してクライアント側でC#をコンパイルします。そして、私は質問があります:このシステムはJavaScriptでコンパイルされたReact / Vueなどより速く動作しますか?ページが読み込まれるたびにブラウザがWebassemblyライブラリをダウンロードする必要がありますか?インターネット上では、普及しているJSフレームワークのパフォーマンスを比較していないので、マイクロソフトの新しいフレームワークの理論的なパフォーマンスを知りたいと思います。前もって感謝します

受け入れられた回答

ページが読み込まれるたびにブラウザがWebassemblyライブラリをダウンロードする必要がありますか?

いいえ、ブラウザはファイルをキャッシュできます。 Blazorアプリの一般的なCDNがこのトリックを行います。

このシステムは、JavaScriptでコンパイルされたReact / Vueなどより高速ですか?

BlazorはWebアセンブリを使用します。紙のWebアセンブリは、すべてのjsライブラリより高速である必要がありますが、すべてのブラウザに成熟Webアセンブリパーサーがまだあるわけではありません。したがって、ブラウザーは今のところ最適な速度でWebアセンブリーを実行しません。

小さなブレーザーアプリを作成し、Firefox、Chrome、またはEdgeで実行することができます。ほとんどの場合、Firefoxはクローザーやエッジよりもはるかに速く、ブラウザのメーカはFirefoxを改善する必要があることを意味します。

アプリケーションがDOMに頻繁にアクセスする必要がある場合は、WebアセンブリがInvokeを使用せずにDOMに直接アクセスすることができないため、Webアセンブリ/ BlazorはJSライブラリに比べて遅くなります(現時点では遅いですが、下のブレーザベンチマーク)。

Firefox 1.0では、 RegisteredFunction.InvokeUnmarshalle空メソッドへの呼び出しには250msかかり、クロムとエッジにはPCで2400ms以上の時間が必要です。純粋なJSでは、同じシナリオで10ミリ秒以下になります。

https://webassemblycode.com/webassembly-cant-access-dom/

さらに、現在の実装Blazorには、ブラウザWebアセンブリエンジンの上に独自のMSILエンジンがあります。これは、Blazorプロジェクトを実行する2つのインタプリタが存在することを意味します。現在、MicrosoftはまだリリースされていないAOTコンパイラを開発中です。 Blazorのリリースは、現在の実装よりもはるかに高速になります。

http://www.mono-project.com/news/2018/01/16/mono-static-webassembly-compilation/

私たちは安全にWebアセンブリがWeb開発の未来だと考えることができますが、現時点でBlazorの将来については何も言えません。ペーパーブレーザーは、そこにあるどのフレームワークよりも速くても構いませんが、Webアセンブリ保守者、ブラウザ開発者、マイクロソフト、コミュニティからのコミットメントが必要です。

2018年7月10日更新

WebAssembly reposには新しい提案があります。

  1. WebAssemblyがDOMを直接処理できるようにします。 https://github.com/WebAssembly/host-bindings/blob/master/proposals/host-bindings/Overview.md
  2. GCを使用したWebAssemblyの参照型。 https://github.com/WebAssembly/reference-types/blob/master/proposals/reference-types/Overview.md

上記の2つの提案は、将来的にDOMとWebアセンブリの間のより迅速な相互作用への道を開くでしょう。 IOW Blazorは将来的にはるかに高速になります。




ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ