在Firefox 58中,WebAssembly组件性能提升了10倍
Mozilla在Firefox 58中為WebAssembly(WASM)組件推出了一套雙層編譯系統(tǒng),號(hào)稱解析和編譯WASM代碼的速度達(dá)到30-60MB/s,足夠在有線網(wǎng)絡(luò)中實(shí)現(xiàn)實(shí)時(shí)編譯。基準(zhǔn)測(cè)試表明,新版的性能比舊版提高了10倍,比Chrome快10倍以上。
在Mozilla Hacks博客的一篇文章中,Lin Clark列舉了一些測(cè)出的性能數(shù)據(jù):
在一部臺(tái)式機(jī)上,我們編譯WebAssembly代碼的速度高達(dá)30-60MB每秒,比網(wǎng)絡(luò)傳輸數(shù)據(jù)包的速度都快。
使用Firefox Nightly或Beta的用戶可以在自己的設(shè)備上體驗(yàn)這一進(jìn)步。即使在性能一般的移動(dòng)設(shè)備上編譯速度也有8MB/s,快過絕大多數(shù)移動(dòng)網(wǎng)絡(luò)的平均下載帶寬。
獨(dú)立測(cè)試人員復(fù)現(xiàn)了類似的測(cè)試結(jié)果。 Reddit用戶a_potato_is_missing用Luke Wagner的tanks編譯速度測(cè)試做了對(duì)比,他使用一臺(tái)安裝了安卓系統(tǒng)的華為P10 Lite進(jìn)行測(cè)試,結(jié)果顯示,在Firefox v57中的編譯速度為1.7MB/s,換成Firefox v58就提升到了11.8MB/s。 Windows 10桌面平臺(tái)的測(cè)試中,編譯速度從v57上的9MB/s提高到了v58上的52.8MB/s。相比之下,Chrome在Android設(shè)備上只跑了1MB/s,桌面平臺(tái)上只有4.1MB/s,遠(yuǎn)遠(yuǎn)落后。
這次性能提升之前,人們已經(jīng)發(fā)現(xiàn)WebAssembly組件的速度比JavaScript更快了。此前的報(bào)告中,Figma的一篇案例分析顯示,切換到WebAssembly可以帶來3倍的加載速度;Hackernoon公布的基準(zhǔn)測(cè)試則表明,計(jì)算密集型圖形程序的執(zhí)行速度提升了30%。
在一篇博文中,Lin Clark詳細(xì)介紹了編譯器如何利用Firefox的并行架構(gòu)將編譯任務(wù)拆解為兩個(gè)獨(dú)立的線程。第一個(gè)線程直接啟動(dòng),實(shí)時(shí)將網(wǎng)絡(luò)傳輸來的代碼編譯成一個(gè)基礎(chǔ)版本;第二個(gè)線程則在后臺(tái)將這個(gè)基礎(chǔ)版本進(jìn)一步編譯為優(yōu)化好的版本。優(yōu)化版本編譯完成后就會(huì)替換掉基礎(chǔ)版本,進(jìn)一步提升代碼運(yùn)行效率。
這次改進(jìn)意味著WebAssembly可以在網(wǎng)絡(luò)傳輸代碼的同時(shí)實(shí)時(shí)編譯出結(jié)果。Yehuda Katz指出了這一進(jìn)步對(duì)web開發(fā)的意義:
JavaScript代碼需要花費(fèi)時(shí)間解析編譯,所以資源消耗遠(yuǎn)比相同大小的圖像文件要多。如今WASM可以做到實(shí)時(shí)解析和編譯,其資源消耗就更接近圖像文件,比JavaScript省力多了。改變游戲規(guī)則啊!
相關(guān)文章:
WebAssembly,開發(fā)者贏了
WebAssembly:隨風(fēng)潛入夜
實(shí)驗(yàn)進(jìn)行中:.NET WebAssembly支持
使用Mono將C#編譯運(yùn)行至WebAssembly平臺(tái)
原文地址:http://www.infoq.com/cn/news/2018/02/firefox-58-web-assembly-gets-10x
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的在Firefox 58中,WebAssembly组件性能提升了10倍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Actor-ES框架:Ray-Handl
- 下一篇: dotnetcore+vue+eleme