Prestazione di Blazor

asp.net blazor web webassembly

Domanda

Mi piacerebbe iniziare a usare il blazer, nonostante il fatto che sia ancora al livello alfa. A quanto ho capito, blazor usa WebAssembly per compilare C # sul lato client. E ho una domanda: questo sistema è più veloce da utilizzare rispetto, ad esempio, a React / Vue, compilato in JavaScript? È vero che il browser dovrà scaricare la libreria di Webassembly ogni volta che viene caricata la pagina? Su Internet non ci sono confronti delle prestazioni dei framework JS più diffusi, quindi mi piacerebbe conoscere le prestazioni teoriche del nuovo framework di Microsoft. Grazie in anticipo

Risposta accettata

È vero che il browser dovrà scaricare la libreria di Webassembly ogni volta che viene caricata la pagina?

No, i browser possono memorizzare nella cache i file. Il CDN comune per le app Blazor farà il trucco.

Questo sistema è più veloce da utilizzare rispetto, ad esempio, a React / Vue, compilato in JavaScript?

Blazor usa l'assemblaggio del web, l'assemblaggio del web sulla carta dovrebbe essere più veloce di qualsiasi libreria js, tuttavia non tutti i browser hanno ancora un parser per il web assembly maturo. Quindi potresti scoprire che i browser non eseguiranno l'assemblaggio web in una velocità ottimale fin d'ora.

Puoi creare una piccola applicazione blazor ed eseguirla in Firefox, Chrome o Edge. Nella maggior parte dei casi, Firefox esegue applicazioni blazer molto più velocemente di chrome o edge, il che implica che i produttori di browser devono ancora migliorare, anche Firefox può migliorare.

Se la tua app deve accedere a DOM frequentemente, sicuramente web assembly / Blazor sarà più lento rispetto a qualsiasi libreria JS dato che l'assemblaggio web non può accedere direttamente al DOM senza utilizzare Invokes (che al momento è lento, fai riferimento al benchmark del mio blazer qui sotto ).

Su Firefox 10.000 RegisteredFunction.InvokeUnmarshalle chiama a vuoto i metodi impiega 250ms mentre chrome e edge richiedono più di 2400ms nel mio PC. "In puro JS ci vogliono meno di 10 millisecondi per lo stesso scenario.

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

Inoltre, l'attuale implementazione Blazor ha il suo motore MSIL in cima al motore dell'assembly web del browser, il che significa che ci sono due interpreti che lavorano per eseguire un progetto Blazor, come due traduttori che interpretano invece una conversazione su uno. Attualmente Microsoft sta lavorando su un compilatore AOT, che non è ancora stato rilasciato. Una volta rilasciato Blazor sarà molto più veloce dell'attuale implementazione.

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

Possiamo tranquillamente presumere che il web assembly sia il futuro dello sviluppo web, ma al momento non possiamo dire nulla sul futuro di Blazor. Sulla carta Blazor può essere più veloce di qualsiasi framework là fuori, tuttavia abbiamo bisogno di impegno da parte dei manutentori del web assembly, sviluppatori del browser, Microsoft e le comunità per rendere pratiche le teorie.

Aggiornamento 10 luglio 2018

Ci sono nuove proposte nel repository WebAssembly.

  1. Consentire a WebAssembly di gestire direttamente il DOM. https://github.com/WebAssembly/host-bindings/blob/master/proposals/host-bindings/Overview.md
  2. Tipi di riferimento per WebAssembly con GC. https://github.com/WebAssembly/reference-types/blob/master/proposals/reference-types/Overview.md

Sopra le due proposte si aprirà la strada per un'interazione molto più rapida tra DOM e webassembly in futuro. IOW Blazor sarà molto più veloce in futuro.




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché