Measured, archived, reproducible

Benchmarks

This page summarizes recorded repository evidence. The raw reports remain the source of truth because a clean headline without its machine, runtime, warmup, workload, allocations, and caveats is just marketing with decimals.

Report families13Checked-in archives through August 27
Strategic backendSDL3 GPUCompared directly with WindowsDX
Latest visual diff0 pxTwo 1600 x 900 Aspect scenarios
Honest frame gateREDLatest SDL3 16.6667 ms target remains red
01 / Current renderer evidence

SDL3 GPU versus WindowsDX

The same retained Prism command list rendered a 256 x 144 scene with Gaussian blur, emboss, and hue/saturation. Each backend warmed for 12 frames and measured 96 submitted and presented frames on the same machine.

WindowsDX CPU frame6.9028 ms96 measured frames
SDL_GPU CPU frame6.8673 ms0.9949x WindowsDX
SDL_GPU allocation+7.1%229,163 B/frame
Fallbacks0Both backends
Presented retained workload

Backend comparison

Lower is better for time, allocation, and resource use. Counters explain the work; they do not magically make different backend pipelines identical.

MetricWindowsDXSDL_GPUSDL_GPU / WindowsDX
CPU frame time6.9028 ms6.8673 ms0.9949x
Managed allocation214,037 B/frame229,163 B/frame1.0707x
Peak Prism GPU resources2,359,056 B3,047,144 B1.2917x
Last retained-frame Prism passes122.0000x
Last Prism CPU submit126.2 us284.2 us2.2520x
Active transient surfaces after frame00Equal
AssessmentNo end-to-end CPU regression in this run

The 0.9949x CPU-frame ratio is below the plan's 1.25x investigation threshold. SDL_GPU still used one extra presentation pass, 688,088 more peak Prism-resource bytes, and 7.1% more managed allocation. Those costs stay recorded instead of disappearing behind the headline.

02 / Real application evidence

Frame budget and Aspect migration

The August Aspect comparison used the real SDL3 Presentation tour, eight cycles, 45 frames per chapter, and a 16.6667 ms target. The target was RED before and after the migration, so the valid claim is comparative, not a fake pass.

Aspect warm p990.0726 ms0.44% of frame target
Aspect maximum0.1766 msFinal SDL3 run
Allocation/frame-0.7%643,430 B to 638,750 B
Visual changes0 pxTwo 1600 x 900 captures
Overall targetREDBefore and after migration
Same SDL3 Presentation workload

Aspect migration comparison

The higher processed count proves generated markup moved onto the canonical Aspect engine. Absolute scheduled Aspect cost remains visible beside that architectural change.

MetricBaselineFinal
Warm scheduled Aspect mean0.000381 ms0.001877 ms
Warm scheduled Aspect p990.0005 ms0.0726 ms
Scheduled Aspect maximum0.0889 ms0.1766 ms
Processed Aspect elements56172
Mean allocation per frame643,430 B638,750 B
Visual conformance

Application-owned captures

Both images were captured through Window.SaveScreenshot.

ScenarioPixelsChangedResult
Aspect Studio1,440,0000GREEN
Build-Time Markup1,440,0000GREEN
Earlier WindowsDX gate

July frame-budget repair

This is a different backend and run. It must not be substituted for the later SDL3 result.

StateGlobal maximumOver budget
RED baseline52.880 ms113 frames
Final WindowsDX run14.763 ms0 frames
03 / Build-time and editor paths

Language core and Visual Studio

The language baseline measures parsing, local edits, semantic binding, and warm queries. The Visual Studio archive uses a hidden Community Experimental Instance and records cold activation, editor latency, soak memory, and resilience.

21,123-character real document

AspectChapterView.crn

Forty measured iterations after eight warmups, Release, .NET 8.

Operationp95MaxAllocated
Parse cold1.386 ms5.505 ms285,384 B
Parse warm1.447 ms8.017 ms279,296 B
Incremental edit1.534 ms1.925 ms369,984 B
Semantic bind14.923 ms15.999 ms2,479,080 B
Warm query0.062 ms2.076 ms464 B
Visual Studio Community 18.0

