V8提升異步性能:JavaScript一大痛點得以解決

V8 JavaScript團隊宣佈優化異步函數和promises對象。團隊還提升了異步代碼的調試體驗,這也是JavaScript開發人員的共同痛點。

正文

V8 JavaScript團隊宣佈優化了異步函數和promises對象。團隊還提升了異步代碼的調試體驗,這也是JavaScript開發人員的共同痛點。

在ES2015中引入了promises,在之後引入了異步函數,ES2018中引入的異步迭代讓編寫異步代碼變得比使用回調來的更爲高效。

但直到最近,這些新功能使用的優勢還沒有得到很好的體現。Google V8工程師Maya Lekova和Benedikt Meurer解釋稱:

我們非常努力地提升了性能,使得V8的性能從v5.5 (Chrome 55 & Node.js 7)到v6.8 (Chrome 68 & Node.js 10)上了一個臺階。現在的性能水平可以保證開發人員放心地使用這些新的編程範例而不需考慮速度問題。Promise.all的性能水平也提升了8倍。

V8團隊還探索了真實世界的源代碼性能案例,研究了使用promises和異步函數的中間件框架,例如hapi、koa和trek。隨着V8最近的變更,這些框架的性能也顯著提升。

V8中的幾項變更促使了異步性能的提升,包括全新的優化編譯器TurboFan,全新的垃圾收集器Orinoco,將GC過程從主線程中移出,以提升請求處理的過程。另外,Node.js 8中的一個錯誤導致有些情況下等待跳過微拍(microticks)的情況發生。

由於提升了性能,需要用一些建議的補丁來改進異步函數規範,這可以提高V8以及所有JavaScript引擎的性能。這些變更包括移除兩個額外的微拍,並移除了異步函數的throwaway promise。

隨着最近對於V8源代碼的更新,以及對異步函數規範的計劃改進,async和await由於降低了一步函數的開銷,因此也第一次比promise代碼表現得更好。

爲了讓調試變得更加簡單,Chrome DevTools改進了堆跟蹤,包括堆跟蹤的異步部分。

V8是Google推出的開源JavaScript引擎,支持Chrome、基於Chrome的瀏覽器以及Node.js。V8遵循BSD許可證。歡迎開發人員根據Chrome代碼標準V8 GitHub項目下對它作出貢獻

查看英文原文V8 Improves Async Performance

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章