Skip to content

leo-gan/GLD.SerializerBenchmark

Repository files navigation

Multi-Language Serializer Benchmark

Scientific, multi-language suite for measuring and comparing serialization libraries.


Who it is for

Audience Use case
Computer Science Students Theory, history, examples
Researchers Reproducible methods, CIs, configurable payloads, metrics
Serializer authors Measure, compare, and improve
System integrators Find serializers that fit custom payloads and environments

Supported languages

Adding a language.


Quick start

Harnesses 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 (separate step — compilers/runtimes only)
./scripts/check-host-requirements.sh          # verify
./scripts/install-host-requirements.sh        # user-local install (no sudo) where possible
./scripts/install-host-requirements.sh csharp # one language

# 2) Smoke one language
./<lang>/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 (from analysis/)
cd analysis && uv pip install -e .   # or: pip install -e .
analyze-benchmarks                  # publish snapshot: tables + plots into docs/
analyze-benchmarks -l python
analyze-benchmarks -l python --logs python/logs/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).

After regenerating results into docs/analysis/, review and commit before publish-docs deploys the site.


Test data

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

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


Statistics