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

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