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, tandis que les réglages de chrome et de bord nécessitent plus de 2 400 ms sur mon PC. "

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 beaucoup 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 n'importe quel framework, mais nous avons 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 directement DOM. 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.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi