写点什么

V8 提升异步性能:JavaScript 一大痛点得以解决

  • 2019-01-12
  • 本文字数:844 字

    阅读完需:约 3 分钟

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


2019-01-12 08:0010045
用户头像

发布了 218 篇内容, 共 77.6 次阅读, 收获喜欢 76 次。

关注

评论

发布
暂无评论
发现更多内容

阿里P8大佬亲自教你!2021Android进阶者的新篇章

欢喜学安卓

android 程序员 面试 移动开发

职场中的换位思考,看这篇就够了

石云升

职场经验 7月日更 换位思考

用三国杀讲分布式算法,舒适了吧?

悟空聊架构

分布式 PAXOS 7月日更 三国杀 拜占庭

网络攻防学习笔记 Day71

穿过生命散发芬芳

网络攻防 7月日更

Python OpenCV 之图像金字塔,高斯金字塔与拉普拉斯金字塔

梦想橡皮擦

7月日更

极光开发者周刊【No.0709】

极光GPTBots-极光推送

dubbogo 凌烟阁之 方银城

apache/dubbo-go

hdfs 中 datanode 工作机制以及数据存储

大数据技术指南

hdfs 7月日更

架构实战营 模块二作业

孫影

架构实战营 #架构实战营

一文掌握Java TreeMap与HashMap

Jackpop

阿里P8大佬整理!2021最新阿里Android面试流程

欢喜学安卓

android 程序员 面试 移动开发

【LeetCode】H 指数Java题解

Albert

算法 LeetCode 7月日更

【极光笔记】iOS 15推送新特性初探

极光GPTBots-极光推送

Redis - Cluster - 源码阅读(二)

旺仔大菜包

redis

架构实战训练营 - 模块八课后作业

Johnny

架构实战营

以产业区块链提升数字化转型质量

CECBC

高性能架构

编号94530

Java 架构设计 高性能

Goroutine 是如何运行的

Rayjun

调度器 Go 语言

10条让开发者受益终生的编码原则

Jackpop

模块七作业-王者荣耀商城异地多活架构设计

张大彪

模块8作业

薛定谔的指南针

架构实战营

Facebook工程经验--PCIe故障监控和修复

俞凡

架构 大厂实践

市场总局禁止虎牙斗鱼合并:抵制互联网行业垄断行为

石头IT视角

区块链+游戏资产所有权,将如何激活游戏经济的发展?

CECBC

智能重排序在推荐场景中的应用(三十四)

Databri_AI

推荐系统 排序 智能

7款神器,让程序员幸福感暴增!

Jackpop

模块八作业-设计消息队列存储消息数据的 MySQL 表格

张大彪

自建开发工具系列-Webkit内存动量监控UI(三)

Tim

MVP

dubbogo 凌烟阁之 望哥

apache/dubbo-go

MapReduce 设计构思

五分钟学大数据

7月日更

Spring中这么重要的AnnotationAwareAspectJAutoProxyCreator类是干嘛的?

冰河

spring aop ioc springboot Spring注解

V8提升异步性能:JavaScript一大痛点得以解决_语言 & 开发_Dylan Schiemann_InfoQ精选文章