Performance evidence

Measure the work.
Keep the context.

These numbers come from real Ostrin programs. The runner compares the reference interpreter with the generated native executable, checks identical output and records the environment beside every median.

Loading benchmark record…source-backedno cross-language claims

Recorded run

One result with its provenance attached.

Timing depends on hardware, operating system and compiler state. The page makes those variables visible so later runs can be compared responsibly.

compiler commit—
compiler—
environment—
sampling—
first workload source SHA-256 · LF-normalizedNot recorded in this snapshot
Wall-clock process medians. Lower milliseconds are faster; the ratio compares interpreter median to native median on this same run.
WorkloadInterpreterNativeRatioCompile

Semantic overhead probe

Float and Quantity, same workload shape.

Each bar is a process median from the recorded run. The pair keeps the array length and arithmetic aligned so the unit carrying cost is visible without turning it into a cross-language claim.

Memory cost · M2-C

What the scientific types allocate.

The same 50,000-step accumulation with a plain Float, a temperature interval, an absolute temperature and a Measurement that carries a shared source. Native executables report requested bytes and peak resident set when run with OSTRIN_MEM_DETAIL=1.

Windows x64 receipt (9 runs per workload). Memory columns are deterministic or near-deterministic; process time is omitted because launch cost dominates it on this host.
WorkloadBytes requestedAllocationsPeak RSS
control: scalar Float005,040 KB
Quantity interval005,040 KB
TemperaturePoint shifted by an interval005,044 KB
Measurement with one shared source5,200,293200,0105,104 KB

Quantities and absolute temperatures are plain values and never touch the heap. Measurement builds one new source list per operation and shares unchanged source records; it needed 450,008 allocations before the single-pass source merge and needs 200,010 now, with the same output and a peak of 12 live allocations. Receipt: validation/m2c-abstraction-overhead-windows.json.

How to read this: the ratio is a measurement of Ostrin’s two execution modes, not a comparison with Python, Julia, Rust or another machine. Every workload also carries an output SHA-256 in the generated report, so a fast run that changes semantics is rejected. The historical index keeps prior commit records with their original environments.

Reproduce it

Source first. Numbers second.

Build the release compiler, run the deterministic workload set and regenerate the public data file. The raw JSON remains available as a CI artifact for each scheduled or manually triggered benchmark workflow.

cargo build --release --manifest-path compiler/Cargo.toml
node scripts/benchmark.mjs --iterations 7 --warmups 1
node scripts/benchmark-page.mjs --write