Skip to content

Repository files navigation

Multi-Language Serializer Benchmark

Site Dashboard Serialization 101 License: MIT Languages

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

Live Dashboard: language and data-type filters, speed vs size scatter, and throughput ranking
The live Dashboard: pick a language and data type, then read speed vs size and the ranking.


Who it is for

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

Supported languages

Adding a language · Adding a serializer.


Try it: benchmark Python serializers in ~60 seconds

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.csv

Then 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


Quick start

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:latest

Modes: 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.


Test data

Shared data types: message, document, telemetry, strings, and event.

Catalog and defaults: schemas/data_catalog_v2.yaml. Run matrices: config/library/.
Docs: Test data.


Statistics

Compare serializers within one language (and ideally one category). Cross-language absolute times are directional only — runtimes and GCs differ.

Used by

Contributors

Languages