Blazor Leistung

asp.net blazor web webassembly

Frage

Ich würde gerne Blazor verwenden, obwohl es immer noch auf Alpha-Niveau ist. Wie ich es verstehe, verwendet Blazor WebAssembly, um C # auf der Client-Seite zu kompilieren. Und ich habe eine Frage: Läuft dieses System schneller als zum Beispiel React / Vue, kompiliert in JavaScript? Stimmt es, dass der Browser die Webassembly-Bibliothek jedes Mal herunterladen muss, wenn die Seite geladen wird? Im Internet gibt es keine Leistungsvergleiche für gängige JS-Frameworks, daher würde ich gerne die theoretische Performance des neuen Frameworks von Microsoft kennen. Vielen Dank im Voraus

Akzeptierte Antwort

Stimmt es, dass der Browser die Webassembly-Bibliothek jedes Mal herunterladen muss, wenn die Seite geladen wird?

Nein, Browser können die Dateien zwischenspeichern. Gemeinsame CDN für Blazor Apps werden den Trick machen.

Ist dieses System schneller als beispielsweise React / Vue, das in JavaScript kompiliert wurde?

Blazor verwendet Web-Assembly, On-Paper-Web-Assembly sollte schneller sein als jede js-Bibliothek, jedoch haben nicht alle Browser einen ausgereiften Web-Assembly-Parser. So können Sie feststellen, dass Browser Web-Assembly ab sofort nicht in einer optimalen Geschwindigkeit ausführen.

Sie können eine kleine blazor App erstellen und sie in Firefox, Chrome oder Edge ausführen. In den meisten Fällen läuft Firefox blazor Apps viel schneller als Chrome oder Edge, was bedeutet, dass Browser-Hersteller immer noch verbessern müssen, sogar Firefox kann verbessern.

Wenn Ihre App häufig auf DOM zugreifen muss, ist web assembly / Blazor im Vergleich zu JS-Bibliotheken definitiv langsamer, da die Webassembly nicht direkt auf DOM zugreifen kann, ohne Invects zu verwenden (siehe unten) ).

Auf Firefox 10.000 fordert RegisteredFunction.InvokeUnmarshalle Aufrufe zu leeren Methoden 250ms während Chrome und Edge mehr als 2400ms in meinem PC brauchen. In reinem JS dauert es unter 10 Millisonds für das gleiche Szenario.

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

Darüber hinaus hat die aktuelle Implementierung Blazor eine eigene MSIL-Engine auf der Web-Assemblierungs-Engine des Browsers, was bedeutet, dass es zwei Interpreter gibt, die ein Blazor-Projekt ausführen. Wie zwei Übersetzer, die eine Konversation statt einer interpretieren. Derzeit arbeitet Microsoft an einem AOT-Compiler, der noch nicht freigegeben ist. Nach seiner Veröffentlichung wird Blazor viel schneller sein als die aktuelle Implementierung.

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

Wir können davon ausgehen, dass die Web-Montage die Zukunft der Web-Entwicklung ist, aber im Moment können wir nichts über Blazors Zukunft sagen. Auf dem Papier kann Blazor schneller sein als jedes Framework da draußen, aber wir brauchen das Engagement von Web-Assembly-Betreuern, Browser-Entwicklern, Microsoft und den Communities, um die Theorien praktisch zu machen.

Update 10. Juli 2018

Es gibt neue Vorschläge in den WebAssembly Repos.

  1. Zulassen, dass WebAssembly DOM direkt behandelt https://github.com/WebAssembly/host-bindings/blob/master/proposals/host-bindings/Overview.md
  2. Referenztypen für WebAssembly mit GC. https://github.com/WebAssembly/reference-types/blob/master/proposals/reference-types/Overview.md

Die obigen zwei Vorschläge ebnen den Weg zu einer viel schnelleren Interaktion zwischen DOM und Web-Assembly in der Zukunft. IOW Blazor wird in Zukunft viel schneller sein.




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum