JetStream 3:面向高性能、计算密集型 Web 应用的现代基准测试

💡 原文英文,约1400词,阅读约需5分钟。
📝

内容提要

Chromium 发布 JetStream 3 基准测试,与苹果、Mozilla 合作开发,聚焦计算密集型 Web 应用。相比 2019 年的 JetStream 2,新增 12 个 WebAssembly 工作负载(占 15-20%),涵盖 Rust、Kotlin 等工具链,并更新 JavaScript 测试,如 Babylon.js、TypeScript 编译等,旨在更准确反映真实性能。

🔎

延伸解读

基准测试的“过拟合”风险

文章提到古德哈特定律:当一项指标成为目标,它就不再是好的指标。JetStream 2 发布六年,引擎可能已针对其特定模式优化,导致分数与真实性能脱节。JetStream 3 更新工作负载,正是为了重新校准基准,使其更贴近实际计算密集型应用,避免引擎过度拟合旧测试。

WebAssembly 权重显著提升

JetStream 3 中 WebAssembly 工作负载占比从 7% 升至 15-20%,并新增 12 个测试,覆盖 Rust、Kotlin、Dart、Java、C# 等工具链,以及 SIMD、WasmGC 等现代特性。这反映了 Wasm 在 Web 上的普及,也促使引擎优化更全面的 Wasm 场景,而非仅限 MVP。

基准测试的工程权衡

JetStream 设计为可在引擎 shell(如 d8)中运行,相比完整浏览器,构建更快、噪声更少,便于工程师迭代。但 shell 环境与真实浏览器有差距,可能无法完全反映实际性能。这种权衡在基准测试中常见,需结合其他基准(如 Speedometer)综合评估。

Q&A

JetStream 3 是什么?

JetStream 3 是由 Chromium 项目与苹果、Mozilla 等合作开发的现代基准测试,用于评估浏览器在计算密集型 Web 应用上的性能,重点关注 JavaScript 和 WebAssembly 的执行效率。

JetStream 3 与 JetStream 2 相比有哪些主要更新?

JetStream 3 相比 JetStream 2 新增了 12 个 WebAssembly 工作负载,使 Wasm 在整体测试中的占比从 7% 提升到 15-20%,并扩展了工具链支持(如 Rust、Kotlin、Dart 等)。同时更新了 JavaScript 测试,新增了 Babylon.js、TypeScript 编译等更贴近真实应用的工作负载,并改进了评分方式以更准确反映运行时性能。

为什么需要 JetStream 3?

JetStream 2 发布于 2019 年,随着 Web 技术发展,其测试内容已不能准确反映真实性能。根据古德哈特定律,当基准成为目标时,引擎会针对其优化,导致分数与真实性能脱节。此外,WebAssembly 已从 MVP 演进到支持 SIMD、WasmGC 等特性,需要新的基准来覆盖这些变化。

JetStream 3 与 Speedometer 3 有何不同?

Speedometer 3 主要测量 UI 渲染和 DOM 操作,而 JetStream 3 专注于计算密集型任务,如游戏、物理模拟、加密和复杂算法。此外,JetStream 3 设计为可在引擎 shell(如 d8)中运行,便于开发者快速迭代和测试,而 Speedometer 需要完整浏览器环境。

JetStream 3 如何选择工作负载?

JetStream 3 选择工作负载时优先考虑真实端到端用例,避免微基准导致的过度优化。同时强调多样性,覆盖不同框架、库、语言和工具链。还设定了实际约束:总运行时间需在几分钟内,内存占用不能过高,网络传输量小,结果需确定性和可重复。

JetStream 3 新增了哪些 WebAssembly 工作负载?

JetStream 3 新增了 12 个 WebAssembly 工作负载,包括 argon2(密码哈希)、Transformers.js(客户端机器学习)、基于 Dart 和 Kotlin 的跨平台 UI(使用 WasmGC)、SQLite3(数据库)、.NET 运行时等。这些工作负载覆盖了多种工具链,如 J2CL、Dart2wasm、Kotlin/Wasm、Rust 和 .NET。

JetStream 3 在 JavaScript 测试方面有哪些更新?

JetStream 3 新增了多个 JavaScript 工作负载,如 Babylon.js(3D 引擎)、TypeScript 编译、React 服务端渲染(web-ssr)、MobX 启动性能等,并更新了 WTB 和 Sunspider。同时增加了启动类工作负载,模拟页面加载时的解析和框架初始化。

JetStream 3 的评分方式有何改进?

JetStream 3 改进了评分方式,确保运行时性能(而非仅实例化)被准确反映在总分中。这避免了以往只关注加载或初始化速度而忽略实际执行效率的问题。

🏷️

标签

➡️

继续阅读