Skip to content

docs: publish matched XML and JSON serializer comparisons - #147

Merged
nth-bailey merged 5 commits into
mainfrom
bench/serializer-comparison
Oct 11, 2026
Merged

nth-bailey merged 5 commits into
mainfrom
bench/serializer-comparison

Conversation

@nth-bailey

Copy link
Copy Markdown
Collaborator

Adds a current, reproducible comparison page for native options, competitor serializers and PolyXML bindings. The tables separate XML from JSON, typed models from dynamic graphs, and serializer performance from generated-model overhead. Every figure comes from retained PolyXML 0.34.8 samples with source, generated models, locks, versions and hashes.

  • Rust: generated owned/borrowed XML versus quick-xml Serde and serde-xml-rs; generated versus handwritten serde_json models; separate allocation diagnostics.
  • Python: PolyXML versus xsdata on identical generated dataclasses, plus typed stdlib/lxml adapters and a separately labeled Pydantic XML reference. Timings exclude tracemalloc.
  • Go/C#: refreshed native-model comparisons with full-field preflight checks. C# retains default-tiering order effects as diagnostics and publishes a separate six-process full-JIT control.
  • Java: fresh two-fork JMH comparisons of direct codecs, Jackson and JAXB, with full-input checks, output lengths, heap allocation and the actual Woodstox provider recorded.
  • C++/TypeScript: explicit matched-return-value coverage gaps. Historical results remain separate.

The page includes slower results as well as wins: specialized Python stdlib adapters win some cases, Go root methods add write allocations, and Jackson reads slightly faster than the Java direct codec on these projections.

Validation: Rust workspace format, strict Clippy and all workspace tests passed; 115 Python tests passed with 100% statement/branch coverage; Java interoperability tests passed; all 33 exported XML outputs passed independent checks; Python writer outputs also passed XSD validation; final version-guard smoke passed; strict docs build and benchmark-source Ruff passed. Builds and measured processes ran serially under memory caps. The standalone consumer's two existing generated single-match patterns require the style lint allowance recorded in audit.json; workspace Clippy passed without exceptions.

@nth-bailey
nth-bailey merged commit 23e9237 into main Oct 11, 2026
30 checks passed
@nth-bailey
nth-bailey deleted the bench/serializer-comparison branch October 11, 2026 13:44
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