增强版 V8,支持可变堆数字
在 V8 中,我们始终致力于提升 JavaScript 性能。作为此项工作的一个部分,我们最近重新审视了 JetStream2 基准测试套件,以消除性能瓶颈。本篇文章详细介绍了我们进行的一项优化,该优化使 async-fs
基准测试的性能提升了显著的 2.5 倍
,并对整体得分产生了显著影响。这项优化源于基准测试,但类似的模式确实存在于 真实代码中。
在 V8 中,我们始终致力于提升 JavaScript 性能。作为此项工作的一个部分,我们最近重新审视了 JetStream2 基准测试套件,以消除性能瓶颈。本篇文章详细介绍了我们进行的一项优化,该优化使 async-fs
基准测试的性能提升了显著的 2.5 倍
,并对整体得分产生了显著影响。这项优化源于基准测试,但类似的模式确实存在于 真实代码中。
欢迎来到激动人心的V8世界,在这里速度不仅仅是一种特性,而是一种生活方式。随着我们向2023告别,是时候庆祝V8今年取得的令人印象深刻的成就了。
通过创新的性能优化,V8继续拓展Web不断演变的边界。我们引入了新的中层编译器,并对顶级编译器基础设施、运行时和垃圾回收器进行了多项改进,从而实现了全方位的显著速度提升。
JavaScript中的异步处理传统上被认为速度不是特别快。更糟糕的是,调试实时JavaScript应用程序——特别是Node.js服务器——并不是一件容易的事,尤其是异步编程。幸运的是,时代正在改变。这篇文章探讨了我们如何优化V8中的异步函数和Promise(也在一定程度上优化了其他JavaScript引擎),并描述了我们如何改进异步代码的调试体验。
DataView
s 是 JavaScript 中低级内存访问的两种可能方式之一,另一种是 TypedArray
s。到目前为止,V8 中的 DataView
s 比 TypedArray
s 的优化程度低得多,导致在诸如图形密集工作负载或解码/编码二进制数据的任务中性能较差。这些情况的原因主要是历史选择,例如 asm.js 选择了 TypedArray
s 而不是 DataView
s,从而导致引擎更专注于 TypedArray
s 的性能。
本月标志着不仅是谷歌浏览器发布的十周年,同时也是V8项目发布的十周年。这篇文章概述了V8项目在过去10年中的主要里程碑,以及项目仍处于保密阶段时的早期发展。
自从Speedometer 1.0于2014年首次发布以来,Blink和V8团队一直将其作为衡量流行JavaScript框架实际使用的基准测试,我们在该基准测试中取得了显著的加速成效。我们通过对比真实网站进行独立验证,证实了这些改进确实给用户带来了实际好处,数据显示流行网站的页面加载时间的改善也提高了Speedometer的得分。
JavaScript 性能对 V8 团队来说一直很重要,在这篇文章中,我们希望讨论一个新的 JavaScript Web Tooling Benchmark。我们最近正在使用它来识别和修复 V8 中的一些性能瓶颈。您可能已经知道 V8 对 Node.js 的强烈承诺,而这个基准测试进一步延续了这一承诺,特别是通过运行基于 Node.js 构建的常见开发者工具的性能测试。Web Tooling Benchmark 中包含的工具是现代开发者和设计师今天使用的构建现代网站和基于云的应用程序的工具。为了继续我们专注于 现实场景性能 而不是人工基准测试的努力,我们使用开发者每天运行的实际代码创建了这个基准测试。
代理自 ES2015 起便成为 JavaScript 的重要组成部分。它们允许拦截对象的基本操作并自定义其行为。代理是 jsdom 和 Comlink RPC 库 等项目的核心部分。最近,我们在提升 V8 中代理的性能方面投入了不少精力。本文将介绍 V8 的总体性能改进模式,并特别说明针对代理的改进。
JavaScript 基准测试的历史是一段不断演进的故事。当 Web 从简单的文档扩展到动态客户端应用程序时,人们创建了新的 JavaScript 基准测试来测量那些对新用途变得重要的工作负载。这种不断的变化使得单个基准测试具有有限的生命周期。当网络浏览器和虚拟机(VM)的实现开始过度优化特定测试用例时,基准测试本身不再是其原始用途的有效代理。最早的 JavaScript 基准测试之一 SunSpider,为推出快速优化编译器提供了早期的动力。然而,随着 VM 工程师发现了 微基准测试的局限性 并找到新的方法来 优化 规避 SunSpider 的 局限性,浏览器社区 宣布退休 SunSpider 作为推荐基准测试。
在过去的一年里,V8团队开发了一种新方法来衡量和理解真实的JavaScript性能。我们利用从中获得的洞察力改变了V8团队加速JavaScript的方法。我们新的真实世界关注点代表了从传统性能关注点的重大转变。我们相信,当我们在2017年继续应用这一方法时,它将显著提高用户和开发人员在Chrome和Node.js中对V8真实世界JavaScript性能的依赖性。