Skip to content

test(benchmarks): module-resolution family#202

Merged
NathanFlurry merged 1 commit into
mainfrom
stack/test-benchmarks-module-resolution-family-qlurwsqx
Jul 2, 2026
Merged

test(benchmarks): module-resolution family#202
NathanFlurry merged 1 commit into
mainfrom
stack/test-benchmarks-module-resolution-family-qlurwsqx

Conversation

@NathanFlurry

Copy link
Copy Markdown
Member

New 'modules' family measuring the module-load surface that dominates
session-create tax (~1500ms vs 378ms bare-node) and agent require/import
storms:

  • require_100_small / import_100_small_esm: 100 unique tiny modules per
    iteration (staged outside timing so the module cache never short-circuits),
    exports summed and verified. Guest ~40ms vs node ~2.4ms (17-20x) — the
    attribution row for the session tax.
  • import_npm_package: real installed package (zod, 76 transitive module
    files) imported by a fresh process per iteration (same-process query-string
    busting only reloads the entry module, not the graph). Guest 163ms vs node
    39ms.
  • import_fresh_file: moved from fs/module_import_fresh (the 0.3 regression
    row) into this family.
  • native/wasm lanes explicitly unsupported (JS-runtime surface); per-op sample
    cap hook keeps default runs bounded (modules rows: 5 measured + 1 warmup).

New 'modules' family measuring the module-load surface that dominates
session-create tax (~1500ms vs 378ms bare-node) and agent require/import
storms:

- require_100_small / import_100_small_esm: 100 unique tiny modules per
  iteration (staged outside timing so the module cache never short-circuits),
  exports summed and verified. Guest ~40ms vs node ~2.4ms (17-20x) — the
  attribution row for the session tax.
- import_npm_package: real installed package (zod, 76 transitive module
  files) imported by a fresh process per iteration (same-process query-string
  busting only reloads the entry module, not the graph). Guest 163ms vs node
  39ms.
- import_fresh_file: moved from fs/module_import_fresh (the 0.3 regression
  row) into this family.
- native/wasm lanes explicitly unsupported (JS-runtime surface); per-op sample
  cap hook keeps default runs bounded (modules rows: 5 measured + 1 warmup).
@NathanFlurry

Copy link
Copy Markdown
Member Author

Stack for rivet-dev/secure-exec

Get stack: forklift get 202
Push local edits: forklift submit
Merge when ready: forklift merge 202

@railway-app railway-app Bot temporarily deployed to secure-exec / secure-exec-pr-202 July 2, 2026 12:18 Destroyed
@NathanFlurry NathanFlurry merged commit aa48bf6 into main Jul 2, 2026
1 of 3 checks passed
@NathanFlurry NathanFlurry deleted the stack/test-benchmarks-module-resolution-family-qlurwsqx branch July 2, 2026 12:18
@railway-app railway-app Bot temporarily deployed to secure-exec / preview July 2, 2026 12:18 Inactive
@railway-app railway-app Bot temporarily deployed to secure-exec / production July 2, 2026 12:18 Inactive
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant