在Firefox58中,WebAssembly元件效能提升了10倍
Mozilla在Firefox 58中為WebAssembly(WASM)元件推出了一套雙層編譯系統,號稱解析和編譯WASM程式碼的速度達到30-60MB/s,足夠在有線網路中實現實時編譯。基準測試表明,新版的效能比舊版提高了10倍,比Chrome快10倍以上。
在Mozilla Hacks部落格的一篇文章中,Lin Clark列舉了一些測出的效能資料:
在一部桌上型電腦上,我們編譯WebAssembly程式碼的速度高達30-60MB每秒,比網路傳輸資料包的速度都快。
使用Firefox Nightly或Beta的使用者可以在自己的裝置上體驗這一進步。即使在效能一般的移動裝置上編譯速度也有8MB/s,快過絕大多數行動網路的平均下載頻寬。
獨立測試人員復現了類似的測試結果。 Reddit使用者a_potato_is_missing用Luke Wagner的tanks編譯速度測試做了對比,他使用一臺安裝了安卓系統的華為P10 Lite進行測試,結果顯示,在Firefox v57中的編譯速度為1.7MB/s,換成Firefox v58就提升到了11.8MB/s。 Windows 10桌面平臺的測試中,編譯速度從v57上的9MB/s提高到了v58上的52.8MB/s。相比之下,Chrome在Android裝置上只跑了1MB/s,桌面平臺上只有4.1MB/s,遠遠落後。
這次效能提升之前,人們已經發現WebAssembly元件的速度比JavaScript更快了。此前的報告中,Figma的一篇案例分析顯示,切換到WebAssembly可以帶來3倍的載入速度;Hackernoon公佈的基準測試則表明,計算密集型圖形程式的執行速度提升了30%。
在一篇博文中,Lin Clark詳細介紹了編譯器如何利用Firefox的並行架構將編譯任務拆解為兩個獨立的執行緒。第一個執行緒直接啟動,實時將網路傳輸來的程式碼編譯成一個基礎版本;第二個執行緒則在後臺將這個基礎版本進一步編譯為優化好的版本。優化版本編譯完成後就會替換掉基礎版本,進一步提升程式碼執行效率。
這次改進意味著WebAssembly可以在網路傳輸程式碼的同時實時編譯出結果。Yehuda Katz指出了這一進步對web開發的意義:
JavaScript程式碼需要花費時間解析編譯,所以資源消耗遠比相同大小的影像檔案要多。如今WASM可以做到實時解析和編譯,其資源消耗就更接近影像檔案,比JavaScript省力多了。改變遊戲規則啊!
相關文章:
原文釋出時間:2018年02月07日
作者:Kevin Ball
本文來源:InfoQ 如需轉載請聯絡原作者
相關文章
- WebAssembly元件提案Web元件
- 百萬商品查詢,效能提升了10倍
- Nacos 2.0 正式釋出,效能提升了 10 倍!!
- [譯]在JavaScript中建立WebAssembly模組例項JavaScriptWeb
- 【譯】Go和WebAssembly:在瀏覽器中執行Go程式GoWeb瀏覽器
- 我對請求做了個效能小最佳化,提升了50%的頁面效能
- 提效新紀元-元件化開發在轉轉App中的應用-後端篇元件化APP後端
- GPU效能提高了30%,AI能力整整提升了三倍。GPUAI
- Web程式效能優化——asm.js和WebAssemblyWeb優化ASMJS
- CheerpX:使用 WebAssembly 在瀏覽器中執行任何程式語言Web瀏覽器
- 用一個效能提升了666倍的小案例說明在TiDB中正確使用索引的重要性TiDB索引
- Blazor WebAssembly 修仙之途 - 元件與資料繫結BlazorWeb元件
- daedalOS:基於WebAssembly在瀏覽器中實現桌面作業系統Web瀏覽器作業系統
- [譯] 更可靠的 React 元件:提純React元件
- 通過 WebAssembly 在瀏覽器執行 PHPWeb瀏覽器PHP
- 在Windows10搭建WebAssembly開發環境WindowsWeb開發環境
- webAssemblyWeb
- 在Linux中,有哪些基本元件?Linux元件
- .NET 中依賴注入元件 Autofac 的效能漫聊依賴注入元件
- AMD RX590和RX580顯示卡效能對比 RX590顯示卡效能提升了多少
- 在畫中畫視窗中安裝 React 元件React元件
- 在react專案中使用shouldComponentUpdate方法進行元件效能優化React元件優化
- 在 Maui 中自繪元件1:繪製UI元件
- 你好WebAssemblyWeb
- 在Linux中,如何檢視網路效能?Linux
- JDBC 在效能測試中的應用JDBC
- 如何在 Blazor WebAssembly中 使用 功能開關BlazorWeb
- 【譯】【圖文】標準化中的 WASI:在 web 之外執行 WebAssembly 的系統介面Web
- WebAssembly現在和未來應用場景大全 - harshalWeb
- vue中在父元件點選按鈕觸發子元件的事件Vue元件事件
- 優雅的在React元件中註冊事件React元件事件
- 在Flutter中嵌入Native元件的解決方案Flutter元件
- v-model指令在元件中怎麼玩元件
- 「ReStory」在 Markdown 中自由書寫 React 元件 (Beta)RESTReact元件
- vue 父元件在created中傳值給子元件,子元件去監聽props變化Vue元件
- 在Linux中,如何監控系統的效能?Linux
- 在Linux中,如何進行磁碟效能監控?Linux
- 提氣!阿里巴巴在全球人工智慧“世界盃”中奪冠阿里人工智慧