Blazor的表现

asp.net blazor web webassembly

我想开始使用blazor,尽管它仍处于alpha级别。据我了解,blazor使用WebAssembly在客户端编译C#。我有一个问题:这个系统的工作速度是否比使用JavaScript编译的React / Vue更快?浏览器每次加载页面时都需要下载Webassembly库吗?在互联网上没有比较流行的JS框架的性能,所以我想知道微软新框架的理论性能。先谢谢你

一般承认的答案

浏览器每次加载页面时都需要下载Webassembly库吗?

不,浏览器可以缓存文件。 Blazor应用程序的常见CDN可以解决这个问题。

这个系统的工作速度是否比使用JavaScript编译的React / Vue更快?

Blazor使用Web组装,On paper web assembly应该比任何js库更快,但并非所有浏览器都有成熟的Web程序集解析器。因此,您可能会发现浏览器不会以最佳速度运行Web程序集。

您可以创建一个小的blazor应用程序并在Firefox,chrome或edge中运行它。在大多数情况下,Firefox运行blazor应用程序的速度比chrome或edge快得多,这意味着浏览器制造商仍然需要改进,即使Firefox可以改进。

如果您的应用需要经常访问DOM,那么与任何JS库相比,Web程序集/ Blazor肯定会更慢,因为Web程序集无法在不使用Invokes的情况下直接访问DOM(目前速度很慢,请参考下面的我的blazer基准测试)。

在Firefox 10,000 RegisteredFunction.InvokeUnmarshalle调用空方法需要250ms而chrome和edge在我的PC中需要超过2400ms。在纯JS中,对于相同的场景,它需要低于10毫秒。

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

此外,当前的实现Blazor在浏览器Web程序集引擎之上有自己的MSIL引擎,这意味着有两个解释器正在运行Blazor项目,就像两个翻译员在一个上解释对话。目前,微软正在开发一种尚未发布的AOT编译器。一旦它发布Blazor将比当前实现快得多。

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

我们可以放心地假设网络组装是Web开发的未来,但目前我们无法对Blazor的未来发表任何看法。在纸面上Blazor可以比任何框架更快,但是我们需要Web组装维护人员,浏览器开发人员,Microsoft和社区的承诺来使理论变得切实可行。

2018年7月10日更新

WebAssembly存储库中有新的提议。

  1. 允许WebAssembly直接处理DOM。 https://github.com/WebAssembly/host-bindings/blob/master/proposals/host-bindings/Overview.md
  2. 带GC的WebAssembly的引用类型。 https://github.com/WebAssembly/reference-types/blob/master/proposals/reference-types/Overview.md

以上两个提案将为未来DOM与webassembly之间更快的交互铺平道路。 IOW Blazor将来会更快。

2018年10月17日更新

Firefox团队能够像JS - > JS方法调用一样快地达到JS - > WASM调用。截至目前,FireFox在WebAssembly支持方面远远领先于任何其他浏览器

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




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因