Skip to content

Pipeline measurements

Recorded September 19, 2026 — P6

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

Plan format v1 and ABI v6 covered eight numeric dtypes and 68 pipeline signatures. The package exposed 97 operations and 404 signatures.

Validation

Apple M1 Pro, macOS arm64/Darwin 27, Node 24.19.0, pnpm 12.4.2 and Rust 1.96.0. Release checks passed with 1,823 TS, 11 Rust and three registry tests. Four modes covered eight dtypes, lane boundaries, 64 nodes/eight extras, independent BigInt products, FMA counterexamples, IEEE special values, serialization, LRU eviction, cross-engine ownership and disposal. Direct ABI checks rejected malformed later nodes without partial writes.

Wasm resident instrumentation ran 100 calls: one fused call each, two bounded instruction/pointer allocations each, all reclaimed, no whole-array intermediate and no memory growth after warmup. The extension rehearsal passed. AVX2 cross- compilation passed but was not execution evidence. Chromium/WebKit passed 20 tests; Firefox's ten failed at startup. Other native/minimum-Node evidence remained open.

Recorded performance

The old bench:p6 (now bench:pipelines) recorded 952 cases, seven samples, five warmups, median/MAD, iterations, environment and asset hashes. f32/f64/i32 spanned 0/1/8/128/1K/16K/256K/1M elements with JS, separate/fused array/resident, full lifecycle and transfer/allocation cases. f32 also used generic extra-vector nodes.

For 1,048,576 elements and constant mul(3) → add(7) → clamp(0,19), medians in ms:

dtype / modeSeparate arraysFused arraysSeparate residentFused resident
f32 / native scalar4.9340.7634.8650.759
f32 / native NEON1.3990.0911.1450.092
f32 / Wasm scalar9.6694.1148.9853.841
f32 / Wasm SIMD1281.8470.3521.0170.137
f64 / native scalar15.1731.52015.2531.496
f64 / native NEON (fallback)15.2061.49915.1441.519
f64 / Wasm scalar21.3994.35919.7853.894
f64 / Wasm SIMD128 (fallback)21.7394.50120.0013.876
i32 / native scalar55.4970.09055.2500.089
i32 / native NEON (fallback)55.6430.08755.2710.090
i32 / Wasm scalar99.7110.81798.8860.583
i32 / Wasm SIMD128 (fallback)100.1010.38899.2390.126

Fair JS medians were f32 1.580 ms, f64 1.003 ms and i32 1.379 ms. JS preserved each f32 rounding and used Math.imul/32-bit wrap for integers. f64 did not beat JS in this case. Specialized integer loops used width-specific wrapping arithmetic versus the generic separate kernel's i128 logic; the entire gain cannot be attributed to fewer traversals. Scalar capability does not prohibit compiler auto-vectorization.

Generic extra-vector f32 resident plans at 1M took native scalar 14.552 ms, NEON 1.663 ms, Wasm scalar 17.215 ms and SIMD128 1.734 ms. They could be slower than separate kernels; specialized-chain gains did not generalize. The initial generic-only report was artifacts/p6/benchmark-generic.json.

At one f32 element, native NEON separate/fused array calls were 6.817/2.231 μs, and resident calls 1.398/0.450 μs. Wasm SIMD128 resident calls were 0.659/1.223 μs; at 128 elements 0.573/0.912 μs; at 1,024 elements 1.352/0.863 μs. The first observed resident benefit was 128 for Wasm scalar and 1,024 for SIMD128, not exact crossover thresholds. At 1M, SIMD128 upload took 85.5 μs, download with allocation 146.5 μs, arena allocation/disposal 38.5 μs, resident fusion 137.3 μs, ordinary reused output 351.6 μs and full resident lifecycle 431.6 μs. Native NEON resident fusion was about 92 μs versus about 970 μs for its full lifecycle.

Compilation cache-hit medians were 2.41–4.08 μs and misses 2.54–3.70 μs; normalization/noise could dominate, so reuse compiled objects in hot paths. No fixed performance gate was established.

AssetP5 bytesP6 bytesIncrease
darwin-arm64 native437,184453,90416,720
scalar Wasm129,335141,70912,374
SIMD Wasm132,611147,76415,153

Logs/benchmarks were in artifacts/p6/; source/hash/asset/trace evidence in artifacts/baseline/p6-2026-09-19/. This checkpoint collected the executed checks, not a new run of every earlier benchmark. Overall status remained failed due to Firefox.

Released under the MIT License.