JetStream 3.0: A Major Leap in Browser Performance Measurement

By

Introduction

In a joint announcement with Google and Mozilla, the WebKit team has unveiled JetStream 3.0, a significant update to the cross-browser benchmark suite designed to keep pace with modern web demands. While the collaborative effort is detailed in the shared announcement, here we focus on how the WebKit team tackled the challenges and the engineering improvements made in JavaScriptCore (JSC).

JetStream 3.0: A Major Leap in Browser Performance Measurement
Source: webkit.org

Why a New Benchmark?

Benchmarks remain one of the most effective tools for driving performance improvements in browser engines. However, the web evolves rapidly, and any benchmark risks becoming outdated as new best practices emerge. Moreover, once the most obvious optimizations have been applied to a benchmark, further gains often become increasingly narrow and workload-specific. JetStream 3 represents both a refresh and a fundamental shift in performance measurement—particularly regarding WebAssembly (Wasm) and the scale of modern web applications.

The Evolution of WebAssembly Benchmarking

One of the most substantial changes in JetStream 3 is how it measures Wasm workloads. To understand this change, we must look back at Wasm’s early days. When JetStream 2 was released, WebAssembly was in its infancy. Early adopters were mostly large C/C++ projects that had previously compiled to asm.js. The expectation was that users would tolerate a long, one-time startup cost in exchange for high throughput later—think video games or complex simulations. Consequently, JetStream 2 scored Wasm in two distinct phases: Startup and Runtime.

The Infinity Problem

Over time, browser engines became remarkably efficient at instantiating WebAssembly modules. As startup times shrank, the incentive to chase even micro-optimizations actually increased. Shaving 0.1 ms off a 100 ms workload is negligible, but once startup time was reduced to just 2 ms, that same 0.1 ms improvement suddenly represented a 5 % gain. In WebKit, for instance, the startup path was optimized so aggressively that for some smaller workloads, startup time effectively reached zero seconds. JetStream 2 used Date.now() to time each iteration, which rounds down—so any sub-1 ms time became 0 ms.

This created a unique challenge. The original scoring formula was Score = 5000 / Time. When time hit zero, the score became infinity. The team eventually had to patch JetStream 2.2 by clamping the maximum sub-score to 5,000, preventing an infinite score from overshadowing all other results. While an infinite score sounds like a victory, it actually signaled that browser engines had outgrown the Wasm subtests in JetStream 2. On today’s web, Wasm sits in the critical path for many page loads—used in libraries, image decoders, and UI frameworks. A “zero” startup time in a microbenchmark fails to reflect real-world performance where Wasm is part of a larger process.

How JetStream 3 Addresses These Issues

JetStream 3 introduces a new approach to Wasm benchmarking that reflects the current landscape. Instead of treating startup and runtime as separate phases, the suite now uses more realistic workloads that integrate Wasm instantiation into the overall flow of a web application. This avoids the “infinity problem” by ensuring that startup time is measured in a context where it cannot be reduced to zero—for example, by including data preprocessing or network-like delays that are inherent in real use cases.

In addition, the benchmark now includes larger, more complex Wasm modules that are representative of modern applications, such as those using Emscripten or Windows 95 emulators (as mentioned in the original announcement). This shift encourages engine developers to optimize for the full lifecycle of Wasm execution, not just the initial instantiation.

WebKit’s Engineering Work in JavaScriptCore

The WebKit team made several targeted improvements to JavaScriptCore to prepare for JetStream 3. These include:

These changes not only improve JetStream 3 scores but also benefit real-world applications that rely on Wasm for performance-critical tasks.

Conclusion

JetStream 3.0 marks a necessary evolution in browser benchmarking. By addressing the “infinite score” anomaly and updating Wasm workloads to reflect modern usage, the suite provides a more accurate measure of engine performance. For WebKit, the collaboration with Google and Mozilla has led to deeper insights and concrete improvements in JavaScriptCore. As the web continues to grow, benchmarks like JetStream 3 will remain essential for driving progress—ensuring that browsers are not only fast in isolation but also in the complex, interconnected applications that define today’s online experience.

Tags:

Related Articles

Recommended

Discover More

5 Key Architectural Insights Behind Docker Sandboxes: Why MicroVMs MatterRevive Your Retired Phone: The Ultimate Smart Home Upgrade You Didn't Know You HadZero-Day Supply Chain Attacks: How AI-Driven Defenses Stop Unknown PayloadsUnleashing Smaug: The Hobbit Dragon's Explosive MTG Combo with a D&D ClassicThe Hidden Impact of Data Normalization on Machine Learning Success