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調用空方法需要250毫秒,而chrome和edge在我的PC中需要超過2400毫秒。在純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將來會更快。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因