Skip to content

perf(rust): reduce sort32 bucket overhead#398

Open
dexhunter wants to merge 1 commit into
sparkjsdev:mainfrom
dexhunter:perf/sort32-review-step1-20260715
Open

perf(rust): reduce sort32 bucket overhead#398
dexhunter wants to merge 1 commit into
sparkjsdev:mainfrom
dexhunter:perf/sort32-review-step1-20260715

Conversation

@dexhunter

Copy link
Copy Markdown

Summary

  • count valid keys in fixed-size chunks to reduce loop overhead
  • reuse one mutable bucket reference per scatter instead of indexing each bucket twice
  • return before the scatter passes when there are no active splats
  • add regression tests for invalid keys, finite-value boundaries, and stable ordering

Performance

The benchmark builds the production Wasm sorter from a pinned upstream archive, overlays only rust/spark-rs/src/sort.rs, and compares baseline and candidate calls on the same process and fixtures. It validates exact active counts, descending order, stable equal-key ordering, unchanged input/padding, and Wasm size before printing the metric.

sort32_paired_latency_score is the candidate/baseline latency ratio, so lower is better and 1.0 is the baseline. Three final-patch confirmations measured 0.750563, 0.768874, and 0.760215. The median is 0.760215, a 24.0% latency reduction. The suite includes small inputs and one-million-key random, periodic, and adversarial layouts.

Autoresearch trajectory: https://dashboard.weco.ai/share/4avZ2RktRLkZmJ1sWBU1Tiqqd20Zndg7

Validation

  • cargo test --manifest-path rust/spark-rs/Cargo.toml (2 passed)
  • strict paired Wasm evaluator across 10 input layouts
  • git diff --check

Co-Authored-By: Aiden <aiden@weco.ai>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant