perf(opstack): fused evaluator -- 1.05s to 0.56s, byte-identical, and the ~70% early-out is back
WORK-NEXT item 2. The authored operator graph is lowered at chunk-cache build time into a fused scalar evaluator for canonical TunnelNetwork/Underwater stacks. Operators are untouched; this is a lowering, not a de-composition. Custom recipes, composer/lateral stacks and other archetypes stay on the interpreted block path, selected by a build-time EVoxelOpFusedEvaluator marker with `-voxel.UseFusedEvaluator=0` to A/B it. ⭐ MY OWN A/B, same build, 3 runs each: fused 0.545 / 0.563 / 0.561 s mean 0.556 interpreted 1.066 / 1.036 / 1.033 s mean 1.045 -46.8%, 1.88x geometry SHA-256 b3e5f4c3..9b377 IDENTICAL across fused, interpreted, and081cc5e. ⚠️ Codex reported this as 5.88% (2.121 vs 2.253 s). Its figures come from its staged harness with diagnostics enabled, which inflates both sides and compresses the ratio. Measured clean it is 1.88x. This is the fourth time a profiled number has misled us -- the instrument is the instrument, not the thing. THE MECHANISM IS RESTORED, which is the part that matters The audit's finding was that the old path short-circuited the cave detail suite per sample when bNearCaveSurface was false -- historically ~70% of deep-solid samples -- and that we had traded that for per-block pruning. fused export skipped detail on 1,130,230 / 2,490,664 samples = 45.38% capability walk skipped 69.26% 69.26% matches the historical ~70% almost exactly. The early-out is genuinely back. Capability exact: player-fit 20,830, walk-reachable 10,909, Connected. WHERE THIS LEAVES THE 8x pre-op-stack34f06df0.130 s now 0.556 s 4.3x, down from ~8x So roughly half the regression is recovered, and the remaining 4.3x is NOT operator interpretation -- that hypothesis is now tested and spent. Codex's own read: the rest sits in "common structural/passage work and meshing". Three of us predicted the interpretation overhead was the whole story; it was about half. Build 40 actions, 0 errors, loaded-module verified. Six plugin source files. Cumulative on this region: 342.2 s -> 0.556 s. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012aheo2crrZmHuYtPpdY2Cb
This commit is contained in:
1 parent
0388c7dede
commit
35de59bac5
6 files changed
+202
-23
No files matched your search
@@ -9539,6 +9539,13 @@ namespace VoxelDensityOps
|
||||
// disturbances. Keeping these pre-disturbance graph scans here duplicated both the
|
||||
// support and air queries for every voxel; the feature remains in that shared post.
|
||||
OutStack.Add(MakeUnique<FXYEdgeSealOp>(P.BaseDensity));
|
||||
|
||||
// Lower only the canonical native graph. The old scalar TunnelNetwork evaluator is
|
||||
// the fused form of exactly these authored stages: it keeps density/SDF/room state in
|
||||
// locals and gates the complete 4b-4h detail suite per sample. Marking the plan after
|
||||
// the final op is important: recipes and composer stacks keep the interpreted/block
|
||||
// fallback, even when they happen to contain a similar-looking subset of operators.
|
||||
OutStack.SetFusedEvaluator(EVoxelOpFusedEvaluator::TunnelNetwork);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user