Skip to content

perf(mojo): vendor one-pass float, 4-digit SWAR, and ctz scan - #146

Merged
leo-gan merged 1 commit into
masterfrom
perf-spend-hour
Sep 9, 2026
Merged

perf(mojo): vendor one-pass float, 4-digit SWAR, and ctz scan#146
leo-gan merged 1 commit into
masterfrom
perf-spend-hour

Conversation

@leo-gan

@leo-gan leo-gan commented Sep 9, 2026

Copy link
Copy Markdown
Owner

Summary

  • Vendor gld-json one-pass float parse, 4-digit SWAR, Ember count_trailing_zeros SIMD scan, digit-pair itoa, and skip of the short-dtoa exact search
  • n=1 encode cap 1024 (512 + list ensure resized mid-encode)
  • Pre-size decode lists to n

Measure (official all-single 2026-09-09-160305 vs #145)

suite n op #145 now vs Ember
message 1 deser 406 348 1.55×
telemetry 1 deser 1678 1233 1.35×
telemetry 100 deser 167450 106745 1.48×
telemetry 1 ser 2020 1319 1.27×
telemetry 100 ser 195051 117007 1.53×
strings 1 deser 2264 2314 0.51×

Fidelity 1.0. Strings deser is still heap-bound (32 Strings). Version stays 0.2.0.

Validation

  • pixi run test in mojo/ (roundtrip ok)
  • Official ./mojo/scripts/run-benchmarks.sh all-single json stem 2026-09-09-160305

Vendor gld-json one-pass number parse, 4-digit SWAR, Ember ctz SIMD
scan, digit-pair itoa, and skip of the short-dtoa exact search. n=1
encode cap is 1024 so list ensure does not resize. Decode lists are
pre-sized to n.

Official 2026-09-09-160305 vs #145: telemetry n=1 deser 1678→1233
(1.35× Ember), n=100 167450→106745 (1.48×). Telemetry n=1 ser
2020→1319 (1.27×), n=100 195051→117007 (1.53×). Message n=1 deser
406→348 (1.55× Ember). Fidelity 1.0.

Version stays 0.2.0.
@leo-gan
leo-gan merged commit 200fdc9 into master Sep 9, 2026
15 checks passed
leo-gan added a commit that referenced this pull request Sep 9, 2026
Vendor gld-json SCAN_W = simd_width_of[uint8] (32 on AVX2) and inlined
SWAR helpers.

Official 2026-09-09-161131 vs #146: message n=1 ser 250→218, deser
348→331 (1.53× Ember). Document n=1 deser 1190→1048.

Version stays 0.2.0.
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