Blazor перформанс - PullRequest
       37

Blazor перформанс

0 голосов
/ 19 мая 2018

Я бы хотел начать использовать блазор, несмотря на то, что он все еще находится на альфа-уровне.Насколько я понимаю, Blazor использует WebAssembly для компиляции C # на стороне клиента.И у меня есть вопрос: работает ли эта система быстрее, чем, например, React / Vue, скомпилированная в JavaScript?Правда ли, что браузер должен будет загружать библиотеку Webassembly при каждой загрузке страницы?В Интернете нет сравнений производительности популярных фреймворков JS, поэтому я хотел бы узнать теоретическую производительность новой фреймворк от Microsoft.Заранее спасибо

1 Ответ

0 голосов
/ 19 мая 2018

Правда ли, что браузер должен будет загружать библиотеку Webassembly при каждой загрузке страницы?

Нет, браузеры могут кэшировать файлы.Общий CDN для приложений Blazor сделает свое дело.

Работает ли эта система быстрее, чем, например, React / Vue, скомпилированная в JavaScript?

Blazor использует веб-сборку. На бумаге веб-сборка должна выполняться быстрее, чем любая библиотека js, однако еще не во всех браузерах есть зрелый синтаксический анализатор веб-сборки.Таким образом, вы можете обнаружить, что браузеры не будут запускать веб-сборку с оптимальной скоростью на данный момент.

Вы можете создать небольшое приложение Blazor и запускать его в Firefox, Chrome или Edge.В большинстве случаев Firefox запускает Blazor-приложения намного быстрее, чем Chrome или Edge, что означает, что создатели браузеров все еще нуждаются в улучшении, даже Firefox может улучшиться.

Если вашему приложению требуется частый доступ к DOM, то, безусловно, веб-сборка / Blazorбудет медленнее по сравнению с любыми библиотеками JS, так как веб-сборка не может напрямую получить доступ к DOM без использования Invokes (что сейчас медленно, см. мой тест производительности блейзера ниже).

В Firefox 10 000 RegisteredFunction.InvokeUnmarshalle обращаются кПустые методы занимают 250 мс, в то время как Chrome и Edge требуют более 2400 мс на моем ПК ».В чистом JS для этого же сценария требуется менее 10 миллидонд.

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

Кроме того, в текущей реализации Blazor имеет собственный движок MSIL поверх движка веб-сборки обозревателя,Это означает, что над проектом Blazor работают два переводчика, как два переводчика переводят разговор вместо одного.В настоящее время Microsoft работает над компилятором AOT, который еще не выпущен.После его выпуска Blazor будет намного быстрее текущей реализации.

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

Мы можем с уверенностью предположить, что веб-сборка - это будущее веб-разработки, но на данный момент мы не можем ничего сказать о будущем Blazor.На бумаге Blazor может быть быстрее любой другой среды, однако нам нужны обязательства со стороны разработчиков веб-сборок, разработчиков браузеров, Microsoft и сообществ для воплощения теорий в жизнь.

Обновление 10 июля 2018

В репозитории WebAssembly появились новые предложения.

  1. Разрешение WebAssembly напрямую обрабатывать DOM.https://github.com/WebAssembly/host-bindings/blob/master/proposals/host-bindings/Overview.md
  2. Типы ссылок для WebAssembly с GC.https://github.com/WebAssembly/reference-types/blob/master/proposals/reference-types/Overview.md

Приведенные выше два предложения проложат путь к гораздо более быстрому взаимодействию между DOM и веб-сборкой в ​​будущем.IOW Blazor будет намного быстрее в будущем.

Обновление 17 октября 2018 г.

Команда Firefox смогла достичь вызова JS -> WASM так же быстро, как вызовы JS -> JS метода.На данный момент FireFox значительно опережает любые другие браузеры, когда речь заходит о поддержке WebAssembly

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

...