JetStream 3 Benchmark Suite: A Deep Dive into WebAssembly Performance and Evolution
JetStream 3.0 represents a major leap forward in cross-browser benchmarking, developed collaboratively by the WebKit team (Apple), Google, and Mozilla. This new suite addresses the changing landscape of web performance, particularly around WebAssembly (Wasm) and the scale of modern web applications. Below, we explore the most pressing questions about JetStream 3, its origins, and the innovations that set it apart from its predecessor.
What is JetStream 3 and why was it developed?
JetStream 3 is a cross-browser benchmark suite designed to measure the performance of modern web applications. It was built as a collaborative effort between the WebKit (Apple), Google, and Mozilla teams to replace the aging JetStream 2. The primary motivation for JetStream 3 was the rapid evolution of web technologies, especially WebAssembly, which had outgrown the previous benchmarks. JetStream 2 focused on large C/C++ projects that compiled to asm.js, but the web now uses Wasm in libraries, image decoders, and UI frameworks—making startup time critical. To stay relevant, JetStream 3 introduces a fundamental shift in how performance is measured, emphasizing real-world workloads and eliminating pathological scoring issues like the infamous “infinity problem.”

How did WebAssembly benchmarking evolve from JetStream 2 to 3?
When JetStream 2 was released, WebAssembly was still in its infancy, primarily used for large C/C++ projects that previously targeted asm.js. The benchmark scored Wasm in two distinct phases: Startup and Runtime. However, as browser engines became incredibly efficient at instantiating Wasm modules, startup times shrank dramatically—in some cases to zero milliseconds. This led to a scoring anomaly where a zero time division caused an infinite score (the “infinity problem”). JetStream 3 overhauls this approach by treating Wasm as an integrated part of the page load, measuring end-to-end performance rather than separating startup and runtime. It includes workloads that reflect how Wasm is actually used today, such as in instant-loading libraries and real-time rendering, ensuring the benchmark stays relevant for years.
What was the “infinity problem” in JetStream 2 and how did it occur?
The “infinity problem” arose from JetStream 2's scoring formula for WebAssembly subtests: Score = 5000 / Time. As browser engines optimized startup paths, the time to instantiate certain Wasm modules dropped below 1 millisecond. JetStream 2 used Date.now() for timing, which rounds down to the nearest millisecond, so a sub-1 ms instantiation was recorded as 0 ms. Dividing 5000 by 0 yields infinity, making that single subtest dominate all other scores. The WebKit team had to patch JetStream 2.2 by clamping the score to a maximum of 5000 to prevent this. While a zero-instantiation time sounds like a triumph, it revealed that the benchmark was no longer measuring realistic performance—it was a sign that the suite had been “outgrown” by browser engine optimizations. JetStream 3 addresses this by using more precise timing and integrating Wasm into broader page-load scenarios.
Why did browser engines outgrow JetStream 2’s WebAssembly subtests?
Browser engines, led by WebKit’s JavaScriptCore, aggressively optimized WebAssembly instantiation paths. For example, WebKit reduced startup time for smaller workloads to effectively zero seconds by shaving off micro-optimizations—like a 0.1 ms improvement that became a 5% gain when the baseline was 2 ms. These optimizations were driven by the need to make Wasm a first-class citizen in page loads. On the modern web, Wasm is used in critical path scenarios such as image decoding, UI rendering, and library initialization. JetStream 2’s subtests, which assumed users would tolerate a long one-time startup for high throughput, no longer reflected reality. The benchmark’s separation of startup and runtime phases became irrelevant because engines had already solved the startup bottleneck. JetStream 3 therefore consolidates these phases to test how Wasm performs in an integrated, real-time environment.
How does JetStream 3 measure WebAssembly performance differently?
JetStream 3 fundamentally shifts from a two-phase (startup+runtime) scoring model to a unified end-to-end measurement. Instead of isolating the instantiation step, the new suite embeds Wasm workloads into larger page-load scenarios that mimic modern web applications. This includes tasks like decoding images, running interactive UI components, and processing data streams—all within a single benchmark run. The scoring formula now uses high-resolution timers (consistent across browsers) to avoid the rounding issue that caused the infinity problem. Additionally, JetStream 3 includes a wider variety of Wasm module sizes and complexities, ensuring that both tiny utility libraries and large application-level modules are represented. This change means the benchmark rewards engines that optimize the entire pipeline—from fetching and parsing Wasm to executing it in context—rather than just the instantiation step alone.
What role did Google and Mozilla play in developing JetStream 3?
JetStream 3 was a collaborative effort among three major browser vendors: Apple (WebKit), Google (Chrome/V8), and Mozilla (Firefox/SpiderMonkey). The shared announcement from these partners highlights how the suite aligns benchmarks across implementations, ensuring that no single engine has an unfair advantage. Each team contributed expertise: Google helped design workloads that reflect real-world Wasm usage in consumer apps, Mozilla provided insights into emerging web standards like SIMD and threading, and WebKit led the engineering of the infrastructure to handle the new scoring and timing. This cooperation ensures JetStream 3 is a true cross-browser benchmark, not tailored to any specific engine. The result is a suite that browser developers trust to guide performance improvements without over-optimizing for synthetic tests.
How does JetStream 3 address the scale of modern web applications?
Modern web applications are larger and more complex than when JetStream 2 was released. They often combine JavaScript, WebAssembly, and heavy rendering in a single page. JetStream 3 includes benchmarks that test large-scale interactions, such as multi-threaded Wasm workers, real-time 3D graphics, and data-heavy analytics dashboards. The suite also measures responsiveness under load—e.g., how a browser handles a Wasm module that decodes multiple images while the main thread remains interactive. This scalability testing ensures that browser engines can sustain performance as web apps push the boundaries. By incorporating workloads that blend Wasm with other technologies (like Canvas and Web Workers), JetStream 3 better predicts day-to-day browsing experience. The benchmark’s scoring model also prevents small, highly optimized subtasks from skewing overall results, giving a balanced view of engine capability at scale.
Related Articles
- Internet Architect Jeff Atwood and Veteran Alexander Vindman to Open Dialogue on American Dream at Historic Cooper Union
- 8 Essential Insights into Durable Workflows in the Microsoft Agent Framework
- Beelink EX Mate Pro: A Feature-Packed USB4 v2 Dock with Quad M.2 Storage Expandability
- 10 Reasons Why 'The Craft' Remains the Ultimate Witch Movie After 30 Years
- Stack Overflow Appoints Prashanth Chandrasekar as New CEO to Lead Hyper-Growth Phase
- Breaking: HashiCorp Unveils Real-Time Infrastructure Graph for HCP Terraform – Public Preview Available Now
- How to Use JetStream 3 for Modern Web Performance Testing
- Volla Phone Plinius: A Rugged Mid-Range Smartphone with Privacy-First OS Options