跳到主要内容

改进的代码缓存

· 阅读需 5 分钟
Mythri Alle,首席代码缓存官

V8 使用 代码缓存 为频繁使用的脚本缓存生成的代码。从 Chrome 66 开始,我们通过在顶层执行后生成缓存,缓存了更多代码。这使初次加载时的解析和编译时间减少了 20–40%。

V8 发布 v6.6

· 阅读需 8 分钟
V8 团队

每六周,我们根据自己的发布流程创建一个新的 V8 分支。每个版本都基于 V8 的 Git 主分支,并与 Chrome Beta 里程碑同时分支。今天我们很高兴地宣布我们最新的分支,V8 版本 6.6,它将在几周后与 Chrome 66 稳定版一起发布并结束测试阶段。V8 v6.6 包含了各种面向开发者的有趣功能。本文提前介绍了一些亮点,敬请期待正式发布。

后台编译

· 阅读需 5 分钟
[Ross McIlroy](https://twitter.com/rossmcilroy),主线程维护者

简要说明: 从Chrome 66开始,V8在后台线程上编译JavaScript源代码,减少主线程上编译时间5%到20%,适用于典型网站。

背景

从版本41开始,Chrome通过V8的StreamedSourceAPI支持在后台线程解析JavaScript源文件(参考)。这使得V8能够在Chrome从网络下载文件的第一部分时就开始解析JavaScript源代码,同时在Chrome通过网络流式传输文件时继续解析。由于V8在文件下载完成时几乎能够完成JavaScript解析,这提供了显著的加载时间改进。

从JS到DOM再回溯的跟踪

· 阅读需 5 分钟
Ulan Degenbaev、Alexei Filippov、Michael Lippautz 和 Hannes Payer——DOM 小组

在Chrome 66中调试内存泄漏变得更加容易了。Chrome的开发者工具现在可以跟踪和快照C++ DOM对象,并显示从JavaScript可达的所有DOM对象及其引用。这项功能是V8垃圾回收器的新C++跟踪机制的优点之一。

懒惰反序列化

· 阅读需 7 分钟
Jakob Gruber ([@schuay](https://twitter.com/schuay))

简要介绍:懒惰反序列化最近在 V8 v6.4 中默认启用,平均每个浏览器标签页减少 V8 的内存占用超过 500 KB。继续阅读以了解更多信息!

引入 V8 快照

但首先,让我们回顾一下 V8 如何使用堆快照来加速新隔离环境的创建(这大致上相当于 Chrome 中的一个浏览器标签页)。我的同事杨果在他关于自定义启动快照的文章中对此作了很好的介绍:

V8 发布 v6.5

· 阅读需 5 分钟
V8 团队

每六周,我们会根据发布流程创建一个新的 V8 分支。每个版本都会在 Chrome Beta 里程碑之前从 V8 的 Git 主分支创建。今天我们很高兴宣布最新的分支 V8 version 6.5,它将处于 Beta 状态,直到几周后与 Chrome 65 的稳定版协调发布。V8 v6.5 充满了各种面向开发者的功能。本篇文章提供该版本发布前的一些亮点预览。

Chrome欢迎Speedometer 2.0!

· 阅读需 3 分钟
来自Blink和V8团队

自从Speedometer 1.0于2014年首次发布以来,Blink和V8团队一直将其作为衡量流行JavaScript框架实际使用的基准测试,我们在该基准测试中取得了显著的加速成效。我们通过对比真实网站进行独立验证,证实了这些改进确实给用户带来了实际好处,数据显示流行网站的页面加载时间的改善也提高了Speedometer的得分。

V8 发布 v6.4

· 阅读需 4 分钟
V8 团队

每六周,我们根据 发布流程 创建一个 V8 的新分支。每个版本会在 Chrome Beta 的里程碑前从 V8 的 Git 主分支分支。今天我们很高兴地宣布最新的分支,V8 版本 6.4,该版本将在 Beta 状态直至几周后与 Chrome 64 稳定版同步发布。V8 v6.4 提供了各种面向开发者的改进。本文是该版本发布前一些亮点的预览。

‘JavaScript代码覆盖率’

· 阅读需 10 分钟
‘Jakob Gruber ([@schuay](https://twitter.com/schuay))’

代码覆盖率提供了应用程序的某些部分是否已被执行的信息,甚至可以选择提供这些部分被执行的频率信息。它通常用于确定测试套件对特定代码库的覆盖程度。

为什么它有用?

作为JavaScript开发人员,您可能经常会遇到代码覆盖率能够派上用场的场景。例如:

  • 对您的测试套件质量感兴趣吗?在重构一个大型遗留项目?代码覆盖率可以确切地显示代码库中哪些部分被覆盖。
  • 想快速知道代码库的特定部分是否被触及?替代使用console.log进行printf-风格的调试或手动逐步执行代码,代码覆盖率可以即时显示应用程序中哪些部分已被执行。
  • 或者您正在优化性能并希望知道应集中在哪些区域?执行次数可以指出热点函数和循环。