web-dev-qa-db-ja.com

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

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

41
FoxPro

ブラウザがページを読み込むたびにWebassemblyライブラリをダウンロードする必要があるのは本当ですか?

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

このシステムは、たとえばJavaScriptでコンパイルされたReact/Vueよりも高速に動作しますか?

BlazorはWebアセンブリを使用します。紙のWebアセンブリはどのjsライブラリよりも高速ですが、すべてのブラウザに成熟したWebアセンブリパーサーがまだあるわけではありません。そのため、現時点では、ブラウザーがWeb Assemblyを最適な速度で実行しないことに気付くかもしれません。

小さなblazorアプリを作成して、Firefox、chromeまたはEdgeで実行できます。ほとんどの場合、FirefoxはchromeやEdgeよりもはるかに高速にblazorアプリを実行します。これは、Firefoxでさえも改善が必要なブラウザメーカーの改善が必要であることを意味します。

アプリが頻繁にDOMにアクセスする必要がある場合、Web AssemblyはInvokesを使用せずにDOMに直接アクセスできないため、間違いなくWeb Assembly/BlazorはJSライブラリと比較して遅くなります(現時点では遅いので、下のブレザーベンチマークを参照してください) 。

Firefox 10,000では、空のメソッドへのRegisteredFunction.InvokeUnmarshalle呼び出しには250ミリ秒かかりますが、chromeとEdgeには私のPCで2400ミリ秒以上必要です。」純粋なJSでは、同じシナリオで10ミリ秒未満かかります。

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

さらに、現在の実装Blazorには、ブラウザWeb Assembly Engineの上に独自のMSILエンジンがあります。つまり、Blazorプロジェクトを実行するために2人のインタープリターが働いています。現在、MicrosoftはAOTコンパイラに取り組んでおり、まだリリースされていません。リリース後、Blazorは現在の実装よりもはるかに高速になります。

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

Web AssemblyはWeb開発の未来であると安全に想定できますが、現時点ではBlazorの未来については何も言えません。紙の上では、Blazorは他のどのフレームワークよりも高速になりますが、理論を実用的にするには、Webアセンブリのメンテナー、ブラウザ開発者、マイクロソフト、コミュニティのコミットメントが必要です。

2018年7月10日更新

WebAssemblyリポジトリに新しい提案があります。

  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は将来的にはるかに高速になるでしょう。

2018年10月17日更新

Firefoxチームは、JS-> WASコールをJS-> JSメソッドコールと同じ速さで到達できました。現在、FireFoxはWebAssemblyのサポートに関して他のブラウザよりもはるかに優れています。

https://hacks.mozilla.org/2018/10/calls-between-javascript-and-webassembly-are-finally-fast-%F0%9F%8E%89/

79
VibeeshanRC