title
permalink
Benchmark
/
JSON documents - Serialization formats - Results - Running locally - GitHub
A large-scale space-efficiency benchmark of JSON-compatible binary
serialization formats (with and without compression) involving representative
real-world JSON documents.
NOTE! Check out
https://benchmark.sourcemeta.com for the
latest version of this benchmark.
This size benchmark utilizes representative real-world JSON documents adapted
from the open-source Apache-2.0
SchemaStore 's test
suite . All
the JSON documents used in this benchmark are described in the table below.
The type column is based on JSON BinPack's JSON Stats online
tool .
This benchmark involves the serialization formats, implementations, and
encodings described in the table below.
Serialization Format
Implementation
Version
Encodings
ASN.1
ASN-1Step
10.0.2
PER Unaligned
Apache Avro
Python avro
(pip)
1.10.0
Binary Encoding with no framing
Microsoft Bond
C++
9.0.4
Compact Binary v1
BSON
Node.js bson
(npm)
4.2.2
Cap'n Proto
capnp
0.8.0
Packed and Binary
CBOR
Python cbor2
(pip)
5.1.2
FlatBuffers
flatc
1.12.0
Binary Wire Format
FlexBuffers
flatc
1.12.0
Binary Wire Format
MessagePack
msgpack-tools
0.6
Protocol Buffers
Python protobuf
(pip)
3.15.3
Binary Wire Format
Smile
Clojure cheshire
5.10.0
Apache Thrift
Python thrift
(pip)
0.13.0
Compact Protocol
UBJSON
Python py-ubjson
(pip)
0.16.1
CircleCI Definition (Blank)
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
4
24
23
27
Apache Avro (unframed)
schema.json
4
24
23
26
Microsoft Bond (Compact Binary v1)
schema.bond
10
25
29
28
Cap'n Proto (Binary Encoding)
schema.capnp
24
32
41
33
Cap'n Proto (Packed Encoding)
schema.capnp
6
26
25
29
FlatBuffers
schema.fbs
20
32
39
35
Protocol Buffers (Binary Wire Format)
schema.proto
5
25
24
27
Apache Thrift (Compact Protocol)
schema.thrift
10
25
29
28
JSON
None
14
34
33
38
BSON
None
18
36
37
39
CBOR
None
10
30
29
34
FlexBuffers
None
18
38
37
41
MessagePack
None
10
30
29
34
Smile
None
15
35
34
39
UBJSON
None
13
33
32
37
Category
Average
Median
Range
Std.dev
Uncompressed
10.4
8
20
7.1
GZIP (compression level 9)
26.6
25
8
3.2
LZ4 (compression level 9)
29.1
27
18
6.7
LZMA (compression level 9)
29.1
28
9
3.0
Category
Average
Median
Range
Std.dev
Uncompressed
14
14
8
3.3
GZIP (compression level 9)
33.7
34
8
3.0
LZ4 (compression level 9)
33
33
8
3.3
LZMA (compression level 9)
37.3
38
7
2.6
CircleCI Matrix Definition
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
18
36
37
38
Apache Avro (unframed)
schema.json
15
32
34
36
Microsoft Bond (Compact Binary v1)
schema.bond
30
43
49
45
Cap'n Proto (Binary Encoding)
schema.capnp
96
56
72
54
Cap'n Proto (Packed Encoding)
schema.capnp
36
49
54
50
FlatBuffers
schema.fbs
104
82
104
77
JSON BinPack (Schema-driven)
schema.json
7
27
26
30
Protocol Buffers (Binary Wire Format)
schema.proto
26
43
45
46
Apache Thrift (Compact Protocol)
schema.thrift
28
39
47
42
JSON
None
95
99
112
101
BSON
None
136
123
150
121
CBOR
None
72
89
91
90
FlexBuffers
None
157
134
151
131
JSON BinPack (Schema-less)
schema.json
66
85
85
88
MessagePack
None
72
90
91
92
Smile
None
87
104
106
105
UBJSON
None
92
103
111
104
Category
Average
Median
Range
Std.dev
Uncompressed
40
28
97
33.1
GZIP (compression level 9)
45.2
43
55
15.4
LZ4 (compression level 9)
52
47
78
22.2
LZMA (compression level 9)
46.4
45
47
12.8
Category
Average
Median
Range
Std.dev
Uncompressed
97.4
87
91
32.6
GZIP (compression level 9)
104
103
49
17.1
LZ4 (compression level 9)
112.1
106
66
25.7
LZMA (compression level 9)
104.4
104
43
15.2
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
50
48
55
52
Apache Avro (unframed)
schema.json
40
41
49
45
Microsoft Bond (Compact Binary v1)
schema.bond
63
56
62
60
Cap'n Proto (Binary Encoding)
schema.capnp
152
75
96
73
Cap'n Proto (Packed Encoding)
schema.capnp
76
67
75
71
FlatBuffers
schema.fbs
156
95
122
91
JSON BinPack (Schema-driven)
schema.json
20
40
39
43
Protocol Buffers (Binary Wire Format)
schema.proto
62
60
70
63
Apache Thrift (Compact Protocol)
schema.thrift
59
53
59
57
JSON
None
96
80
86
83
BSON
None
147
97
112
97
CBOR
None
74
67
76
70
FlexBuffers
None
90
97
105
99
JSON BinPack (Schema-less)
schema.json
60
72
75
76
MessagePack
None
74
68
76
71
Smile
None
84
76
82
80
UBJSON
None
93
79
86
83
Category
Average
Median
Range
Std.dev
Uncompressed
75.3
62
136
44.6
GZIP (compression level 9)
59.4
56
55
16.6
LZ4 (compression level 9)
69.7
62
83
24.1
LZMA (compression level 9)
61.7
60
48
14.2
Category
Average
Median
Range
Std.dev
Uncompressed
88.9
84
87
25.9
GZIP (compression level 9)
79.4
76
30
11.8
LZ4 (compression level 9)
87.4
82
37
13.9
LZMA (compression level 9)
82.3
80
29
10.8
CommitLint Configuration (Basic)
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
1
21
20
24
Apache Avro (unframed)
schema.json
1
21
20
24
Microsoft Bond (Compact Binary v1)
schema.bond
3
23
22
26
Cap'n Proto (Binary Encoding)
schema.capnp
24
31
41
31
Cap'n Proto (Packed Encoding)
schema.capnp
6
26
25
29
FlatBuffers
schema.fbs
20
31
39
34
JSON BinPack (Schema-driven)
schema.json
0
20
15
23
Protocol Buffers (Binary Wire Format)
schema.proto
0
20
15
23
Apache Thrift (Compact Protocol)
schema.thrift
2
22
21
25
JSON
None
25
45
44
49
BSON
None
22
41
41
44
CBOR
None
17
37
36
41
FlexBuffers
None
25
45
44
49
JSON BinPack (Schema-less)
schema.json
17
37
36
41
MessagePack
None
17
37
36
41
Smile
None
22
42
41
47
UBJSON
None
19
39
38
43
Category
Average
Median
Range
Std.dev
Uncompressed
6.3
2
24
8.6
GZIP (compression level 9)
23.9
22
11
4.2
LZ4 (compression level 9)
24.2
21
26
9.0
LZMA (compression level 9)
26.6
25
11
3.7
Category
Average
Median
Range
Std.dev
Uncompressed
19.9
19
8
2.9
GZIP (compression level 9)
39.7
39
8
2.9
LZ4 (compression level 9)
38.9
38
8
2.9
LZMA (compression level 9)
43.7
43
8
3.0
Entry Point Regulation Manifest
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
231
180
208
175
Apache Avro (unframed)
schema.json
195
168
197
167
Microsoft Bond (Compact Binary v1)
schema.bond
262
199
225
191
Cap'n Proto (Binary Encoding)
schema.capnp
536
261
326
233
Cap'n Proto (Packed Encoding)
schema.capnp
318
255
280
241
FlatBuffers
schema.fbs
504
290
369
273
JSON BinPack (Schema-driven)
schema.json
182
171
201
170
Protocol Buffers (Binary Wire Format)
schema.proto
247
196
222
189
Apache Thrift (Compact Protocol)
schema.thrift
251
192
220
186
JSON
None
520
264
332
272
BSON
None
564
304
378
299
CBOR
None
412
248
306
246
FlexBuffers
None
429
355
417
342
JSON BinPack (Schema-less)
schema.json
321
282
318
274
MessagePack
None
412
262
307
254
Smile
None
356
266
311
261
UBJSON
None
469
272
326
265
Category
Average
Median
Range
Std.dev
Uncompressed
302.9
251
354
122.0
GZIP (compression level 9)
212.4
196
122
41.9
LZ4 (compression level 9)
249.8
222
172
57.8
LZMA (compression level 9)
202.8
189
106
35.0
Category
Average
Median
Range
Std.dev
Uncompressed
423.3
412
243
72.9
GZIP (compression level 9)
284.1
272
107
33.2
LZ4 (compression level 9)
337.6
318
111
39.8
LZMA (compression level 9)
277.3
265
96
30.7
ESLint Configuration Document
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
65
81
84
83
Apache Avro (unframed)
schema.json
100
93
107
91
Microsoft Bond (Compact Binary v1)
schema.bond
194
184
212
180
Cap'n Proto (Binary Encoding)
schema.capnp
216
136
181
128
Cap'n Proto (Packed Encoding)
schema.capnp
131
130
141
129
FlatBuffers
schema.fbs
320
228
305
217
JSON BinPack (Schema-driven)
schema.json
64
80
83
83
Protocol Buffers (Binary Wire Format)
schema.proto
161
164
180
155
Apache Thrift (Compact Protocol)
schema.thrift
150
110
132
109
JSON
None
1141
488
703
521
BSON
None
1184
512
727
539
CBOR
None
979
504
717
544
FlexBuffers
None
1201
635
824
636
JSON BinPack (Schema-less)
schema.json
969
511
710
538
MessagePack
None
971
525
712
546
Smile
None
979
544
724
565
UBJSON
None
1070
550
771
563
Category
Average
Median
Range
Std.dev
Uncompressed
155.7
150
256
76.4
GZIP (compression level 9)
134
130
148
47.4
LZ4 (compression level 9)
158.3
141
222
66.8
LZMA (compression level 9)
130.6
128
134
43.6
Category
Average
Median
Range
Std.dev
Uncompressed
1050.4
979
232
95.6
GZIP (compression level 9)
540.1
525
131
41.9
LZ4 (compression level 9)
740.7
724
114
39.0
LZMA (compression level 9)
561.6
546
98
32.0
ECMAScript Module Loader Definition
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
12
32
31
35
Apache Avro (unframed)
schema.json
16
36
35
39
Microsoft Bond (Compact Binary v1)
schema.bond
29
49
48
54
Cap'n Proto (Binary Encoding)
schema.capnp
80
68
82
67
Cap'n Proto (Packed Encoding)
schema.capnp
35
55
54
59
FlatBuffers
schema.fbs
80
77
94
74
JSON BinPack (Schema-driven)
schema.json
12
32
31
35
Protocol Buffers (Binary Wire Format)
schema.proto
23
43
42
47
Apache Thrift (Compact Protocol)
schema.thrift
24
44
43
48
JSON
None
102
101
117
103
BSON
None
96
101
115
105
CBOR
None
64
81
83
82
FlexBuffers
None
91
107
110
109
JSON BinPack (Schema-less)
schema.json
64
80
83
84
MessagePack
None
64
82
83
85
Smile
None
70
87
89
91
UBJSON
None
78
93
97
94
Category
Average
Median
Range
Std.dev
Uncompressed
34.6
24
68
25.3
GZIP (compression level 9)
48.4
44
45
14.9
LZ4 (compression level 9)
51.1
43
63
21.2
LZMA (compression level 9)
50.9
48
39
13.1
Category
Average
Median
Range
Std.dev
Uncompressed
75.3
70
32
12.5
GZIP (compression level 9)
90.1
87
27
9.8
LZ4 (compression level 9)
94.3
89
32
12.5
LZMA (compression level 9)
92.9
91
27
9.8
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
205
105
136
103
Apache Avro (unframed)
schema.json
283
100
130
92
Microsoft Bond (Compact Binary v1)
schema.bond
298
116
143
106
Cap'n Proto (Binary Encoding)
schema.capnp
448
146
197
132
Cap'n Proto (Packed Encoding)
schema.capnp
228
142
162
137
FlatBuffers
schema.fbs
680
220
291
195
JSON BinPack (Schema-driven)
schema.json
82
69
82
66
Protocol Buffers (Binary Wire Format)
schema.proto
325
115
145
107
Apache Thrift (Compact Protocol)
schema.thrift
277
110
136
104
JSON
None
190
121
146
116
BSON
None
456
187
234
167
CBOR
None
172
112
138
109
FlexBuffers
None
309
167
200
163
JSON BinPack (Schema-less)
schema.json
117
101
122
100
MessagePack
None
162
111
132
109
Smile
None
228
131
158
128
UBJSON
None
208
126
153
120
Category
Average
Median
Range
Std.dev
Uncompressed
314
283
598
159.1
GZIP (compression level 9)
124.8
115
151
39.9
LZ4 (compression level 9)
158
143
209
54.9
LZMA (compression level 9)
115.8
106
129
34.2
Category
Average
Median
Range
Std.dev
Uncompressed
236
208
339
105.8
GZIP (compression level 9)
133.6
126
86
29.5
LZ4 (compression level 9)
162.4
153
112
37.4
LZMA (compression level 9)
128
120
67
24.8
GitHub FUNDING Sponsorship Definition (Empty)
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
16
36
35
39
Apache Avro (unframed)
schema.json
16
36
35
39
Microsoft Bond (Compact Binary v1)
schema.bond
49
64
68
64
Cap'n Proto (Binary Encoding)
schema.capnp
40
50
56
51
Cap'n Proto (Packed Encoding)
schema.capnp
25
45
44
50
FlatBuffers
schema.fbs
68
71
79
71
JSON BinPack (Schema-driven)
schema.json
16
36
35
39
Protocol Buffers (Binary Wire Format)
schema.proto
17
37
36
41
Apache Thrift (Compact Protocol)
schema.thrift
18
38
37
42
JSON
None
183
134
167
144
BSON
None
133
125
152
137
CBOR
None
124
114
143
131
FlexBuffers
None
152
143
168
148
JSON BinPack (Schema-less)
schema.json
124
124
143
135
MessagePack
None
124
124
143
136
Smile
None
129
134
148
139
UBJSON
None
137
135
156
144
Category
Average
Median
Range
Std.dev
Uncompressed
29.4
18
52
17.7
GZIP (compression level 9)
45.9
38
35
12.5
LZ4 (compression level 9)
47.2
37
44
15.7
LZMA (compression level 9)
48.4
42
32
11.2
Category
Average
Median
Range
Std.dev
Uncompressed
131.9
129
28
9.5
GZIP (compression level 9)
128.4
125
29
8.8
LZ4 (compression level 9)
150.4
148
25
8.6
LZMA (compression level 9)
138.6
137
17
5.3
GitHub Workflow Definition
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
165
154
172
152
Apache Avro (unframed)
schema.json
167
153
164
153
Microsoft Bond (Compact Binary v1)
schema.bond
201
178
195
179
Cap'n Proto (Binary Encoding)
schema.capnp
464
241
299
223
Cap'n Proto (Packed Encoding)
schema.capnp
242
232
247
230
FlatBuffers
schema.fbs
440
275
352
256
JSON BinPack (Schema-driven)
schema.json
165
151
163
152
Protocol Buffers (Binary Wire Format)
schema.proto
189
176
195
175
Apache Thrift (Compact Protocol)
schema.thrift
187
170
186
170
JSON
None
356
228
292
247
BSON
None
411
273
347
278
CBOR
None
288
208
257
216
FlexBuffers
None
396
309
369
318
JSON BinPack (Schema-less)
schema.json
277
233
261
228
MessagePack
None
287
222
256
224
Smile
None
287
235
268
240
UBJSON
None
339
243
291
249
Category
Average
Median
Range
Std.dev
Uncompressed
246.7
189
299
112.2
GZIP (compression level 9)
192.2
176
124
42.8
LZ4 (compression level 9)
219.2
195
189
62.8
LZMA (compression level 9)
187.8
175
104
36.5
Category
Average
Median
Range
Std.dev
Uncompressed
326.4
288
134
52.3
GZIP (compression level 9)
246.1
235
101
31.7
LZ4 (compression level 9)
292.7
268
113
43.1
LZMA (compression level 9)
250.4
240
102
33.4
Grunt.js Clean Task Definition
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
13
29
32
32
Apache Avro (unframed)
schema.json
16
31
35
34
Microsoft Bond (Compact Binary v1)
schema.bond
27
41
43
46
Cap'n Proto (Binary Encoding)
schema.capnp
96
66
85
66
Cap'n Proto (Packed Encoding)
schema.capnp
39
53
58
56
FlatBuffers
schema.fbs
116
77
104
74
JSON BinPack (Schema-driven)
schema.json
11
31
30
35
Protocol Buffers (Binary Wire Format)
schema.proto
20
36
39
41
Apache Thrift (Compact Protocol)
schema.thrift
23
38
39
41
JSON
None
93
94
106
95
BSON
None
105
97
110
98
CBOR
None
60
75
79
77
FlexBuffers
None
94
110
113
115
JSON BinPack (Schema-less)
schema.json
57
76
76
79
MessagePack
None
60
76
79
78
Smile
None
70
85
88
88
UBJSON
None
77
88
92
89
Category
Average
Median
Range
Std.dev
Uncompressed
40.1
23
105
36.4
GZIP (compression level 9)
44.7
38
48
16.1
LZ4 (compression level 9)
51.7
39
74
24.5
LZMA (compression level 9)
47.2
41
42
14.1
Category
Average
Median
Range
Std.dev
Uncompressed
74.7
70
48
17.2
GZIP (compression level 9)
86.7
85
35
12.1
LZ4 (compression level 9)
91
88
37
14.0
LZMA (compression level 9)
89.1
88
38
12.7
ImageOptimizer Azure Webjob Configuration
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
21
41
40
45
Apache Avro (unframed)
schema.json
24
44
43
47
Microsoft Bond (Compact Binary v1)
schema.bond
30
50
49
54
Cap'n Proto (Binary Encoding)
schema.capnp
96
76
97
72
Cap'n Proto (Packed Encoding)
schema.capnp
44
64
63
68
FlatBuffers
schema.fbs
100
80
101
79
JSON BinPack (Schema-driven)
schema.json
21
41
40
44
Protocol Buffers (Binary Wire Format)
schema.proto
23
43
42
47
Apache Thrift (Compact Protocol)
schema.thrift
26
46
45
50
JSON
None
82
88
96
90
BSON
None
102
103
117
100
CBOR
None
61
76
78
76
FlexBuffers
None
89
102
107
103
JSON BinPack (Schema-less)
schema.json
61
76
78
78
MessagePack
None
61
77
78
78
Smile
None
70
86
88
88
UBJSON
None
74
87
90
87
Category
Average
Median
Range
Std.dev
Uncompressed
42.8
26
79
30.3
GZIP (compression level 9)
53.9
46
39
14.5
LZ4 (compression level 9)
57.8
45
61
23.0
LZMA (compression level 9)
56.2
50
35
12.5
Category
Average
Median
Range
Std.dev
Uncompressed
74
70
41
14.8
GZIP (compression level 9)
86.7
86
27
10.8
LZ4 (compression level 9)
90.9
88
39
14.4
LZMA (compression level 9)
87.1
87
27
10.1
JSON-e Templating Engine Reverse Sort Example
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
15
31
34
33
Apache Avro (unframed)
schema.json
11
31
30
34
Microsoft Bond (Compact Binary v1)
schema.bond
23
41
42
42
Cap'n Proto (Binary Encoding)
schema.capnp
240
72
100
68
Cap'n Proto (Packed Encoding)
schema.capnp
43
63
62
65
FlatBuffers
schema.fbs
136
89
126
87
JSON BinPack (Schema-driven)
schema.json
10
30
29
33
Protocol Buffers (Binary Wire Format)
schema.proto
21
41
40
43
Apache Thrift (Compact Protocol)
schema.thrift
22
39
41
40
JSON
None
86
86
99
88
BSON
None
121
104
129
101
CBOR
None
53
73
72
76
FlexBuffers
None
95
109
114
111
JSON BinPack (Schema-less)
schema.json
52
72
71
76
MessagePack
None
52
73
71
76
Smile
None
63
82
82
84
UBJSON
None
70
83
89
87
Category
Average
Median
Range
Std.dev
Uncompressed
57.9
22
230
74.3
GZIP (compression level 9)
48.6
41
59
19.9
LZ4 (compression level 9)
56
41
97
32.4
LZMA (compression level 9)
49.4
42
54
18.1
Category
Average
Median
Range
Std.dev
Uncompressed
72.3
63
69
24.4
GZIP (compression level 9)
85.1
82
37
14.2
LZ4 (compression level 9)
89.7
82
58
21.4
LZMA (compression level 9)
87.3
84
35
12.8
JSON-e Templating Engine Sort Example
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
13
30
32
32
Apache Avro (unframed)
schema.json
9
29
28
32
Microsoft Bond (Compact Binary v1)
schema.bond
12
32
31
36
Cap'n Proto (Binary Encoding)
schema.capnp
48
45
58
45
Cap'n Proto (Packed Encoding)
schema.capnp
18
38
37
41
FlatBuffers
schema.fbs
44
51
63
51
JSON BinPack (Schema-driven)
schema.json
8
28
27
31
Protocol Buffers (Binary Wire Format)
schema.proto
10
30
29
33
Apache Thrift (Compact Protocol)
schema.thrift
11
31
30
35
JSON
None
34
54
53
58
BSON
None
65
66
79
66
CBOR
None
21
41
40
46
FlexBuffers
None
39
56
58
60
JSON BinPack (Schema-less)
schema.json
21
41
40
46
MessagePack
None
21
41
40
46
Smile
None
27
48
46
52
UBJSON
None
30
48
49
53
Category
Average
Median
Range
Std.dev
Uncompressed
19.2
12
40
14.6
GZIP (compression level 9)
34.9
31
23
7.6
LZ4 (compression level 9)
37.2
31
36
12.8
LZMA (compression level 9)
37.3
35
20
6.5
Category
Average
Median
Range
Std.dev
Uncompressed
32
27
44
14.8
GZIP (compression level 9)
48.7
48
25
8.7
LZ4 (compression level 9)
50.3
46
39
13.2
LZMA (compression level 9)
52.7
52
20
7.2
JSON Feed Example Document
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
398
247
287
248
Apache Avro (unframed)
schema.json
400
247
289
248
Microsoft Bond (Compact Binary v1)
schema.bond
417
270
306
266
Cap'n Proto (Binary Encoding)
schema.capnp
568
329
416
315
Cap'n Proto (Packed Encoding)
schema.capnp
470
329
369
326
FlatBuffers
schema.fbs
584
340
429
331
JSON BinPack (Schema-driven)
schema.json
306
254
272
251
Protocol Buffers (Binary Wire Format)
schema.proto
413
261
302
264
Apache Thrift (Compact Protocol)
schema.thrift
415
259
302
261
JSON
None
573
327
418
341
BSON
None
596
360
454
373
CBOR
None
523
320
403
331
FlexBuffers
None
598
406
475
400
JSON BinPack (Schema-less)
schema.json
514
330
396
335
MessagePack
None
517
331
398
337
Smile
None
521
335
403
341
UBJSON
None
557
348
428
354
Category
Average
Median
Range
Std.dev
Uncompressed
441.2
415
278
82.5
GZIP (compression level 9)
281.8
261
93
36.7
LZ4 (compression level 9)
330.2
302
157
55.5
LZMA (compression level 9)
278.9
264
83
32.7
Category
Average
Median
Range
Std.dev
Uncompressed
546.6
523
84
34.5
GZIP (compression level 9)
347.1
335
86
26.9
LZ4 (compression level 9)
422.4
403
79
28.9
LZMA (compression level 9)
353
341
69
23.4
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
2143
1282
1754
1302
Apache Avro (unframed)
schema.json
2162
1296
1772
1316
Microsoft Bond (Compact Binary v1)
schema.bond
2256
1385
1860
1398
Cap'n Proto (Binary Encoding)
schema.capnp
3152
1627
2230
1566
Cap'n Proto (Packed Encoding)
schema.capnp
2549
1668
2162
1668
FlatBuffers
schema.fbs
3116
1686
2290
1627
JSON BinPack (Schema-driven)
schema.json
1468
1172
1357
1139
Protocol Buffers (Binary Wire Format)
schema.proto
2225
1370
1832
1371
Apache Thrift (Compact Protocol)
schema.thrift
2230
1337
1815
1352
JSON
None
3048
1556
2204
1586
BSON
None
3283
1782
2449
1762
CBOR
None
2754
1555
2164
1582
FlexBuffers
None
3049
1966
2560
1936
JSON BinPack (Schema-less)
schema.json
2619
1633
2179
1640
MessagePack
None
2749
1600
2163
1615
Smile
None
2620
1581
2169
1621
UBJSON
None
2977
1658
2277
1665
Category
Average
Median
Range
Std.dev
Uncompressed
2366.8
2230
1684
490.1
GZIP (compression level 9)
1424.8
1370
514
176.8
LZ4 (compression level 9)
1896.9
1832
933
274.0
LZMA (compression level 9)
1415.4
1371
529
162.2
Category
Average
Median
Range
Std.dev
Uncompressed
2864.4
2754
664
229.1
GZIP (compression level 9)
1682.1
1633
411
134.5
LZ4 (compression level 9)
2280.1
2179
397
149.6
LZMA (compression level 9)
1688.7
1640
354
113.9
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
242
93
120
98
Apache Avro (unframed)
schema.json
242
93
120
98
Microsoft Bond (Compact Binary v1)
schema.bond
295
159
194
154
Cap'n Proto (Binary Encoding)
schema.capnp
608
195
269
180
Cap'n Proto (Packed Encoding)
schema.capnp
376
181
215
180
FlatBuffers
schema.fbs
636
279
365
247
JSON BinPack (Schema-driven)
schema.json
132
129
144
123
Protocol Buffers (Binary Wire Format)
schema.proto
284
155
195
152
Apache Thrift (Compact Protocol)
schema.thrift
283
113
137
115
JSON
None
1049
411
548
425
BSON
None
1084
442
577
453
CBOR
None
923
435
566
434
FlexBuffers
None
890
559
664
552
JSON BinPack (Schema-less)
schema.json
748
481
557
465
MessagePack
None
919
458
565
443
Smile
None
870
453
558
450
UBJSON
None
1008
464
582
458
Category
Average
Median
Range
Std.dev
Uncompressed
344.2
284
504
160.4
GZIP (compression level 9)
155.2
155
186
55.6
LZ4 (compression level 9)
195.4
194
245
76.0
LZMA (compression level 9)
149.7
152
149
45.4
Category
Average
Median
Range
Std.dev
Uncompressed
920.3
919
336
98.3
GZIP (compression level 9)
470.3
458
124
38.8
LZ4 (compression level 9)
581.3
566
107
34.8
LZMA (compression level 9)
465
453
118
36.7
Nightwatch.js Test Framework Configuration
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
89
105
108
108
Apache Avro (unframed)
schema.json
92
104
111
107
Microsoft Bond (Compact Binary v1)
schema.bond
221
226
237
219
Cap'n Proto (Binary Encoding)
schema.capnp
304
170
209
158
Cap'n Proto (Packed Encoding)
schema.capnp
149
148
157
151
FlatBuffers
schema.fbs
464
302
390
257
JSON BinPack (Schema-driven)
schema.json
73
94
92
97
Protocol Buffers (Binary Wire Format)
schema.proto
109
129
128
132
Apache Thrift (Compact Protocol)
schema.thrift
134
142
153
142
JSON
None
1507
649
926
682
BSON
None
1327
666
933
694
CBOR
None
1176
640
874
667
FlexBuffers
None
1389
869
1140
873
JSON BinPack (Schema-less)
schema.json
1085
678
886
688
MessagePack
None
1172
670
872
678
Smile
None
1090
683
886
701
UBJSON
None
1268
692
936
710
Category
Average
Median
Range
Std.dev
Uncompressed
181.7
134
391
121.7
GZIP (compression level 9)
157.8
142
208
63.7
LZ4 (compression level 9)
176.1
153
298
88.0
LZMA (compression level 9)
152.3
142
160
50.6
Category
Average
Median
Range
Std.dev
Uncompressed
1215.3
1176
304
107.9
GZIP (compression level 9)
699.7
678
229
70.8
LZ4 (compression level 9)
932.4
886
268
88.2
LZMA (compression level 9)
715.9
694
206
65.5
OpenWeatherMap API Example Document
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
165
179
184
183
Apache Avro (unframed)
schema.json
148
163
167
166
Microsoft Bond (Compact Binary v1)
schema.bond
197
209
216
213
Cap'n Proto (Binary Encoding)
schema.capnp
320
236
288
222
Cap'n Proto (Packed Encoding)
schema.capnp
206
219
225
220
FlatBuffers
schema.fbs
384
307
367
285
JSON BinPack (Schema-driven)
schema.json
113
134
132
137
Protocol Buffers (Binary Wire Format)
schema.proto
188
199
207
203
Apache Thrift (Compact Protocol)
schema.thrift
191
199
209
202
JSON
None
494
341
470
361
BSON
None
480
394
471
395
CBOR
None
383
347
394
339
FlexBuffers
None
660
502
590
483
JSON BinPack (Schema-less)
schema.json
349
331
362
321
MessagePack
None
382
358
393
350
Smile
None
412
389
418
372
UBJSON
None
439
382
446
379
Category
Average
Median
Range
Std.dev
Uncompressed
212.4
191
271
80.7
GZIP (compression level 9)
205
199
173
46.1
LZ4 (compression level 9)
221.7
209
235
65.3
LZMA (compression level 9)
203.4
203
148
38.9
Category
Average
Median
Range
Std.dev
Uncompressed
443.6
412
311
96.8
GZIP (compression level 9)
386.1
382
171
51.9
LZ4 (compression level 9)
439.1
418
228
70.1
LZMA (compression level 9)
377
372
162
49.1
OpenWeather Road Risk API Example
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
176
168
184
163
Apache Avro (unframed)
schema.json
156
156
168
156
Microsoft Bond (Compact Binary v1)
schema.bond
182
174
188
176
Cap'n Proto (Binary Encoding)
schema.capnp
296
216
265
203
Cap'n Proto (Packed Encoding)
schema.capnp
204
204
214
205
FlatBuffers
schema.fbs
328
251
297
235
JSON BinPack (Schema-driven)
schema.json
100
119
119
119
Protocol Buffers (Binary Wire Format)
schema.proto
173
171
183
172
Apache Thrift (Compact Protocol)
schema.thrift
177
171
184
173
JSON
None
375
250
302
252
BSON
None
422
315
354
303
CBOR
None
340
275
298
256
FlexBuffers
None
488
376
420
357
JSON BinPack (Schema-less)
schema.json
254
260
270
250
MessagePack
None
339
276
297
259
Smile
None
326
299
324
290
UBJSON
None
375
295
318
278
Category
Average
Median
Range
Std.dev
Uncompressed
199.1
177
228
66.4
GZIP (compression level 9)
181.1
171
132
35.8
LZ4 (compression level 9)
200.2
184
178
49.8
LZMA (compression level 9)
178
173
116
31.4
Category
Average
Median
Range
Std.dev
Uncompressed
363.4
340
234
69.3
GZIP (compression level 9)
299.4
295
116
35.5
LZ4 (compression level 9)
325.9
318
150
45.4
LZMA (compression level 9)
284.7
278
107
34.5
NPM Package.json Example Manifest
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
1498
801
1061
820
Apache Avro (unframed)
schema.json
1500
800
1060
820
Microsoft Bond (Compact Binary v1)
schema.bond
1588
904
1161
917
Cap'n Proto (Binary Encoding)
schema.capnp
2216
1007
1363
977
Cap'n Proto (Packed Encoding)
schema.capnp
1755
1013
1281
1009
FlatBuffers
schema.fbs
2268
1132
1512
1064
JSON BinPack (Schema-driven)
schema.json
947
839
886
793
Protocol Buffers (Binary Wire Format)
schema.proto
1581
888
1149
903
Apache Thrift (Compact Protocol)
schema.thrift
1561
848
1108
860
JSON
None
2259
1093
1520
1129
BSON
None
2386
1228
1660
1236
CBOR
None
1990
1083
1478
1099
FlexBuffers
None
2320
1395
1767
1381
JSON BinPack (Schema-less)
schema.json
1957
1129
1472
1139
MessagePack
None
1995
1131
1483
1143
Smile
None
1983
1119
1473
1138
UBJSON
None
2171
1173
1572
1178
Category
Average
Median
Range
Std.dev
Uncompressed
1657.1
1581
1321
375.5
GZIP (compression level 9)
914.7
888
332
106.7
LZ4 (compression level 9)
1175.7
1149
626
174.9
LZMA (compression level 9)
907
903
271
88.5
Category
Average
Median
Range
Std.dev
Uncompressed
2114.6
1995
429
165.2
GZIP (compression level 9)
1179.7
1131
312
97.6
LZ4 (compression level 9)
1557.9
1483
295
107.5
LZMA (compression level 9)
1187.7
1143
282
88.2
NPM Package.json Linter Configuration Manifest
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
369
84
97
87
Apache Avro (unframed)
schema.json
201
75
86
78
Microsoft Bond (Compact Binary v1)
schema.bond
462
177
235
161
Cap'n Proto (Binary Encoding)
schema.capnp
880
131
165
123
Cap'n Proto (Packed Encoding)
schema.capnp
519
120
136
119
FlatBuffers
schema.fbs
960
288
389
248
JSON BinPack (Schema-driven)
schema.json
90
80
85
81
Protocol Buffers (Binary Wire Format)
schema.proto
454
197
252
172
Apache Thrift (Compact Protocol)
schema.thrift
420
91
102
95
JSON
None
1159
321
441
344
BSON
None
1295
348
478
366
CBOR
None
993
349
477
358
FlexBuffers
None
942
522
629
510
JSON BinPack (Schema-less)
schema.json
791
457
542
430
MessagePack
None
989
366
476
365
Smile
None
1002
380
499
388
UBJSON
None
1117
374
489
377
Category
Average
Median
Range
Std.dev
Uncompressed
483.9
454
870
266.4
GZIP (compression level 9)
138.1
120
213
66.9
LZ4 (compression level 9)
171.9
136
304
96.8
LZMA (compression level 9)
129.3
119
170
52.7
Category
Average
Median
Range
Std.dev
Uncompressed
1018.4
993
504
144.2
GZIP (compression level 9)
399.4
374
174
60.6
LZ4 (compression level 9)
512.9
489
153
52.0
LZMA (compression level 9)
399.1
377
152
50.4
SAP Cloud SDK Continuous Delivery Toolkit Configuration
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
1
21
20
24
Apache Avro (unframed)
schema.json
0
20
15
23
Microsoft Bond (Compact Binary v1)
schema.bond
10
30
29
32
Cap'n Proto (Binary Encoding)
schema.capnp
16
33
35
32
Cap'n Proto (Packed Encoding)
schema.capnp
7
27
26
29
FlatBuffers
schema.fbs
24
35
43
38
JSON BinPack (Schema-driven)
schema.json
0
20
15
23
Protocol Buffers (Binary Wire Format)
schema.proto
0
20
15
23
Apache Thrift (Compact Protocol)
schema.thrift
1
21
20
24
JSON
None
44
50
58
55
BSON
None
29
46
48
49
CBOR
None
25
45
44
48
FlexBuffers
None
37
52
56
55
JSON BinPack (Schema-less)
schema.json
25
45
44
49
MessagePack
None
25
45
44
49
Smile
None
30
50
49
54
UBJSON
None
29
49
48
52
Category
Average
Median
Range
Std.dev
Uncompressed
6.6
1
24
8.1
GZIP (compression level 9)
25.2
21
15
5.8
LZ4 (compression level 9)
24.2
20
28
9.3
LZMA (compression level 9)
27.6
24
15
5.1
Category
Average
Median
Range
Std.dev
Uncompressed
28.6
29
12
4.0
GZIP (compression level 9)
47.4
46
7
2.7
LZ4 (compression level 9)
47.6
48
12
4.0
LZMA (compression level 9)
50.9
49
7
2.6
TravisCI Notifications Configuration
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
497
88
102
90
Apache Avro (unframed)
schema.json
504
90
103
91
Microsoft Bond (Compact Binary v1)
schema.bond
522
116
132
111
Cap'n Proto (Binary Encoding)
schema.capnp
640
129
152
120
Cap'n Proto (Packed Encoding)
schema.capnp
566
125
135
120
FlatBuffers
schema.fbs
668
175
215
164
JSON BinPack (Schema-driven)
schema.json
89
98
108
99
Protocol Buffers (Binary Wire Format)
schema.proto
521
114
133
109
Apache Thrift (Compact Protocol)
schema.thrift
521
95
106
96
JSON
None
673
154
195
164
BSON
None
699
160
204
167
CBOR
None
627
147
192
160
FlexBuffers
None
228
214
244
207
JSON BinPack (Schema-less)
schema.json
185
175
202
177
MessagePack
None
627
157
192
163
Smile
None
604
168
199
173
UBJSON
None
658
163
198
169
Category
Average
Median
Range
Std.dev
Uncompressed
503.1
521
579
157.2
GZIP (compression level 9)
114.4
114
87
25.7
LZ4 (compression level 9)
131.8
132
113
33.8
LZMA (compression level 9)
111.1
109
74
21.6
Category
Average
Median
Range
Std.dev
Uncompressed
518.3
627
514
199.5
GZIP (compression level 9)
169.1
163
67
20.0
LZ4 (compression level 9)
204.4
199
52
16.7
LZMA (compression level 9)
173.7
169
47
14.6
TSLint Linter Definition (Basic)
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
1
21
20
24
Apache Avro (unframed)
schema.json
1
21
20
24
Microsoft Bond (Compact Binary v1)
schema.bond
9
27
28
29
Cap'n Proto (Binary Encoding)
schema.capnp
48
33
45
34
Cap'n Proto (Packed Encoding)
schema.capnp
12
29
31
31
FlatBuffers
schema.fbs
60
53
64
49
JSON BinPack (Schema-driven)
schema.json
1
21
20
24
Protocol Buffers (Binary Wire Format)
schema.proto
8
28
27
31
Apache Thrift (Compact Protocol)
schema.thrift
8
26
27
28
JSON
None
67
68
74
70
BSON
None
71
74
82
74
CBOR
None
51
62
70
63
FlexBuffers
None
77
76
88
80
JSON BinPack (Schema-less)
schema.json
51
61
70
64
MessagePack
None
51
62
70
64
Smile
None
59
68
73
71
UBJSON
None
59
66
72
67
Category
Average
Median
Range
Std.dev
Uncompressed
16.4
8
59
20.6
GZIP (compression level 9)
28.8
27
32
9.4
LZ4 (compression level 9)
31.3
27
44
13.7
LZMA (compression level 9)
30.4
29
25
7.4
Category
Average
Median
Range
Std.dev
Uncompressed
59.9
59
26
9.7
GZIP (compression level 9)
67
66
15
5.6
LZ4 (compression level 9)
75
72
18
6.6
LZMA (compression level 9)
69
67
17
5.9
TSLint Linter Definition (Extends Only)
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
46
54
56
57
Apache Avro (unframed)
schema.json
47
55
57
58
Microsoft Bond (Compact Binary v1)
schema.bond
49
57
59
60
Cap'n Proto (Binary Encoding)
schema.capnp
88
77
90
75
Cap'n Proto (Packed Encoding)
schema.capnp
62
68
70
73
FlatBuffers
schema.fbs
88
78
91
78
JSON BinPack (Schema-driven)
schema.json
46
54
56
57
Protocol Buffers (Binary Wire Format)
schema.proto
47
55
57
58
Apache Thrift (Compact Protocol)
schema.thrift
48
56
58
59
JSON
None
63
70
72
73
BSON
None
78
79
85
80
CBOR
None
55
63
65
65
FlexBuffers
None
70
78
81
80
JSON BinPack (Schema-less)
schema.json
55
63
65
65
MessagePack
None
55
63
65
65
Smile
None
61
69
71
72
UBJSON
None
62
70
72
72
Category
Average
Median
Range
Std.dev
Uncompressed
57.9
48
42
16.8
GZIP (compression level 9)
61.6
56
24
9.4
LZ4 (compression level 9)
66
58
35
13.7
LZMA (compression level 9)
63.9
59
21
8.2
Category
Average
Median
Range
Std.dev
Uncompressed
62.3
61
23
8.2
GZIP (compression level 9)
69.3
69
16
6.4
LZ4 (compression level 9)
72
71
20
7.5
LZMA (compression level 9)
71.3
72
15
6.2
TSLint Linter Definition (Multi-rule)
Serialization Format
Schema
Uncompressed
GZIP (compression level 9)
LZ4 (compression level 9)
LZMA (compression level 9)
ASN.1 (PER Unaligned)
schema.asn
4
24
23
27
Apache Avro (unframed)
schema.json
7
27
26
29
Microsoft Bond (Compact Binary v1)
schema.bond
17
34
36
36
Cap'n Proto (Binary Encoding)
schema.capnp
80
44
59
45
Cap'n Proto (Packed Encoding)
schema.capnp
23
37
42
41
FlatBuffers
schema.fbs
84
71
94
69
JSON BinPack (Schema-driven)
schema.json
1
21
20
24
Protocol Buffers (Binary Wire Format)
schema.proto
14
34
33
36
Apache Thrift (Compact Protocol)
schema.thrift
14
31
33
34
JSON
None
98
90
99
92
BSON
None
104
99
109
100
CBOR
None
68
80
87
81
FlexBuffers
None
102
106
116
109
JSON BinPack (Schema-less)
schema.json
68
80
87
82
MessagePack
None
68
81
87
82
Smile
None
78
88
92
92
UBJSON
None
80
84
94
89
Category
Average
Median
Range
Std.dev
Uncompressed
27.1
14
83
30.0
GZIP (compression level 9)
35.9
34
50
14.0
LZ4 (compression level 9)
40.7
33
74
21.8
LZMA (compression level 9)
37.9
36
45
12.7
Category
Average
Median
Range
Std.dev
Uncompressed
81.1
78
36
14.6
GZIP (compression level 9)
88.3
84
26
9.5
LZ4 (compression level 9)
96
92
29
10.9
LZMA (compression level 9)
90.7
89
28
9.8
The benchmark has only been ran on macOS and GNU/Linux. The following
dependencies must be available in order to locally run the benchmark:
GNU Make
Awk
CMake
Clojure's clj
command line tool
Python 3 and pip
Node.js
clang
gzip
XZ Utils
xxd
jq
Build the project dependencies by running the following command:
The benchmark can then be ran locally using the following command:
Running the benchmark including the ASN.1 serialization formats requires
setting the ASN1STEP
variable to the path to a license-activated asn1step
instance. For example:
make all ASN1STEP=/Applications/asn1step/asn1step/macosx-x86-64.trial/10.0.2/bin/asn1step
This work is released under the Apache-2.0 license.