Compare 200+ serialization libraries across 13 languages.
| Start here | |
|---|---|
| Home | Documentation |
| Numbers | Live dashboard |
| Experiments | One-question tests |
| Learn | Serialization 101–401 |
| Benchmarks | How we measure · Metrics |
The live Dashboard: pick a language and data type, then read speed vs size and the ranking.
| Audience | Use case | Course |
|---|---|---|
| Computer science students | Theory, history, worked examples | 101, 201 |
| System integrators | Pick formats that fit payloads and runtimes | 301 |
| Researchers | Reproducible measurement and experiments | Methodology · 301 |
| Serializer authors | Add a codec, version A/B, regression checks | Adding a serializer · 401 |
- C — 20
- C# (.NET) — 38 serializers registered
- C++ — 27+
- Go — 19
- Java — 18
- JavaScript — 20
- Kotlin — 26
- Mojo — 6
- PHP — 15
- Python — 16
- Rust — 16
- Swift — 14
- Zig — 17
Adding a language · Adding a serializer.
Requires a recent Python 3 and uv (or pip). No Docker.
git clone https://github.com/leo-gan/GLD.SerializerBenchmark.git
cd GLD.SerializerBenchmark
./scripts/check-host-requirements.sh python # optional: see what's missing
./scripts/install-host-requirements.sh python # optional: user-local toolchains
cd python && ./scripts/run-benchmarks.sh smoke
# → logs/python/YYYY-MM-DD-HHMMSS.csvThen open the Python Dashboard
(or run analyze-benchmarks -l python after installing the analysis package) to review the run.
Prefer Rust? ./scripts/run-all-benchmarks.sh --mode smoke --lang rust
Benchmark runners run natively on the host (no Docker). Prepare toolchains once, then run benchmarks (project deps like uv sync / npm install still happen inside each runner).
# 1) Host toolchains (compilers/runtimes only)
./scripts/check-host-requirements.sh
./scripts/install-host-requirements.sh
./scripts/install-host-requirements.sh csharp # one language
# 2) Smoke one language
./python/scripts/run-benchmarks.sh smoke
# or: ./rust/scripts/run-benchmarks.sh smoke
# Orchestrator: all languages or one language
./scripts/run-all-benchmarks.sh --mode all-single
./scripts/run-all-benchmarks.sh --mode full --lang rust
# Analysis package (writes reports/; Dashboard via sync-data.py)
cd analysis && uv pip install -e . # or: pip install -e .
analyze-benchmarks
analyze-benchmarks -l python
analyze-benchmarks --compare-a rust:2026-07-09-194122 --compare-b rust:latestModes: smoke (2 reps) · all-single (10) · full (100) · research (500).
analyze-benchmarks writes reports/; Dashboard via sync-data.py. Review and commit before publish-docs deploys the site.
Shared data types: message, document, telemetry, strings, and event.
Catalog and defaults: schemas/data_catalog_v2.yaml. Run matrices: config/library/.
Docs: Test data.
Compare serializers within one language (and ideally one category). Cross-language absolute times are directional only — runtimes and GCs differ.