自 2008 年推出以来,速度一直是除安全性、稳定性和简单性之外的四大核心原则之一,Google 一直致力于使Chrome成为可用的最佳浏览器之一。V8 JavaScript 编译器是这些工作的重要组成部分,因为它采用几乎在每个网站上都能找到的JavaScript,并在 Chrome 中浏览时执行它。事实上,Chrome 中使用的 V8 引擎每天执行超过 78 年的 JavaScript 代码。
不过,根据Chromium博客中的新文章,现在V8引擎的改进已使Google在其浏览器中的性能提高了23%。由于最近推出了新的 Sparkplug 编译器和 M91 Chrome 中的简短内置调用,Google 的浏览器每天可以为用户节省超过 17 年的 CPU 时间。
Sparkplug 是一种新的 JavaScript 编译器,可优化代码以实现最高性能,并且简短的内置调用优化了 Google 在内存中放置生成代码的位置,以避免在调用函数时发生间接跳转。
V8引擎改进
V8 引擎使用多个编译器来执行 JavaScript,三年前 Google 推出了一个由 Ignition 和 Turbofan 组成的新的两层编译器系统。
Ignition 是一个字节码解释器,它以尽可能少的延迟开始执行 JavaScript,而 Turbofan 是一个优化编译器,它使用 JavaScript 执行期间收集的信息生成高性能机器代码。但是,因此,Turbofan 的启动速度比 Ignition 的字节码编译器慢。出于这个原因,谷歌推出了 Sparkplug,它通过生成本地机器代码而不依赖于在执行 JavaScript 代码时收集的信息来在两者之间取得平衡。
另一方面,短内置函数是 V8 引擎用来优化生成代码在内存中的位置的机制。当 V8 从 JavaScript 生成特定于 CPU 的代码时,这些代码放置在内存中,并且会频繁调用内置函数,这些内置函数是用于处理常见例程的小代码片段。
但是,对于某些 CPU,调用离生成代码较远的函数可能会导致 CPU 内部优化失败。为了解决这个问题,Chrome 现在将内置函数复制到与生成代码相同的内存区域,这对 Apple 的新M1 芯片产生了巨大的影响。
由于现在在浏览器中完成的工作比以往任何时候都多,谷歌对 Chrome 所做的底层更改肯定有助于节省用户时间,甚至可能有助于提高他们的生产力。
标签: 谷歌浏览器