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. Das übliche CDN für Blazor-Apps wird es schaffen.

Läuft dieses System schneller als beispielsweise in JavaScript kompiliertes React / Vue?

Blazor verwendet Webassembly . Auf Papier sollte die Webassembly schneller als jede andere js-Bibliothek sein, jedoch verfügen noch nicht alle Browser über einen ausgereiften Webassembly-Parser. Möglicherweise stellen Sie fest, dass Browser die Webassembly ab sofort nicht mit optimaler Geschwindigkeit ausführen.

Sie können eine kleine Blazor-App erstellen und in Firefox, Chrome oder Edge ausführen. In den meisten Fällen führt Firefox Blazor-Apps viel schneller als Chrome oder Edge aus, was bedeutet, dass Browserhersteller noch Verbesserungen vornehmen müssen, selbst Firefox kann sich verbessern.

Wenn Ihre App häufig auf DOM zugreifen muss, ist die Webassembly / Blazor im Vergleich zu anderen JS-Bibliotheken auf jeden Fall langsamer, da die Webassembly nicht ohne Verwendung von Invokes direkt auf DOM zugreifen kann (was im Moment langsam ist, siehe unten den untenstehenden Blazer-Benchmark) ).

Auf Firefox 10,000 RegisteredFunction.InvokeUnmarshalle Aufrufe von leeren Methoden sind 250 ms erforderlich, während Chrome und Edge in meinem PC mehr als 2400 ms benötigen. “Bei reinem JS dauert das gleiche Szenario weniger als 10 Millisekunden.

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

Die aktuelle Implementierung von Blazor enthält außerdem eine eigene MSIL-Engine über der Web-Assembly-Engine des Browsers. Dies bedeutet, dass zwei Interpreter für die Ausführung eines Blazor-Projekts arbeiten. So wie zwei Übersetzer eine Konversation statt einer Konversation. Derzeit arbeitet Microsoft an einem AOT-Compiler, der noch nicht veröffentlicht ist. Nach seiner Veröffentlichung wird Blazor viel schneller als die aktuelle Implementierung sein.

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

Wir können sicher davon ausgehen, dass die Webmontage die Zukunft der Webentwicklung ist, aber im Moment können wir nichts über Blazors Zukunft sagen. Auf dem Papier kann Blazor schneller sein als alle anderen Frameworks. Wir brauchen jedoch ein Engagement von Betreibern von Web-Assemblys, Browser-Entwicklern, Microsoft und den Communitys, um die Theorien in die Praxis umzusetzen.

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 beiden oben genannten Vorschläge werden in Zukunft zu einer viel schnelleren Interaktion zwischen DOM und Webassembly führen. IOW Blazor wird in Zukunft viel schneller sein.

Update 17. Oktober 2018

Das Firefox-Team konnte JS -> WASM-Aufrufe so schnell wie JS -> JS-Methoden aufrufen. Ab sofort ist FireFox allen anderen Browsern weit voraus, wenn es um die Unterstützung von WebAssembly geht

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



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