kriszyp / json-benchmark

Benchmarking serialization and deserialization for your API requests to understand which method gives better performance

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

json-(de)serialize

Benchmarking serialization and deserialization for your API requests to understand which method gives better performance

Requires

  • Node.js v15.10+
  • yarn installed

How to use

yarn
yarn benchmark

Used libraries for benchmarking

Results

Deserialization

┌─────────┬───────────────────────────────┬───────────────────┬─────┐
│ (index) │             name              │       type        │ ops │
├─────────┼───────────────────────────────┼───────────────────┼─────┤
│    0    │     'getAll: JSON.parse''deserialization' │ 745 │
│    1    │   'getAll: protobuf.decode''deserialization' │ 625 │
│    2    │   'getAll: msgpackR.unpack''deserialization' │ 623 │
│    3    │   'getAll: v8.deserialize''deserialization' │ 530 │
│    4    │   'getAll: avsc.fromBuffer''deserialization' │ 514 │
│    5    │   'getAll: msgpack.decode''deserialization' │ 473 │
│    6    │  'getAll: js-binary.decode''deserialization' │ 303 │
│    7    │  'getAll: BSON.deserialize''deserialization' │ 157 │
│    8    │ 'getAll: bser.loadFromBuffer''deserialization' │ 150 │
└─────────┴───────────────────────────────┴───────────────────┴─────┘
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────┐ 745
├─ getAll: JSON.parse           ─────────────────────────────────────────────────────────────────────────── │
├─ getAll: protobuf.decode      ───────────────────────────────────────────────────────────────             │
├─ getAll: msgpackR.unpack      ──────────────────────────────────────────────────────────────              │
├─ getAll: v8.deserialize       ─────────────────────────────────────────────────────                       │
├─ getAll: avsc.fromBuffer      ───────────────────────────────────────────────────                         │
├─ getAll: msgpack.decode       ───────────────────────────────────────────────                             │
├─ getAll: js-binary.decode     ──────────────────────────────                                              │
├─ getAll: BSON.deserialize     ────────────────                                                            │
├─ getAll: bser.loadFromBuffer  ───────────────                                                             │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────┘

For deserialization fastest is after native JSON.parse is protobuf.js

Serialization

┌─────────┬───────────────────────────────┬─────────────────┬─────┐
│ (index) │             name              │      type       │ ops │
├─────────┼───────────────────────────────┼─────────────────┼─────┤
│    0    │    'getAll: v8.serialize''serialization' │ 958 │
│    1    │    'getAll: msgpackR.pack''serialization' │ 846 │
│    2    │   'getAll: protobuf.encode''serialization' │ 621 │
│    3    │   'getAll: msgpack.encode''serialization' │ 531 │
│    4    │ 'getAll: fast-json-stringify''serialization' │ 457 │
│    5    │    'getAll: avsc.toBuffer''serialization' │ 429 │
│    6    │  'getAll: js-binary.encode''serialization' │ 211 │
│    7    │   'getAll: bson.serialize''serialization' │ 194 │
│    8    │  'getAll: bser.dumpToBuffer''serialization' │ 126 │
└─────────┴───────────────────────────────┴─────────────────┴─────┘
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ 958
├─ getAll: v8.serialize         ──────────────────────────────────────────────────────────────────────────────────────────────── │
├─ getAll: msgpackR.pack        ─────────────────────────────────────────────────────────────────────────────────────            │
├─ getAll: protobuf.encode      ──────────────────────────────────────────────────────────────                                   │
├─ getAll: msgpack.encode       ─────────────────────────────────────────────────────                                            │
├─ getAll: fast-json-stringify  ──────────────────────────────────────────────                                                   │
├─ getAll: avsc.toBuffer        ───────────────────────────────────────────                                                      │
├─ getAll: js-binary.encode     ─────────────────────                                                                            │
├─ getAll: bson.serialize       ───────────────────                                                                              │
├─ getAll: bser.dumpToBuffer    ─────────────                                                                                    │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

For serialization fastest is v8.serialize

License

MIT

About

Benchmarking serialization and deserialization for your API requests to understand which method gives better performance


Languages

Language:JavaScript 100.0%