Performance: benchmark against the pinned C# reference #105

Closed
opened 2026-08-08 08:26:27 +00:00 by hugo · 1 comment
Owner

Objective

Create reproducible performance and memory comparisons for representative offline workloads without using C# at Rust runtime.

Deliverables

  • Benchmark UUID/math, LLSD formats, packet codecs, asset/image/mesh decode, inventory/object updates, rendering, and client throughput with identical fixtures.
  • Run Rust and the pinned C# reference separately under documented hardware/toolchain conditions.
  • Profile and fix material regressions without weakening correctness or changing public behavior.

Validation

  • Benchmark harness and fixture hashes are committed.
  • Reports separate latency/throughput/allocation/memory and cold/warm effects.
  • Release criteria document accepted differences and evidence.

Prerequisite

All implementation and program milestones are complete with their fixed parity suites green.

Project constraints

  • The released implementation is entirely native Rust and must pass the explicit no-CLR/no-bridge artifact audit.
  • Do not weaken API coverage or semantic parity to satisfy hardening, performance, or packaging goals.
  • Preserve reproducible evidence, update release documentation, and keep all default/live destructive boundaries explicit.
## Objective Create reproducible performance and memory comparisons for representative offline workloads without using C# at Rust runtime. ## Deliverables - Benchmark UUID/math, LLSD formats, packet codecs, asset/image/mesh decode, inventory/object updates, rendering, and client throughput with identical fixtures. - Run Rust and the pinned C# reference separately under documented hardware/toolchain conditions. - Profile and fix material regressions without weakening correctness or changing public behavior. ## Validation - Benchmark harness and fixture hashes are committed. - Reports separate latency/throughput/allocation/memory and cold/warm effects. - Release criteria document accepted differences and evidence. ## Prerequisite All implementation and program milestones are complete with their fixed parity suites green. ## Project constraints - The released implementation is entirely native Rust and must pass the explicit no-CLR/no-bridge artifact audit. - Do not weaken API coverage or semantic parity to satisfy hardening, performance, or packaging goals. - Preserve reproducible evidence, update release documentation, and keep all default/live destructive boundaries explicit.
hugo added this to the 12 - Hardening and release milestone 2026-08-08 08:26:27 +00:00
hugo added the enhancement label 2026-08-08 08:26:27 +00:00
Author
Owner

Implemented and pushed in commit 738fe39.

Highlights:

  • Added separate native Rust and pinned C# Release runners for 14 offline workloads covering UUID/math, five LLSD formats, packet codecs, asset/TGA/mesh decode, inventory/object updates, rendering, and client throughput.
  • Added deterministic shared fixtures with SHA-256 manifests, one-cold/seven-warm evidence, environment/toolchain metadata, latency, throughput, allocation bytes/count where supported, and retained memory.
  • Added executable release criteria and an audit that recomputes comparisons, rejects stale/tampered evidence and incomplete workload sets, and requires reviewed exceptions for material latency regressions.
  • Profiled and fixed root inventory updates (about 22.6x to 1.28x latency ratio) and common-layout borrowed TGA decode (about 3.4x to 0.88x) without weakening behavior.
  • Added an ubuntu-latest Gitea workflow, provenance tracking, full reproduction documentation, and committed reports against C# commit 2aa70bb68513b39795da5d13c88f31b86e85a3ba.

Validation on Rust 1.97.1:

  • cargo test -p libremetaverse --test performance_regressions --profile benchmark: 2 passed, 0 ignored
  • cargo test -p metacrate-performance --profile benchmark: 3 passed, 0 ignored
  • strict issue-scoped Clippy and rustfmt passed
  • performance audit: 14 workloads accepted with fixture hashes verified
  • dependency, provenance, and release-matrix audits passed
  • pinned C# runner built and executed separately in Release net8.0
  • native artifact inspection found no CLR, Mono, hostfxr, or managed bridge dependency

This benchmark is intentionally offline: it does not read .env, contact any grid, or silently skip tests.

Implemented and pushed in commit 738fe39. Highlights: - Added separate native Rust and pinned C# Release runners for 14 offline workloads covering UUID/math, five LLSD formats, packet codecs, asset/TGA/mesh decode, inventory/object updates, rendering, and client throughput. - Added deterministic shared fixtures with SHA-256 manifests, one-cold/seven-warm evidence, environment/toolchain metadata, latency, throughput, allocation bytes/count where supported, and retained memory. - Added executable release criteria and an audit that recomputes comparisons, rejects stale/tampered evidence and incomplete workload sets, and requires reviewed exceptions for material latency regressions. - Profiled and fixed root inventory updates (about 22.6x to 1.28x latency ratio) and common-layout borrowed TGA decode (about 3.4x to 0.88x) without weakening behavior. - Added an ubuntu-latest Gitea workflow, provenance tracking, full reproduction documentation, and committed reports against C# commit 2aa70bb68513b39795da5d13c88f31b86e85a3ba. Validation on Rust 1.97.1: - cargo test -p libremetaverse --test performance_regressions --profile benchmark: 2 passed, 0 ignored - cargo test -p metacrate-performance --profile benchmark: 3 passed, 0 ignored - strict issue-scoped Clippy and rustfmt passed - performance audit: 14 workloads accepted with fixture hashes verified - dependency, provenance, and release-matrix audits passed - pinned C# runner built and executed separately in Release net8.0 - native artifact inspection found no CLR, Mono, hostfxr, or managed bridge dependency This benchmark is intentionally offline: it does not read .env, contact any grid, or silently skip tests.
hugo closed this issue 2026-08-12 03:27:59 +00:00
Sign in to join this conversation.