Skip to content

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

Open
nth-bailey wants to merge 5 commits into
mainfrom
bench/serializer-comparison
Open

nth-bailey wants to merge 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.

This branch has not been deployed

No deployments
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