La performance blazor

asp.net blazor web webassembly

Question

Je voudrais commencer à utiliser blazor, même s'il est toujours au niveau alpha. Si je comprends bien, blazor utilise WebAssembly pour compiler C # du côté client. Et j’ai une question: ce système est-il plus rapide à travailler que, par exemple, React / Vue, compilé en JavaScript? Est-il vrai que le navigateur devra télécharger la bibliothèque Webassembly à chaque chargement de la page? Sur Internet, il n’existe aucune comparaison des performances des frameworks JS populaires. Je souhaite donc connaître les performances théoriques du nouveau framework de Microsoft. Merci d'avance

Réponse acceptée

Est-il vrai que le navigateur devra télécharger la bibliothèque Webassembly à chaque chargement de la page?

Non, les navigateurs peuvent mettre en cache les fichiers. Un CDN commun pour les applications Blazor fera l'affaire.

Ce système fonctionne-t-il plus vite que, par exemple, React / Vue, compilé en JavaScript?

Blazor utilise l'assemblage Web. L'assemblage Web sur papier devrait être plus rapide que n'importe quelle bibliothèque js, mais tous les navigateurs ne disposent pas encore d'un analyseur d'assemblage Web mature. Vous constaterez donc peut-être que les navigateurs n'exécuteront pas l'assemblage Web à une vitesse optimale dès maintenant.

Vous pouvez créer une petite application Blazor et l'exécuter sous Firefox, Chrome ou Edge. Dans la plupart des cas, Firefox exécute des applications Blazor beaucoup plus rapidement que Chrome ou Edge, ce qui implique que les fabricants de navigateurs doivent encore s’améliorer, même Firefox peut s’améliorer.

Si votre application a besoin d'accéder à DOM fréquemment, l'assemblage Web / Blazor sera plus lent que toutes les bibliothèques JS car l'assemblage Web ne peut pas accéder directement au DOM sans utiliser Invokes (ce qui est lent pour le moment, référez-vous à mon repère blazer ci-dessous ).

Sur Firefox 10 000 RegisteredFunction.InvokeUnmarshalle appels aux méthodes vides prennent 250 ms, alors que chrome et le contour ont besoin de plus de 2 400 ms sur mon PC. "En JS pur, il faut moins de 10 millisecondes pour le même scénario.

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

En outre, Blazor a son propre moteur MSIL au-dessus du moteur d’assemblage Web des navigateurs, ce qui signifie que deux interprètes travaillent pour exécuter un projet Blazor, comme deux traducteurs interprétant une conversation sur un seul. Actuellement, Microsoft travaille sur un compilateur AOT, qui n'est pas encore publié. Une fois sorti, Blazor sera bien plus rapide que l’implémentation actuelle.

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

Nous pouvons sans risque supposer que l'assemblage Web est l'avenir du développement Web, mais pour le moment, nous ne pouvons rien dire sur l'avenir de Blazor. Sur papier, Blazor peut être plus rapide que tout autre framework, mais nous avons toutefois besoin de l'engagement des responsables de l'assemblage Web, des développeurs de navigateurs, de Microsoft et des communautés pour rendre les théories pratiques.

Mise à jour du 10 juillet 2018

Il y a de nouvelles propositions dans les référentiels de WebAssembly.

  1. Permettre à WebAssembly de gérer DOM directement. https://github.com/WebAssembly/host-bindings/blob/master/proposals/host-bindings/Overview.md
  2. Types de référence pour WebAssembly avec GC. https://github.com/WebAssembly/reference-types/blob/master/proposals/reference-types/Overview.md

Les deux propositions ci-dessus vont ouvrir la voie à une interaction beaucoup plus rapide entre DOM et webassembly dans le futur. IOW Blazor sera beaucoup plus rapide dans le futur.

Mise à jour 17 octobre 2018

L’équipe de Firefox a été en mesure d’atteindre les appels JS -> WASM aussi rapidement que les appels de méthodes JS -> JS. Pour le moment, FireFox est bien en avance sur tous les autres navigateurs en ce qui concerne la prise en charge de WebAssembly.

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



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow