Blazor 性能
我想開始使用 Blazor,儘管它仍處於 alpha 級別。
據我了解,Blazor 使用 WebAssembly 在客戶端編譯 C#。
我有這些問題:
這種方法是否比用 JavaScript 編譯的 React / Vue.js 執行得更快?
每次頁面載入時瀏覽器都需要下載 WebAssembly 庫是真的嗎?
在 Internet 上,沒有任何流行的 JavaScript 框架的性能比較。所以想知道微軟新框架的理論性能。
每次頁面載入時瀏覽器都需要下載 WebAssembly 庫是真的嗎?
不,瀏覽器可以記憶體文件。Blazor 應用程序的通用CDN可以解決問題。
這個系統是否比用 JavaScript 編譯的 React / Vue.js 更快?
Blazor使用 WebAssembly,理論上 WebAssembly 應該比任何 JavaScript 庫都快。然而,並不是所有的瀏覽器都有成熟的 WebAssembly 解析器。因此,您可能會發現瀏覽器目前無法以最佳速度執行 WebAssembly。
您可以創建一個小型 Blazor 應用程序並在 Firefox、Chrome 或Edge中執行它。在大多數情況下,Firefox 執行 Blazor 應用程序的速度比 Chrome 或 Edge 快得多,這意味著瀏覽器製造商仍然需要改進,甚至 Firefox 也可以改進。
如果您的應用程序需要頻繁訪問DOM,那麼與任何 JavaScript 庫相比,WebAssembly / Blazor 肯定會更慢,因為 WebAssembly 在不使用 Invokes 的情況下無法直接訪問 DOM(目前速度很慢。請參閱下面的 Blazor 基準測試) .
在 Firefox 上,
RegisteredFunction.InvokeUnmarshalle對空方法的 10,000 次呼叫需要 250 毫秒,而在我的 PC 中 Chrome 和 Edge 需要超過 2400 毫秒。在純 JavaScript 中,相同場景所需的時間不到 10 毫秒。此外,Blazor 的目前實現在瀏覽器的 WebAssembly 引擎之上有自己的MSIL引擎,這意味著有兩個解釋器在工作來執行 Blazor 項目,就像兩個翻譯器解釋對話而不是一個。目前微軟正在開發一個尚未發布的AOT編譯器。一旦發布,Blazor 將比目前的實現快得多。
我們可以有把握地假設 Web 程序集是 Web 開發的未來,但目前我們不能說 Blazor 的未來。從理論上講,Blazor 可以比現有的任何框架都快,但是我們需要 WebAssembly 維護者、瀏覽器開發人員、微軟和社區的承諾,以使理論變得實用。
2018 年 7 月 10 日更新
WebAssembly 儲存庫中有新的提議。
- 允許 WebAssembly 直接處理 DOM。 介面類型#8
- 帶有 GC 的 WebAssembly 的引用類型。WebAssembly 的引用類型
以上兩個提議將為未來 DOM 和 WebAssembly 之間更快的互動鋪平道路。換句話說,Blazor 未來會更快。
2018 年 10 月 17 日更新
Firefox 團隊能夠以與 JavaScript 到 JavaScript 方法呼叫一樣快的速度實現 JavaScript 到 WebAssembly 呼叫。到目前為止,在 WebAssembly 支持方面,Firefox 遠遠領先於任何其他瀏覽器。