webassembly阮一峰 在Firefox中,如何加快JavaScript和WebAssembly代碼的調(diào)用時間?
在Firefox中,如何加快JavaScript和WebAssembly代碼的調(diào)用時間?由官方博客文章可知,通過 JavaScript 執(zhí)行 1 億次 WebAssembly 函數(shù)調(diào)用的時間,已經(jīng)從此
在Firefox中,如何加快JavaScript和WebAssembly代碼的調(diào)用時間?
由官方博客文章可知,通過 JavaScript 執(zhí)行 1 億次 WebAssembly 函數(shù)調(diào)用的時間,已經(jīng)從此前的 5500 ms(5.5 秒)、降低到了現(xiàn)在的不到 500 ms(0.5 秒)。
在運行依賴于 WebAssembly 的頁面(包括一些基于瀏覽器的游戲)時,這項改進會更加明顯。
此前,Mozilla 一直在使用 C 來幫助理解 WebAssembly 代碼、并將之傳遞給 JavaScript 代碼。
為了提升速度,Mozilla 決定直接切斷這個“中間人”。該公司稱:
我們拿到了入口存根處(entry stub)運行的 C 代碼,讓它可被 JIT 代碼直接調(diào)用。
當(dāng)引擎從 JavaScript 向 WebAssembly 切換時,就會解包 entry stub 數(shù)值、并將之放到正確的位置。
此外,Mozilla 還提升了通過 WebAssembly 調(diào)用瀏覽器內(nèi)置函數(shù)的速度,以及從 JavaScript 到 WebAssembly 的單態(tài)調(diào)用。
如果你對內(nèi)部工作原理的變化深感興趣,請一定不要錯過 Mozilla 官方撰寫的這篇通俗易懂的博客文章(附有趣味的插圖和注釋)。
https://hacks.mozilla.org/2018/10/calls-between-javascript-and-webassembly-are-finally-fast-/
WebAssembly的出現(xiàn)是否會取代JavaScript?
webassembly都出來多久了?要是能顛覆它不早就顛覆了嗎?它等什么?