You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit d57ec8d
Browse filesBrowse the repository at this point in the historyBrowse files
Apple M4 (10 cores), node v24.13.0. Whole-process wall clock of `vitest run`, median of 3 reps, both versions measured on the same machine in one session. 4.1.10 is the pinned install on vite 8.1.4. 5.0.0-rc.2 is a local build with vitest-dev/vitest#11078, linked as described above; it resolves vite 8.0.11 from the vitest repository. To regenerate: `pnpm bench --label vitest-4.1.10`, then `pnpm bench --label vitest-5.0` with the linked build, then `node scripts/render-results.mjs results/vitest-4.1.10.json results/vitest-5.0.json`.
85
+
Apple M4 (10 cores), node v24.13.0. Whole-process wall clock of `vitest run`, median of 3 reps, both versions measured on the same machine in one session. 4.1.10 is the pinned install on vite 8.1.4. 5.0.0-rc.3 was measured from a local build linked as described above, on vite 8.0.11. To regenerate: `pnpm bench --label vitest-4.1.10`, then `pnpm bench --label vitest-5.0` with the linked build, then `node scripts/render-results.mjs results/vitest-4.1.10.json results/vitest-5.0.json`.
86
86
87
87
### micro-utils
88
88
89
89
The median open source package: 8 modules, 5 test files, no dependencies. Startup overhead is everything here. The jsdom and happy-dom rows show what a DOM environment costs a node-only suite.
@@ -105,7 +105,7 @@ The median open source package: 8 modules, 5 test files, no dependencies. Startu
105
105
106
106
A mid-size library: 127 modules in 3 layers and 40 test files. Each test file imports the modules it tests directly, so the per-file graphs overlap little.
@@ -121,7 +121,7 @@ A mid-size library: 127 modules in 3 layers and 40 test files. Each test file im
121
121
122
122
An API service on express 5, zod, pino, dayjs, and lodash. 16 integration-style test files with real work per test: hundreds of validations and CRUD flows over in-memory repositories.
@@ -136,7 +136,7 @@ An API service on express 5, zod, pino, dayjs, and lodash. 16 integration-style
136
136
137
137
Thin code over 10 real packages that cover the module shapes that matter: CJS monoliths (lodash, semver), many-file ESM graphs (lodash-es, date-fns, rxjs), one big ESM file (zod), and dual packages (yaml, uuid). Node pools load externals once per worker; vm pools evaluate them again in each context.
@@ -151,7 +151,7 @@ Thin code over 10 real packages that cover the module shapes that matter: CJS mo
151
151
152
152
A React SPA tested with Testing Library: 92 ts/tsx modules in 6 features, CSS and CSS modules, hooks, a mocked API layer, and a jest-dom setup file. Runs in jsdom, happy-dom, and real Chromium.
@@ -172,7 +172,7 @@ A React SPA tested with Testing Library: 92 ts/tsx modules in 6 features, CSS an
172
172
173
173
37 single-file components plus composables, tested with @vue/test-utils. SFC compilation through @vitejs/plugin-vue makes this the expensive-transform app.
@@ -188,7 +188,7 @@ A React SPA tested with Testing Library: 92 ts/tsx modules in 6 features, CSS an
188
188
189
189
80 components with per-component CSS. Every one of the 80 test files imports from the root barrel, so each file pays for the whole library plus a DOM environment.
@@ -204,7 +204,7 @@ A React SPA tested with Testing Library: 92 ts/tsx modules in 6 features, CSS an
204
204
205
205
The same barrel problem without DOM or JSX: 817 modules behind nested barrels and 20 test files that use about 3 symbols each. Every file evaluates the full graph.
@@ -219,7 +219,7 @@ The same barrel problem without DOM or JSX: 817 modules behind nested barrels an
219
219
220
220
A large monorepo: about 1280 modules with 12-deep import chains, import cycles, path aliases, dynamic imports, JSON imports, and 150 test files. 15 of them use a jsdom pragma, so mixed environments limit worker reuse.
@@ -235,7 +235,7 @@ A large monorepo: about 1280 modules with 12-deep import chains, import cycles,
235
235
236
236
A long-running DOM suite: 80 jsdom test files through 2 workers, each file holding a 15MB module-level dataset and rendering tables over it. Node pools rebuild the environment and import the external dependencies again for each of a worker's 40 files. vm pool workers pay once, reuse compiled scripts across contexts, and get recycled by the pinned 512MB `vmMemoryLimit` several times per run. This is the app where the vm pools win by a wide margin. Memory retention across files is out of scope here.
@@ -248,7 +248,7 @@ A long-running DOM suite: 80 jsdom test files through 2 workers, each file holdi
248
248
249
249
30 test files that burn real CPU (hashing, sieving, matrix multiplication) on an 8-module graph. The tests dominate, so only scheduling (`maxWorkers`, pool choice) changes anything.
0 commit comments