QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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:009899
用户头像

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

关注

评论

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

EMQ 映云科技走进高校,与浙大城市学院联合促进物联网人才培养

EMQ映云科技

物联网 mqtt

PackML从会到不会——状态、管理标签(5)

陈的错题集

标准化 PackML

Gartner预测全球人工智能软件市场将在2022年达到620亿美元规模

BeeWorks

2021年11月云主机性能评测报告

博睿数据

云主机 博睿数据 数据链DNA

基于云的技术架构设计实践-第5篇

hackstoic

数据分析 云原生 数据可视化 业务分析 签约计划第二季

架构实战营模块一学习总结

Evan

架构实战营

普华基础软件加入龙蜥并成为理事单位,共创开源操作系统新生态

OpenAnolis小助手

龙蜥社区

Cypress 基础 - 元素的定位

汪子熙

CSS html Cypress 28天写作 12月日更

缓存数据的淘汰之路(中)

卢卡多多

缓存 28天写作 签约计划第二季 12月日更

博睿数据携手火山引擎,共建新云新未来

博睿数据

百万级 QPS 业务新宠,金山办公携手 Apache APISIX 打造网关实践新体验

API7.ai 技术团队

云原生 API网关 wps API Gateway Apache APISIX

云ERP系统究竟是什么?

低代码小观

流程管理 ERP 业务流程管理 业务流程自动化

2021年11月国产数据库大事记

墨天轮

数据库 opengauss TiDB oceanbase 国产数据库

缓存数据的淘汰之路(上)

卢卡多多

28天写作 签约计划第二季 12月日更

2600亿!全球最大中文单体模型鹏城-百度·文心发布

百度大脑

人工智能

ONES X 蓝城兄弟|有机的研发管理改进是最健康的颠覆

万事ONES

项目管理 ONES 项目管理工具

自定义View:如何实现点击图标旋转的动画效果

Changing Lin

12月日更

你以为Vue3封装一个弹框组件很简单?

CRMEB

30个类手写Spring核心原理之环境准备(1)

Tom弹架构

Java spring 源码

构建信创基础软硬件共同体,DataPipeline与中科曙光完成产品兼容互认证

DataPipeline数见科技

大数据 中间件 服务器 数据融合

Veritas:2022年数据安全及合规领域行业预测

BeeWorks

斟茶兵——远程进程管理

白粥

进程管理 运维开发 系统维护 离职交接 日常工作

一周信创舆情观察(11.29~12.5)

统小信uos

java序列化实现原理和深度分析

Java个体户

Java

FPGA大发展!现在或许是从事FPGA行业的最好时代

科技新消息

架构实战营模块一作业

Evan

架构实战营

Python代码阅读(第69篇):首字母大小写变换

Felix

Python Code 字符串 阅读代码 Python初学者

探索圈外的世界 | GTLC 全球技术领导力峰会·厦门站圆满收官

TGO鲲鹏会

区块链 方法论 技术管理 GTLC

使用 HTML、CSS 和 JavaScript 制作的随机密码生成器

海拥(haiyong.site)

JavaScript 密码 28天写作 签约计划第二季 12月日更

缓存数据的淘汰之路(下)

卢卡多多

缓存 28天写作 签约计划第二季 12月日更

想给用户天涯若比邻的体验?业务全球化面临的三重挑战

声网

网络

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