Skip to content

Java — Benchmark Results

Generated: 2026-07-11T10:57:31.992153

Published local snapshot (not regenerated by GitHub Actions). Numbers may differ if you re-run benchmarks on another machine.

Serializer inventory and caveats: Java overview. Methods: Analysis Methodology. Metric definitions & importance tiers: Metrics catalog.

Pivot tables

Multi-way leaderboards emphasize high-importance metrics (configurable via metrics.multi_way in master config). Harness modes (CSV StringOrStream): bytes mode = in-memory buffer API; stream mode = write/read through a stream-like path. These names are not payload sizes. In each table, rows are sorted by serializer name; bold marks the semantic best value in that column (lowest time; highest ops/s). Ties are all bolded. Latency tables are in microseconds (µs). Batch fixtures show as Type · N instances (from DataTypeInstanceCount; e.g. Message · 100 instances).

Summary

Default multi-serializer view shows high-importance metrics only (METRICS.md). Rows are sorted by serializer name. Bold marks the semantic best value in each column (lowest latency / size; highest ops/s). Pairwise / version A/B reports use the full metric set. Latency cells are µs (analysis storage remains ns).

serializer Median total (µs) Median ser (µs) Median deser (µs) Ops/s (from mean) Median size (B) Samples Fidelity
avro:1.12.0 111 31.6 79.3 75.4K 9.02K 1733 1.00
bson:5.3.1 190 95.5 94.5 66.5K 20.5K 1693 1.00
dsl-json:2.0.2 148 70.9 75.2 93.4K 19.5K 1671 1.00
fastjson2:2.0.57 96.1 43.4 51.9 58.5K 19.5K 1707 1.00
fory:1.3.0 42.6 20.7 21.7 121K 9.65K 1676 1.00
gson:2.12.1 373 219 151 41.3K 19.5K 1702 1.00
hessian:4.0.66 90 38 51.9 78.9K 9.75K 1698 1.00
ion:2.18.3 399 104 294 27.9K 19K 1695 1.00
jackson:2.18.3 237 75.2 162 55.6K 19.5K 1708 1.00
jackson-cbor:2.18.3 92.2 30.2 61.5 82.3K 13.6K 1713 1.00
jackson-smile:2.18.3 73.2 27.7 45.3 97.9K 11.3K 1692 1.00
java-serialization:21.0.11 191 78 111 27.7K 13K 1734 1.00
jsoniter:0.9.23 81.4 33.2 47.3 86.9K 16.7K 1720 1.00
kryo:5.6.2 88.4 49.6 38 44.8K 9.25K 1677 1.00
moshi:1.15.2 263 97.6 165 72.7K 19.5K 1812 1.00
msgpack:0.9.8 140 58.7 81.2 73.9K 13.3K 1711 1.00
protobuf:4.28.3 94.8 34.3 60.4 68.3K 10.1K 1651 1.00
protostuff:1.8.0 63.3 31.4 31.6 98K 10.4K 1649 1.00

Total Time

serializer bytes mode/mean bytes mode/median stream mode/mean stream mode/median
avro:1.12.0 32.2 32.8 21.9 21.8
bson:5.3.1 49.1 44.1 25.2 24.9
dsl-json:2.0.2 50.3 48.2 38.3 35.6
fastjson2:2.0.57 31 31 30.9 30.7
fory:1.3.0 13.9 13.9 11 10.7
gson:2.12.1 56.5 52.8 68.7 66.4
hessian:4.0.66 21.8 22.5 12.3 12.1
ion:2.18.3 148 130 69.6 68.5
jackson:2.18.3 98.4 94 70.2 68
jackson-cbor:2.18.3 32.4 33 16.5 16.5
jackson-smile:2.18.3 33.6 36.4 13.9 14.6
java-serialization:21.0.11 68.3 61.2 54.6 54.2
jsoniter:0.9.23 16.4 16.3 7.7 6.87
kryo:5.6.2 21.8 21.6 13.1 13
moshi:1.15.2 54.5 50.6 31.7 26
msgpack:0.9.8 45.5 35.4 23.6 22.8
protobuf:4.28.3 7.86 7.58 10.1 9.89
protostuff:1.8.0 7.18 7.18 8.45 8.34

Ops/Sec

