Skip to content

JavaScript (Node.js) — Benchmark Results

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

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

Serializer inventory and caveats: JavaScript (Node.js) 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
@msgpack/msgpack:3.1.3 131 63.6 66.7 91.3K 13.5K 1693 1.00
avsc:5.7.9 335 181 153 69.9K 9.02K 1661 1.00
bebop:3.2.3 133 48.2 84.2 125K 19K 1742 1.00
bser:2.1.1 309 166 142 45.6K 16.4K 1705 1.00
bson:6.10.4 186 89 96.6 81.2K 20.3K 1632 1.00
cbor:9.0.2 1,140 479 660 14.4K 13.6K 1662 1.00
cbor-x:1.6.4 73.1 43.4 29.6 125K 10.3K 1675 1.00
devalue:5.8.1 426 314 110 37.3K 25.6K 1699 1.00
fast-json-stringify:6.4.0 144 87.1 56.3 152K 19.7K 1692 1.00
flatbuffers:24.12.23 149 86.3 62.4 102K 19.1K 1684 1.00
flexbuffers:24.12.23 2,040 1,180 855 4.11K 27.2K 1588 1.00
json-pack-msgpack:18.28.0 87.3 45.6 41.8 214K 14.1K 1720 1.00
JSON.stringify:node-24.15.0 126 64.9 60.9 203K 19.7K 1687 1.00
msgpackr:1.12.1 102 43.2 58.5 177K 13.9K 1667 1.00
protobuf-es:2.12.1 74.7 14 60.5 100K 19.7K 1667 1.00
protobufjs:7.6.5 60.6 4.75 55.9 247K 19.7K 1667 1.00
sia:2.3.0 477 326 149 53.9K 19K 1665 1.00
simdjson-parse+JSON.stringify:0.9.2 235 58.4 176 80.7K 19.7K 1723 1.00
v8-serializer:v8-13.6.233.17-node.48 100 32 68.4 158K 15.3K 1716 1.00

Total Time

serializer bytes mode/mean bytes mode/median stream mode/mean stream mode/median
@msgpack/msgpack:3.1.3 11.4 10.7 4.88 4.85
avsc:5.7.9 6.46 6.41 4.77 4.76
bebop:3.2.3 6.05 4.84 3.67 3.62
bser:2.1.1 22.2 20.9 16 16
bson:6.10.4 9.98 9.17 6.45 5.92
cbor:9.0.2 59.6 50.3 42.3 42.7
cbor-x:1.6.4 9.2 9.1 4.1 4.33
devalue:5.8.1 9.34 9.2 5.8 5.17
fast-json-stringify:6.4.0 4.41 4.13 2.98 3.14
flatbuffers:24.12.23 9.93 9.31 6.41 6.36
flexbuffers:24.12.23 49.8 48.7 201 294
json-pack-msgpack:18.28.0 5.92 5.95 3.39 3
JSON.stringify:node-24.15.0 2.15 2.06 1.97 1.95
msgpackr:1.12.1 9.9 9.64 5.24 4.88
protobuf-es:2.12.1 8.1 8 6.75 6.84
protobufjs:7.6.5 2.5 2.34 2.28 2.26
sia:2.3.0 10.2 10.8 7.81 7.53
simdjson-parse+JSON.stringify:0.9.2 4.37 4.38 4.12 4.08
v8-serializer:v8-13.6.233.17-node.48 2.23 2.18 2.91 3.06

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
@msgpack/msgpack:3.1.3 51K 2.6K 300K 4.4K 87K 8.1K 220K 2.4K 130K 7K
avsc:5.7.9 110K 1.4K 170K 2.1K 150K 5.1K 130K 1.1K 79K 0.95K
bebop:3.2.3 160K 2.4K 340K 4.1K 170K 7.4K 260K 2.6K 220K 7.3K
bser:2.1.1 76K 0.93K 110K 1.6K 45K 3.1K 110K 1.4K 81K 1.7K
bson:6.10.4 45K 1.5K 240K 2.9K 100K 5.6K 180K 2.5K 150K 3.7K
cbor:9.0.2 19K 0.24K 35K 0.5K 17K 0.97K 34K 0.48K 33K 0.48K
cbor-x:1.6.4 88K 5.6K 240K 7.4K 110K 22K 66K 3.8K 440K 9.1K
devalue:5.8.1 38K 0.78K 84K 1.5K 110K 3.4K 52K 1.1K 50K 0.93K
fast-json-stringify:6.4.0 250K 2.9K 340K 4.8K 230K 5.7K 410K 4.4K 190K 2K
flatbuffers:24.12.23 210K 3.3K 270K 4.8K 100K 4.1K 250K 3.7K 140K 2K
flexbuffers:24.12.23 7.6K 0.19K 3.9K 0.49K 20K 0.81K 8.3K 0.25K 4.9K 0.14K
json-pack-msgpack:18.28.0 92K 3.5K 630K 6.7K 170K 12K 460K 3.7K 670K 8.8K
JSON.stringify:node-24.15.0 310K 3.2K 520K 6.5K 460K 12K 460K 3.6K 230K 2.3K
msgpackr:1.12.1 89K 2.7K 400K 5.2K 100K 10K 500K 4.3K 540K 7.9K
protobuf-es:2.12.1 160K 4K 230K 8.8K 120K 19K 230K 6.5K 200K 5.9K
protobufjs:7.6.5 330K 5.6K 620K 10K 400K 25K 580K 7.5K 470K 6.9K
sia:2.3.0 58K 0.63K 110K 1.1K 98K 2.4K 82K 0.81K 130K 2.7K
simdjson-parse+JSON.stringify:0.9.2 120K 1.5K 170K 3K 230K 5.9K 150K 2.2K 110K 1.4K
v8-serializer:v8-13.6.233.17-node.48 110K 2.7K 290K 4.8K 450K 16K 370K 5.6K 340K 7.1K

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 javascript   # 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/javascript/2026-07-10-162646.csv
  • run=2026-07-10-162646
  • language=javascript
  • os=Linux 6.8.0-124-generic
  • cpu=12th Gen Intel(R) Core(TM) i7-12800H (20 threads)
  • ram=31.0 GiB
  • runtimes: node=24.15.0, python=3.14.0, dotnet=8.0.422
  • git=995336e dirty
  • seed=42
  • warmup_reps=1
  • serializers=19
  • metrics_profile=multi_way
  • Fixtures (config): message, document, telemetry, strings, event
  • Serializers (from CSV):
  • @msgpack/msgpack @ 3.1.3
  • JSON.stringify @ node-24.15.0
  • avsc @ 5.7.9
  • bebop @ 3.2.3
  • bser @ 2.1.1
  • bson @ 6.10.4
  • cbor @ 9.0.2
  • cbor-x @ 1.6.4
  • devalue @ 5.8.1
  • fast-json-stringify @ 6.4.0
  • flatbuffers @ 24.12.23
  • flexbuffers @ 24.12.23
  • json-pack-msgpack @ 18.28.0
  • msgpackr @ 1.12.1
  • protobuf-es @ 2.12.1
  • protobufjs @ 7.6.5
  • sia @ 2.3.0
  • simdjson-parse+JSON.stringify @ 0.9.2
  • v8-serializer @ v8-13.6.233.17-node.48