AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

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

关注

评论

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

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

CH

架构实战营 #架构实战营 「架构实战营」

极速生成缩略图,Serverless 支撑赛事转播锁定冬奥亮点

阿里巴巴云原生

阿里云 Serverless 云原生 冬奥会 函数计算FC

[架构实战营]模块八 消息队列Mysql表格设计

Vincent

「架构实战营」

架构训练营模块八作业

zhongwy

【架构实战营】模块八:命题作业

wgl

「架构实战营」

Go 语言入门很简单:从 goroutine 出发到并发

宇宙之一粟

Go 语言 goroutine 2月月更

Meta启示:AI是通往元宇宙的关键变量

脑极体

架构实战营 4 期第八模块作业

jialuooooo

架构实战营

架构实战营4期-模块八作业

木几丶

「架构实战营」

云原生训练营-Week02

jjn0703

云原生训练营

架构训练营模块八作业

沈益飞

架构训练营 架构师训练营 4 期

「架构实战营」模块八《如何设计贴合业务的高性能高可用中间件系统》作业

DaiChen

作业 「架构实战营」 模块八

架构实战模块八作业

Anlumina

「架构实战营」

Thinkphp最新版本漏洞分析

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

XSS练习小游戏和答案参考

喀拉峻

网络安全

设计消息队列存储消息数据的 MySQL 表格

AUV

「架构实战营」

卫星商业价值的尽头,谁来善后?

脑极体

模块八

Geek_59dec2

Go 语言入门很简单:Go 如何面向对象

宇宙之一粟

面向对象 Go 语言 2月月更

架构实战营 模块八

架构实战营 「架构实战营」 模块八

什么是开源的「第一性原理」?

腾源会

开源 腾源会

模块八作业

hunk

云原生训练营

架构实战营第 4 期 -- 模块八作业

烈火干柴烛灭田边残月

架构实战营

模块八 - 消息队列存储数据表结构设计

圈圈gor

架构实战营 「架构实战营」

2022 ARTS|Week 08

MiracleWong

算法 写作 ARTS 打卡计划

工作想法小计(3):2/21 - 2/25

非晓为骁

个人成长 工作

Lyft微服务研发效能提升实践 | 3. 利用覆盖机制在预发环境中扩展服务网格

俞凡

研发效能 大厂实践 2月月更 lyft

EventBridge消息路由|高效构建消息路由能力

阿里巴巴云原生

阿里云 云原生 消息队列 EventBridge

消息队列基于Mysql存储表设计

tony

「架构实战营」

【安全漏洞】深入剖析CVE-2021-40444-Cabless利用链

H

模块八作业

李晓笛

「架构实战营」

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