Files
MetaCrate/benchmarks/REPORT.md
Chili Palmer 738fe3933e
Some checks failed
API and SemVer surface / api-surface (push) Failing after 1m8s
Native code generation / deterministic (push) Failing after 2m6s
Concurrency and resource soak audit / soak (push) Failing after 12m13s
Documentation / documentation (push) Failing after 1m36s
Imaging and meshing gate / native (push) Failing after 3m2s
JPEG 2000 feature / linux (push) Successful in 2m48s
performance evidence / audit (push) Failing after 13m49s
Release platform and feature matrix / audit (push) Successful in 44s
Native Rust workspace compile / compile (push) Failing after 55s
Skia feature / linux (push) Successful in 31m13s
Dependency and supply-chain audit / audit (push) Failing after 9m13s
Release platform and feature matrix / matrix (false, linux-stable-minimal, x86_64-unknown-linux-gnu, stable) (push) Failing after 9m49s
Release platform and feature matrix / matrix (false, windows-stable-portable, x86_64-pc-windows-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-msrv-portable, x86_64-unknown-linux-gnu, 1.96.0) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-stable-default, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-stable-features, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-stable-release-surface, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (false, macos-stable-portable, x86_64-apple-darwin, stable) (push) Has been cancelled
Benchmark Rust against pinned C# reference (#105)
2026-08-12 03:26:56 +00:00

2.5 KiB

Performance comparison report

Accepted evidence captured 2026-08-12 on the Linux x86-64 host documented in README.md. Ratios are Rust divided by the pinned C# reference; lower is better. Bytes are allocated bytes per operation. Full cold and seven-sample warm measurements, throughput, allocation count support, retained heap, hashes, and toolchains are in results/.

Workload Rust latency C# latency Ratio Rust bytes C# bytes Result
UUID/math 107 ns 105 ns 1.02x 36 40 pass
LLSD XML 23.36 us 38.74 us 0.60x 10,939 28,600 pass
LLSD JSON 5.23 us 21.72 us 0.24x 7,447 3,680 reviewed pass
LLSD binary 2.69 us 11.07 us 0.24x 6,749 7,960 pass
LLSD notation 7.01 us 18.87 us 0.37x 8,489 10,096 pass
LLSD protobuf 7.34 us 30.97 us 0.24x 8,324 26,120 pass
Packet codec 209 ns 176 ns 1.19x 124 264 pass
Asset decode 288 ns 2.98 us 0.10x 1,246 4,512 pass
Image decode 42.67 us 48.27 us 0.88x 65,536 131,612 pass
Mesh decode 413.29 us 378.54 us 1.09x 507,740 564,593 pass
Inventory update 972 ns 758 ns 1.28x 373 357 pass
Object update 27 ns 46 ns 0.59x 16 11 pass
Rendering 5.22 us 1.01 us 5.15x 9,480 3,048 reviewed pass
Client throughput 6.23 us 3.80 us 1.64x 11,795 12,054 reviewed pass

The initial profile exposed two actionable regressions. Root inventory updates rebuilt the entire hierarchy and link index on every record; the new guarded root path updates only the affected node/link and changed the comparison from about 22.6x latency and 10.2x allocation to 1.28x and 1.05x. TGA decoding copied the input stream and dispatched every ordinary pixel through the fully generic orientation/palette path; the checked borrowed-input and common-layout path changed it from about 3.4x latency and 2.0x allocation to 0.88x and 0.50x.

LLSD JSON, rendering, and client throughput are the reviewed differences. JSON trades 2.02x allocated bytes for 4.15x lower latency. Rendering cannot be compared as equal work: the pinned C# method is a placeholder one-face cube, while Rust returns the required complete checked mesh. Client throughput is 1.64x slower while allocating fewer bytes because Rust preserves checked results and bounded owned maps. The executable limits and rationales are in release-criteria.json; every other workload passes the default criteria or the documented sub-microsecond noise rule.