質問: それがまだアルファレベルにあるにもかかわらず、私はブレザーを使い始めたいと思います。私が理解しているように、blazorはWebAssemblyを使用してクライアント側でC#をコンパイルします。そして、私は質問があります:このシステムはJavaScriptでコンパイルされたReact / Vueなどより速く動作しますか?ページが読み込まれるたびにブラウザがWebassemblyライブラリをダウンロードする必要がありますか?インターネット上では、普及しているJSフレームワークのパフォーマンスを比較していないので、マイクロソフトの新しいフレームワークの理論的なパフォーマンスを知りたいと思います。前もって感謝します
回答: > ブラウザがページを読み込むたびにWebassemblyライブラリをダウンロードする必要があるのは本当ですか? > > いいえ、ブラウザはファイルをキャッシュできます。 Blazorアプリ用の一般的なCDNがトリックを行います。 > このシステムは、たとえばJavaScriptでコンパイルされたReact / Vueよりも高速に動作しますか? > > **Blazor**はWebアセンブリを使用します。紙上のWebアセンブリはどのjsライブラリよりも高速である必要がありますが、すべてのブラウザに成熟したWebアセンブリパーサーがまだあるわけではありません。そのため、現時点では、ブラウザーがWebアセンブリを最適な速度で実行しないことに気付くかもしれません。 小さなblazorアプリを作成して、Firefox、Chrome、またはEdgeで実行できます。ほとんどの場合、Firefoxはchromeやedgeよりもはるかに高速にblazorアプリを実行します。これは、Firefoxでさえも改善できるブラウザメーカーの改善が必要であることを意味します。 アプリが頻繁にDOMにアクセスする必要がある場合、WebアセンブリはInvokesを使用せずにDOMに直接アクセスできないため、Webアセンブリ/ BlazorはJSライブラリに比べて間違いなく遅くなります(現時点では遅いので、私のブレザーベンチマークを参照してください)。 Firefox 10,000では、 `RegisteredFunction.InvokeUnmarshalle`空のメソッドの呼び出しは250ミリ秒かかりますが、クロムとエッジは私のPCで2400ミリ秒以上必要です。純粋なJSでは、同じシナリオで10ミリ秒未満かかります。 さらに、現在の実装では、BlazorはブラウザWebアセンブリエンジンの上に独自のMSILエンジンを備えています。つまり、2人の翻訳者が会話を1人で解釈するように、Blazorプロジェクトを実行する2人の通訳者がいます。現在、MicrosoftはAOTコンパイラに取り組んでおり、まだリリースされていません。リリース後、Blazorは現在の実装よりもはるかに高速になります。 WebアセンブリはWeb開発の将来であると安全に想定できますが、現時点ではBlazorの将来については何も言えません。紙の上では、Blazorは他のどのフレームワークよりも高速ですが、理論を実用的にするためには、Webアセンブリメンテナー、ブラウザ開発者、Microsoftおよびコミュニティからのコミットメントが必要です。 2018年7月10日更新 ============= WebAssemblyリポジトリに新しい提案があります。 1. WebAssemblyがDOMを直接処理できるようにします。 2. GCを使用したWebAssemblyの参照型。 上記の2つの提案は、将来DOMとWebアセンブリの間のより高速な相互作用への道を開くでしょう。 IOW Blazorは将来的にはるかに高速になるでしょう。 2018年10月17日更新 ============== Firefoxチームは、JS-> WASコールをJS-> JSメソッドコールと同じ速さで到達できました。現在、FireFoxはWebAssemblyのサポートに関して他のブラウザよりもはるかに優れています。