DEV Community

Cover image for Benchmarks you can re-run
VX
VX

Posted on Edited on Originally published at vznjs.github.io

Benchmarks you can re-run

Every number on our benchmark page is one command away. Here is the
time each runner adds on top of the tasks, on one 9,603-task graph:

Runner Cold build overhead Nothing changed Cold build CPU
vx 7.57 s 799 ms 36.64 s
Turborepo 9.63 s 927 ms 1 min 12 s
Nx 3 min 6 s 24.15 s 5 min 34 s
Vite Task 9.01 s 12.07 s 25.32 s

Synthetic monorepo, 1,601 projects, 9,603 tasks, 30 levels · build 300 ms, test and typecheck 150 ms, lint 75 ms, publish 30 ms · linux x64, 4 cores, concurrency 10 · vx 0be036747, Turborepo 2.11.10, Nx 24.0.1, Vite Task 1.4.0 · 2026-10-23

Lower is better. A cold build's tasks alone take 1 min 53 s with an
ideal schedule. With nothing changed the ideal is 0, so all of that time
is the runner.

No tool wins every row: Vite Task uses the least CPU.

Re-run it

$ bun private/vx-bench/compare.ts 3
Enter fullscreen mode Exit fullscreen mode

Every task is a sleep of a fixed length, so the numbers measure the
runner, not a compiler. Each runner runs the graph cold, with nothing
changed, and with outputs restored.

diagram

Rule Why
each tool in its native config Turborepo turbo.json, Nx nx:run-commands targets, Vite Task vite.config.ts
concurrency 10 for all same parallelism
vx as the compiled binary, from a vx lock snapshot what users install and CI runs
CI mode as CI runs them
one runner at a time no daemon idle-contends for CPU
no edit row Nx needs its daemon for one, and CI doesn't run it

Turbo and Nx run as they would in CI (CI=1: Nx's daemon off, and
Turbo uses none for turbo run).

Reading the columns

The first two columns are wall time. The third is the runner's own CPU
time, minus the tasks. A daemon that outlives the run isn't counted, so
Turborepo's and Nx's CPU are lower bounds.

Every row is on Benchmarks.

The method

Every change to vx's warm path ships with a number measured like this:
before and after interleaved, fastest of N, "before" built from its own
git worktree.

If a number here doesn't reproduce on your machine, please file a bug.

More at vznjs.github.io/vx.


Originally published on the vx blog. vx is open-source (MIT) task orchestration with a build cache: vznjs.github.io/vx · GitHub.

Written with AI assistance.

Top comments (0)