serializer Document · 1 instance Document · 100 instances Event · 1 instance Event · 100 instances Message · 1 instance Message · 100 instances Strings · 1 instance Strings · 100 instances Telemetry · 1 instance Telemetry · 100 instances
avro:1.12.0 73K 3.1K 370K 7.2K 31K 3K 150K 3.5K 130K 6.2K
bson:5.3.1 73K 1.8K 240K 3.8K 20K 2K 270K 2.5K 86K 3K
dsl-json:2.0.2 51K 2.6K 310K 6.3K 20K 2.4K 560K 6.3K 32K 1.8K
fastjson2:2.0.57 34K 5.4K 150K 8.7K 32K 4.6K 250K 5.2K 51K 3K
fory:1.3.0 140K 8.1K 320K 22K 72K 11K 180K 7.1K 320K 33K
gson:2.12.1 40K 1.3K 170K 2.5K 18K 1.7K 200K 2.5K 40K 0.82K
hessian:4.0.66 100K 2.7K 200K 13K 46K 4.1K 250K 4.3K 130K 6.8K
ion:2.18.3 21K 1.1K 110K 2.3K 6.8K 1.6K 110K 2.1K 16K 0.66K
jackson:2.18.3 41K 2.6K 210K 4.2K 10K 2.1K 120K 3.2K 47K 1K
jackson-cbor:2.18.3 36K 3.6K 240K 7K 31K 5.3K 350K 5.1K 87K 7.5K
jackson-smile:2.18.3 39K 4.6K 270K 9.7K 30K 10K 400K 5.6K 110K 7.5K
java-serialization:21.0.11 24K 2.2K 76K 3.4K 15K 2.4K 74K 1.7K 55K 4K
jsoniter:0.9.23 130K 6.2K 260K 12K 61K 4.1K 130K 4.4K 110K 5.6K
kryo:5.6.2 48K 3.7K 97K 11K 46K 5.4K 90K 3.1K 87K 10K
moshi:1.15.2 47K 2.1K 280K 5K 18K 2.8K 320K 3K 38K 0.65K
msgpack:0.9.8 32K 2.4K 270K 4.8K 22K 3.6K 330K 3.6K 53K 5.4K
protobuf:4.28.3 68K 4.8K 210K 8.1K 130K 15K 150K 4K 110K 8.2K
protostuff:1.8.0 75K 6.3K 560K 14K 140K 7.2K 130K 5.4K 130K 9.3K

Latency distributions

Each figure pairs mean bars (left: ser / deser mean µs, linear from 0) with split violins (right: full sample density, linear from 0). Top 5 serializers by mean total time per fixture (display only; tables list all). Provenance (fixture, CSV path, modes, n) is printed on each image.

Document · 1 instance

Document · 1 instance

Document · 100 instances

Document · 100 instances

Event · 1 instance

Event · 1 instance

Event · 100 instances

Event · 100 instances

Message · 1 instance

Message · 1 instance

Message · 100 instances

Message · 100 instances

Strings · 1 instance

Strings · 1 instance

Strings · 100 instances

Strings · 100 instances

Telemetry · 1 instance

Telemetry · 1 instance

Telemetry · 100 instances

Telemetry · 100 instances

Regenerate

Published snapshots are produced locally (not by GitHub Actions). After running benchmarks (each run creates a timestamped YYYY-MM-DD-HHMMSS.csv):

analyze-benchmarks              # all languages
analyze-benchmarks -l java   # this language only

That refreshes this language's results tables and latency distributions under docs/analysis/plots/violin/. The hub Benchmark Results is a static index and is not rewritten. Commit the updated results.md / plot paths as needed.

Run configuration (important)

Show host, seed, serializers, and source CSV

Key fields from the run sidecar (*.configs.json, or legacy *.environment.json). Full metric definitions: Metrics catalog. Optional blocks (dataset, serializers) appear only when captured.

  • Source CSV: /home/leo/PycharmProjects/GLD/seriailizer-benchmark/logs/java/2026-07-10-172131.csv
  • run=2026-07-10-172131
  • language=java
  • os=Linux 6.8.0-124-generic
  • cpu=12th Gen Intel(R) Core(TM) i7-12800H (20 threads)
  • ram=31.0 GiB
  • runtimes: python=3.14.0, node=24.15.0, dotnet=8.0.422
  • git=fa77247
  • seed=42
  • warmup_reps=1
  • serializers=18
  • metrics_profile=multi_way
  • Fixtures (config): message, document, telemetry, strings, event
  • Serializers (from CSV):
  • avro @ 1.12.0
  • bson @ 5.3.1
  • dsl-json @ 2.0.2
  • fastjson2 @ 2.0.57
  • fory @ 1.3.0
  • gson @ 2.12.1
  • hessian @ 4.0.66
  • ion @ 2.18.3
  • jackson @ 2.18.3
  • jackson-cbor @ 2.18.3
  • jackson-smile @ 2.18.3
  • java-serialization @ 21.0.11
  • jsoniter @ 0.9.23
  • kryo @ 5.6.2
  • moshi @ 1.15.2
  • msgpack @ 0.9.8
  • protobuf @ 4.28.3
  • protostuff @ 1.8.0