Skip to content

Worker measurements

Recorded September 20, 2026 — P7

These results describe the original snapshot, not the current source or release. Local artifact paths are provenance records, not public downloads.

Archive index · Current support

Worker protocol v1 executed plan v1 with ABI v6. The comparison included an optional AsyncTask prototype that lacked the production executor lifecycle.

Recorded validation

Apple M1 Pro/macOS arm64, Node 24.19.0, pnpm 12.4.2 and Rust 1.96.0. Release checks passed with 1,877 TS, 11 Rust and three registry tests. They covered four modes/eight dtypes, snapshots after mutation/detachment, plan mutation, subviews, eight extras, concurrency, intrinsic metadata, queues/budgets, cancel/dispose races, late responses and independent outputs. Real Worker fixtures covered exits, hangs, computation errors, malformed results, startup timeouts/protocol mismatch and missing assets. Delayed termination tests verified reservations remained until recovery, and failed replacements rejected pending tasks without endless retries. Empty-queue/maxQueue-zero replacement passed.

Tarball and missing-native Worker fallback checks passed. The extension rehearsal passed. The independent owned-Vec AsyncTask prototype passed clippy and snapshot mutation/detachment checks. Chromium/WebKit passed 28 tests; Firefox's 14 failed at startup, before page assertions. Other native/minimum-Node evidence remained open.

Node comparison

The historical bench:p7 run included the optional prototype and recorded 108 timings, ten responsiveness groups, and 80 memory observations, with seven samples after two warmups. It covered three/64 nodes and 1K/256K/1M elements, four modes, copy/structuredClone, startup, synchronous submission and total latency. Node and browser measurements ran separately. Current commands are bench:workers for production models and bench:async-task to reproduce the full comparison.

For 1,048,576 f32 elements, end-to-end medians in ms:

BackendNodesSyncWorkerAsyncTask prototypeWorker submission
native scalar31.0421.5080.9470.416
native NEON30.1360.3780.2250.175
Wasm scalar34.0894.3420.184
Wasm SIMD12830.3970.6910.172
native scalar64333.116335.058317.6880.307
native NEON6417.96018.63122.9860.233
Wasm scalar64223.778224.8530.239
Wasm SIMD1286418.55019.0140.194

The four cold Worker startups were 22.0–24.7 ms, single observations rather than stable distributions. AsyncTask had lower overhead for short native cases but not a universal advantage, and omitted production queue/budget/lifecycle costs. Worker was chosen to reuse the complete engine, Wasm fallback and shared browser lifecycle/recovery protocol, not because it was always the fastest binding.

For 64 nodes/1M elements, maximum 2 ms timer-gap medians were:

BackendSync gap msWorker gap msMedian timer ticks during Worker execution
native scalar332.7902.386148
native NEON18.2772.3209
Wasm scalar223.7672.351100
Wasm SIMD12819.5612.3089

Synchronous execution had zero timer ticks during computation. AsyncTask native scalar/NEON gaps were 2.371/2.323 ms. Main-thread responsiveness improved while snapshot/submission and total completion costs remained.

Browser and memory observations

Chromium/WebKit ran separately with three samples per mode, 1M f32 elements, 64 add nodes and scalar Wasm. Outputs were checked as 65. Medians:

BrowserSync duration msWorker duration msFrames during sync/WorkerMax sync/Worker frame gap ms
Chromium226.6232.50 / 13216.8 / 16.8
WebKit2372370 / 14238 / 27

Frame timestamps depend on refresh rate, scheduling and load; three samples do not establish cross-device statistics. Raw data was saved to artifacts/p7/browser-responsiveness.json; functional browser evidence was separate.

Each mode completed 20 single-input 1M tasks with reservedBytes returning to zero. The reservation high-water mark was 16,781,312 bytes, matching four times input bytes plus 4096. Whole-process RSS was about 341.9–345.9 MiB in native phases and 397.3–400.6 MiB in Wasm phases. It included all engines, Workers, AsyncTask and prior allocations awaiting GC, not a per-task or per-Worker measure.

The prototype was unpublished and absent from dist/package files. Logs, native prototype and browser evidence lived under artifacts/p7/; the complete checkpoint was artifacts/baseline/p7-2026-09-20/. Overall status remained failed due to Firefox.

Released under the MIT License.