Skip to content

Benchmark metrics catalog

Canonical list of every metric the suite computes or plans to compute.
Pipeline (warmup, IQR, shared sanitize for tables/plots): Analysis methodology.

Symbol Meaning
high Shown on multi-serializer leaderboards / language Results by default
medium Pairwise / version A/B, or multi-way when metrics.multi_way.include_importance includes medium
low Full profile / research only (--metrics-profile full or pairwise catalog)

Configure visibility in config/benchmark_config.yaml under metrics:.


CSV columns (harness → analysis)

Column order (v1.2+): SerializerVersion immediately follows SerializerName.

Column Unit Importance Source Notes
Language id high harness e.g. python, csharp
StringOrStream enum high harness API mode: bytes / stream / legacy aliases
TestDataName id high harness Fixture name
Repetitions count medium harness Configured loop length
RepetitionIndex index medium harness 0 = warmup row (kept in raw log)
SerializerName id high harness Stable log key
SerializerVersion semver / runtime high harness Installed package/crate version
TimeSer ns high harness Serialize wall time
TimeDeser ns high harness Deserialize wall time
TimeSerAndDeser ns high harness Combined (or ser+deser)
Size bytes high harness Raw wire size
OpPerSecSer / Deser / SerAndDeser 1/s medium harness Often 1e9/time; analysis may recompute
MemoryPeakBytes bytes medium optional e.g. Python tracemalloc
FidelityScore 0–1 high optional 1.0 = round-trip pass
NativeKind / StreamMode enum low optional Call-path metadata (Rust/Go)

Analysis group metrics (after sanitize)

Group key: (Language, SerializerName, TestDataName, StringOrStream).

Speed

id Definition Importance Higher better?
total_median_ns Median of filtered total times high (default rank) no
ser_median_ns / deser_median_ns Median ser / deser high no
total_mean_ns / ser_mean_ns / deser_mean_ns Arithmetic means medium no
total_std_ns / *_mad_ns / *_cv Dispersion medium no (context)
total_p5_ns … total_p99_ns Percentiles medium (p95/p99) / low (others) no
total_ci_low_ns / total_ci_high_ns Bootstrap CI on mean total medium —
avg_ops_per_sec 1e9 / total_mean_ns high (display) yes
runs / runs_raw / warmup_skipped / outliers_removed Sample provenance high —

Size & fidelity

id Definition Importance
median_size_bytes Median raw payload size high
mean_fidelity Mean fidelity score high
mean_memory_peak_bytes Mean peak alloc (if present) medium
serializer_version From CSV high

Effects & inference (within language group)

id Definition Importance When
effect_vs_fastest_cliffs_delta Cliff’s δ vs fastest mean total medium multi-way attach
effect_vs_fastest_cliffs_label negligible…large / reference medium multi-way
effect_vs_fastest_hedges_g Hedges’ g low multi-way
mann_whitney_u / p_value / p_value_holm A/B only medium–high for pairwise --compare-a/b

Planned (not all implemented)

id Axis Planned importance Phase
size_gzip6 / size_zstd3 compression medium 1
compression_ratio_vs_json compression medium 1
time_access_ns speed (zero-copy) low–medium 2
pareto_non_dominated multi-objective high (flag) 4

Multi-way vs pairwise reporting

Mode Trigger Metrics shown
Multi-way Default language Results; ≥3 serializers in a group metrics.multi_way.include_importance (default: high only)
Pairwise --compare-a / --compare-b, or exactly two serializers, or --metrics-profile pairwise high + medium + low (full catalog available for the pair)
Full --metrics-profile full Everything computed

Machine-readable exports (reports/stats_*_latest.json) may still contain the full computed set.


Run sidecar: *.configs.json

Beside each result CSV (same stem):

logs/<lang>/YYYY-MM-DD-HHMMSS.csv
logs/<lang>/YYYY-MM-DD-HHMMSS.configs.json
Block Required? Content
environment preferred OS, CPU, memory, runtimes, git
dataset optional seed, fixtures, repetitions, workload labels, config paths
serializers optional names + versions from the run
run optional mode, metrics profile, timestamp

Legacy *.environment.json is still loaded (treated as the environment block).

Important fields from this sidecar are summarized on published Results pages and plot footers when present.


Catalog version

metrics.catalog_version in master config should match the version discussed in this file (currently 1).