TL;DR: Google is now shipping Chrome 91, which includes a major upgrade to the browser’s JavaScript processing. According to Google, the V8 engine used to run about 78 years’ worth of JavaScript every day, but a 23% speedup has reduced that figure by 17 years.
These days, JavaScript is an integral part of website design, but it can be a bit of a bottleneck for browsers. Chrome’s V8 engine was one of its main advantages when it was released in 2008, and to this day it remains a major selling point of Chromium browsers like Chrome, Edge, Vivaldi, and Opera.
Three years ago, Google implemented two new compilers called Ignition and Turbofan to the V8 engine in a two-tiered fashion. Ignition is a speedy bytecode interpreter that gets started quickly. Turbofan is a machine code writer that optimizes the code it outputs with information gathered during the JavaScript’s execution, resulting in a slower start but faster code.
In Chrome 91, Google’s slotted a third compiler in the middle called Sparkplug. Like Turbofan, it generates machine code, but it doesn’t optimize its code based on new information so its output isn’t quite as good. But because it doesn’t have to wait around for that information, it can get started just after Ignition does and build up speed almost as quickly. It eases the pipeline’s transition from Ignition to Turbofan.
In Google’s testing, Sparkplug improved the V8 engine’s compute performance by 5 to 15%, depending on the hardware, website, and operating system.
The new V8 also includes a second optimization; the removal of embedded builtins, which Google recently realized were causing performance issues. In that sense, it’s more of a bug fix. It isn’t Google’s final solution to the problem because it uses too much memory (as all Chrome versions are destined to do, apparently) but it’s enough of an improvement to merit inclusion.
Put briefly, a builtin is a prewritten snippet of code that handles a common process, and they’re pulled from memory by the CPU as the code runs. The problem with them is that in some CPU architectures, if the builtin isn’t stored in the same memory space as the engine’s code, it can take the CPU quite a while to find it. Apple’s M1 chip is particularly susceptible to this problem.
V8’s new solution is to copy the library of builtins from wherever it happens to be to paste it next to the compiled code it’s creating. This duplication is cause for the increased memory usage, but it enables the CPU to consistently make correct branch predictions when it searches for the right builtin, thus allowing the CPU to use it for out-of-order execution.
Google found that the duplication fix could offer a fairly variable performance improvement of 3 to 15%. YouTube and Apple’s M1 benefited from it the most.
You’re probably using Chrome 91 right now (if not, you can download it here). Have you noticed the extra speed?
Image credit: Pawel Czerwinski