Same data types. Same CSV contract. Same statistics pipeline.
Compare 100+ serialization libraries across nine languages — with fair within-language rankings, not marketing microbenchmarks.
| Start here | |
|---|---|
| Numbers | 📊 Live dashboard · Benchmarks overview |
| Learn | Serialization 101–401 — students through systems engineers |
| Method | How we measure · Metrics |
Example: Python latency distribution for the message data type (1 instance). Full tables and charts on each language Results page.
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 Results page (or run analyze-benchmarks -l python after installing the analysis package) to turn CSVs into tables.
Prefer Rust? ./scripts/run-all-benchmarks.sh --mode smoke --lang rust
| 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# (.NET) — 38 serializers registered
- Python — 16
- Rust — 16
- C — 20
- JavaScript — 20
- Go — 19
- Java — 18
- C++ — 27+
- Swift — 14
Adding a language · Adding a serializer.
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 (publish tables + plots into docs/)
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).
After regenerating results into docs/, 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.