Cold and full-solution observations

Cold gates apply where a budget is shown. Warm editor presentation rows are recorded observations, not relabeled server-only passes.

WorkspaceMetricValueBudgetResult
FixtureProvider activation CPU15.625 ms100 msGREEN
FixtureServer ready cold833.196 ms2,000 msGREEN
FixtureFirst completion cold1,357.454 ms2,500 msGREEN
Cerneala.slnxServer ready cold964.291 ms2,000 msGREEN
Cerneala.slnxFirst completion cold1,922.658 ms2,500 msGREEN
Cerneala.slnxEditor completion p95228.241 msObserved onlyRECORDED
Visual Studio result30 in-process checks and 4 resilience checks GREEN

The soak covered 100 document open/close cycles and 1,000 editor changes. The resilience matrix covered server restart, solution reload, extension disable, unavailable server, and process cleanup. Raw JSON is stored beside the report.

04 / Retained runtime

RenderSurface2D, queues, Relay, and cache reuse

These reports cover different layers and different dates. The numbers stay separated by workload. The shared contract is that idle and reusable work should not quietly become tree scans, command storms, or allocation churn.

RenderSurface2D drawing API

Accepted August 24 baseline

BenchmarkDotNet ShortRun. Relative command-count and allocation invariants are the primary gates for the shortest manually invoked methods.

ScenarioMeanManaged allocationEvidence
1,000 individual point commands544.217 us0 B observedBaseline
Immutable 1,000-point batch1.767 us0 B observed0.003x command time
Build 1,024-point polygon56.984 us234,130 BBaseline
Record reusable path114.1 ns0 BAbout 0.002x rebuild time
Rebuild text layout41.594 us39,009 BBaseline
Reuse immutable text layoutBelow measurement floor0 BZero-cost reuse result
Queue Engine idle5.216 ns10,000-node tree, 0 B after warmup
UiRelay drain 1,02456.575 usInitial archive, 120 B/frame
WPF drain comparison97.78x9,361.66 us versus 95.74 us
Prism common instances-80.9%CPU cache-on delta, 0 B/frame

These are historical same-run results, not universal multipliers. Queue Engine 2.0 removed the tree-size dependency from warmed idle checks. The WPF comparison covers a deliberately narrow scheduling and drain contract, not the complete WPF Dispatcher feature set. Prism cache wins apply to stable retained scenes; dynamic scenes correctly record misses and their cost.

Complete recorded index

Thirteen report families, with their raw context

The website is a readable index. The checked-in Markdown, JSON, CSV, logs, screenshots, and BenchmarkDotNet output are the durable evidence.

Repository archiveJuly 13 through August 27, 2026
How to read this

Evidence has boundaries.

These numbers describe recorded workloads on recorded machines. They are useful baselines and regression evidence, not hardware-independent promises about every game or application.

Archive families13Each linked above
Latest recorded evidenceAugust 27, 2026SDL_GPU and Aspect
Primary runtime target.NET 8SDK and machine vary by report
Timing harnessesBDN + runtime runnersNot every workload belongs in one harness
Visual captureWindow.SaveScreenshotApplication-owned screenshots
Raw evidenceRepository-ownedMarkdown, JSON, CSV, logs, and images
Comparison rule

Compare within the recorded experiment

Before and after values are meaningful when machine, runtime, configuration, workload, and warmup are controlled. Do not combine unrelated reports into one fake leaderboard.

Warmup rule

Cold and retained work are different

JIT, shader creation, uploads, cache promotion, and first-use resource work must remain visible. A warmed zero-allocation path does not prove cold startup is free.

Correctness rule

Timings do not replace invariants

Tests separately guard idle traversal, exact-once dispatch, bounded backlogs, cache invalidation, resource cleanup, draw purity, and visual conformance.

Regression rule

Noise is not a root cause

Short runs can have broad confidence intervals. Reproduce on equivalent hardware, inspect counters and allocations, and only then assign ownership to a subsystem.