Turbopack基准测试(翻译)

359 阅读3分钟

运行Turbopack的基准测试套件最简单的方法是使用命令 cargo bench -p next-dev。这将在各种场景下对Turbopack的Next.js开发服务器进行基准测试,这是我们用来跟踪Turbopack性能随时间变化的工具。

cargo bench -p next-dev 通过环境变量接受不同的选项,要改变测试模块的数量,设置 TURBOPACK_BENCH_COUNTS。例如,要测试一个包含5000个模块的应用程序,而不是默认的1000个模块,运行

TURBOPACK_BENCH_COUNTS=5000 cargo bench -p next-dev

对Turbopack与其他打包工具进行基准测试

我们共享的基准数字 the Turbopack website 通过运行turopack的基准套件来对比turopack和其他打包工具。 它们在发布之前在受控环境中运行。 我们使用 bench_startupbench_hmr_to_eval 当前的基准(见下文)。

要对其他打包工具运行Turbopack基准测试,请运行:

TURBOPACK_BENCH_BUNDLERS=all cargo bench -p next-dev

并可选择将基准测试运行筛选到特定的打包工具,例如:

TURBOPACK_BENCH_BUNDLERS=all cargo bench -p next-dev -- "hmr_to_eval/(Turbopack CSR|Vite)"

注意:Turbopack基准套件混合了服务器端渲染和仅客户端渲染的示例——这些反映在基准名称中的“CSR”或“SSR”中。Turbopack两者都支持,而其他一些打包工具只支持客户端渲染的示例。将CSR结果与SSR进行比较时要考虑到这一点。

提示:这些基准测试需要很长时间才能完成,因为它们试图为每个场景捕获至少10个样本。在基准运行时,有一个TURBOPACK_BENCH_PROGRESS=1的env var来显示值。

基准套件的场景

基准测试套件在各种场景下运行Turbopack和其他打包工具。测试使用了一个真正的无头浏览器,执行了web开发中各种常见的场景,并等待结果在页面中反映出来。

bench_startup: 从启动(没有缓存)到应用在浏览器中渲染的时间(它不需要交互/ hydration)。

bench_hydration: 从启动(没有缓存)到应用在浏览器中交互的时间(它需要进行hydration)。CSR没有捕获此指标,因为第一次渲染是交互式的。

bench_hmr_to_eval: 从修改文件到新代码在浏览器中执行的时间。对代码进行评估并不意味着用户可以看到更改。例如,当一个React组件发生变化时,它需要在浏览器中重新渲染。这主要衡量打包工具本身计算更新并将其发送给客户端的时间。

bench_hmr_to_commit: 从修改文件到在浏览器中反映出修改所花费的时间。我们在React组件中使用useEffect钩子来测量更新后的React组件提交到DOM所花费的时间。这是对用户感知到的端到端性能的一个很好的度量。

bench_startup_cache: 从启动持久缓存到应用在浏览器中渲染的时间(不需要交互/ hydration)。Turbopack还没有包含持久缓存。(此基准测试默认是禁用的,可以通过TURBOPACK_BENCH_CACHED=1启用)

bench_hydration: 从启动持久缓存到应用在浏览器中交互的时间(它需要进行hydration)。CSR没有捕获此指标,因为第一次渲染是交互式的。Turbopack还没有包含持久缓存。(此基准测试默认是禁用的,可以通过TURBOPACK_BENCH_CACHED=1启用)

引用

turbopack/next-dev/benches