← all workloads

serialize

A large module of `n` public functions, compiled to a .slang-module. Stresses IR/AST serialization (writeSerializedModule*) — the write side of the cost whose read side (readSerializedModule*) the `minimal` floor test and module loading exercise. Scaling null: n scales function count; ideal serialization cost is O(n).

bucket: ir_infra  ·  mode: module  ·  flags: (none)

Phase composition vs N (stacked sub-counters)

compileInner split into phase buckets (named leaves + (self) residuals) stacked across the sweep sizes — the top edge is compileInner, so you can see which phase drives the scaling.

serialize — phase composition vs N (v2026.12, median ms) serialize 9.1× over N 375→3000 0.0 213 426 375 750 1500 3000 N serialize — parseTranslationUnit serialize — SemanticChecking serialize — generateIR serialize — frontEndExecute (self) serialize — generateOutput (self) serialize — compileInner (self) phase buckets parseTranslationUnit SemanticChecking generateIR frontEndExecute (self) specializeModule simplifyIR linkIR unrollLoopsInModule legalizeResourceTypes legalizeExistentialTypeLayout performMandatoryEarlyInlining performForceInlining linkAndOptimizeIR (self) emitEntryPointsSourceFromIR generateOutput (self) compileInner (self)

Scaling analysis

floor-subtracted power-law fit (t − floor) = a·Nk; floor = the minimal workload (fixed per-compile cost), k the global exponent, top-2× the local high-end doubling ratio.

N rangefloor (ms)k (work)fit R²t(Nmin)t(Nmax)top-2×
375–3000141.220.997433942.52×

Growth attribution (N=375 → N=3000)

compileInner grows by 351 ms across the sweep; the mutually-exclusive phase buckets below partition that growth exactly (no nested-timer double counting). × lin is the same metric as the top-level panels, per bucket: the end point vs a linear expectation anchored to the bucket's share of the minimal floor and fitted on the low-N half — 1.0 = grew exactly linearly, >1 bends up. The super-linearity lives where × lin (and k) are red.

buckett@N=375t@N=3000Δ msshare× lin∝Nk
generateIR12197+18553%2.20×1.38
SemanticChecking24145+12135%0.97×0.99
generateOutput (self)534+298%1.20×1.17
parseTranslationUnit215+134%1.10×1.03

Near-constant (≤2% of growth each): compileInner (self) (0→3 ms), frontEndExecute (self) (0→0 ms).

Sweep numbers (median ms)

NcompileInnerwriteSerializedModuleAST
375432
750794
15001569
300039419