← all workloads

interface_depth

A linear interface inheritance chain n deep (`interface I_k : I_{k-1}`) with one struct conforming to the most-derived interface (`I_n`) and one generic function constrained to the ROOT (`I0`), so satisfying the constraint walks the inheritance chain through all n levels. Scales the interface-hierarchy depth axis of calcInheritanceInfo — a different graph than generic_nesting's type-argument nesting. Scaling null: each level adds O(1) declarations, so ideal inheritance- info cost is O(n) (or O(n^2) for an all-pairs facet walk); measured ~N^3.4 when added (2026-07).

bucket: sema  ·  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.

interface_depth — phase composition vs N (v2026.12, median ms) interface_depth 63.1× over N 16→128 0.0 175 349 16 32 64 128 N interface_depth — parseTranslationUnit interface_depth — SemanticChecking interface_depth — generateIR interface_depth — frontEndExecute (self) interface_depth — generateOutput (self) interface_depth — 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×
16–128143.951.00053239.59×

Growth attribution (N=16 → N=128)

compileInner grows by 318 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=16t@N=128Δ msshare× lin∝Nk
SemanticChecking2312+31097%

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

Sweep numbers (median ms)

NcompileInnerSemanticCheckingfrontEndExecute
16524
32857
64342831
128323312320