我想開始使用blazor,儘管它仍處於alpha級別。據我了解,blazor使用WebAssembly在客戶端編譯C#。我有一個問題:這個系統的工作速度是否比使用JavaScript編譯的React / Vue更快?瀏覽器每次加載頁面時都需要下載Webassembly庫嗎?在互聯網上沒有比較流行的JS框架的性能,所以我想知道微軟新框架的理論性能。先謝謝你
瀏覽器每次加載頁面時是否都需要下載Webassembly庫,這是真的嗎?
不,瀏覽器可以緩存文件。 Blazor應用程序的通用CDN可以解決問題。
這個系統的工作速度是否比用JavaScript編譯的React / Vue更快?
Blazor使用Web程序集,在紙上Web程序集應該比任何js庫都快,但是並不是所有的瀏覽器都具有成熟的Web程序集解析器。因此,您可能會發現,到目前為止,瀏覽器將無法以最佳速度運行Web程序集。
您可以創建一個小型的blazor應用程序,然後在Firefox,chrome或edge中運行它。在大多數情況下,Firefox運行blazor應用程序的速度比chrome或edge快得多,這意味著瀏覽器製造商仍然需要改進,甚至Firefox也可以改進。
如果您的應用需要經常訪問DOM,則與任何JS庫相比,Web彙編/ Blazor肯定會更慢,因為Web彙編不能直接使用而不使用Invokes來訪問DOM(目前運行緩慢,請參考下面的blazer基準測試) )。
在Firefox上,在我的PC上,對10,000個RegisteredFunction.InvokeUnmarshalle
空方法調用花費250毫秒,而chrome和edge需要2400毫秒以上。在純JS中,相同情況下的花費低於10毫秒。
https://webassemblycode.com/webassembly-cant-access-dom/
另外,當前的實現Blazor在瀏覽器Web Assembly Engine之上具有自己的MSIL引擎,這意味著有兩個解釋器在運行Blazor項目,就像兩個翻譯在一個對話中解釋一個對話一樣。當前,Microsoft正在開發尚未發布的AOT編譯器。一旦發布,Blazor將比當前的實現快得多。
http://www.mono-project.com/news/2018/01/16/mono-static-webassembly-compilation/
我們可以放心地假設Web程序集是Web開發的未來,但是目前我們還不能說出Blazor的未來。在紙面上,Blazor可以比現有的任何框架都快,但是我們需要Web程序集維護者,瀏覽器開發人員,Microsoft和社區的承諾,以使這些理論切實可行。
WebAssembly倉庫中有新的提議。
以上兩個建議將為將來DOM和Webassembly之間更快的交互鋪平道路。 IOW Blazor將來會更快。
Firefox團隊能夠以與JS-> JS方法調用一樣快的速度到達JS-> WASM調用。到目前為止,在WebAssembly支持方面,FireFox遠遠領先於其他任何瀏覽器