Skip to content

A large-scale space-efficiency benchmark of JSON-compatible binary serialization formats involving representative real-world JSON documents

License

Notifications You must be signed in to change notification settings

TrellixVulnTeam/binary-json-size-benchmark_IV7K

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

title permalink
Benchmark
/

DOI

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.

JSON documents

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.

Name Type Document SchemaStore
CircleCI Definition (Blank) tier 1 minified < 100 bytes numeric non-redundant flat Link Link
CircleCI Matrix Definition tier 1 minified < 100 bytes numeric non-redundant nested Link Link
CommitLint Configuration tier 1 minified < 100 bytes textual redundant nested Link Link
CommitLint Configuration (Basic) tier 1 minified < 100 bytes boolean non-redundant flat Link Link
Entry Point Regulation Manifest tier 2 minified >= 100 < 1000 bytes textual redundant nested Link Link
ESLint Configuration Document tier 3 minified >= 1000 bytes numeric redundant flat Link Link
ECMAScript Module Loader Definition tier 2 minified >= 100 < 1000 bytes boolean non-redundant flat Link Link
GeoJSON Example Document tier 2 minified >= 100 < 1000 bytes numeric redundant nested Link Link
GitHub FUNDING Sponsorship Definition (Empty) tier 2 minified >= 100 < 1000 bytes boolean redundant flat Link Link
GitHub Workflow Definition tier 2 minified >= 100 < 1000 bytes textual non-redundant nested Link Link
Grunt.js Clean Task Definition tier 1 minified < 100 bytes textual redundant flat Link Link
ImageOptimizer Azure Webjob Configuration tier 1 minified < 100 bytes textual non-redundant nested Link Link
JSON-e Templating Engine Reverse Sort Example tier 1 minified < 100 bytes numeric redundant nested Link Link
JSON-e Templating Engine Sort Example tier 1 minified < 100 bytes numeric redundant flat Link Link
JSON Feed Example Document tier 2 minified >= 100 < 1000 bytes textual non-redundant flat Link Link
JSON Resume Example tier 3 minified >= 1000 bytes textual non-redundant nested Link Link
.NET Core Project tier 3 minified >= 1000 bytes textual redundant nested Link Link
Nightwatch.js Test Framework Configuration tier 3 minified >= 1000 bytes boolean redundant flat Link Link
OpenWeatherMap API Example Document tier 2 minified >= 100 < 1000 bytes numeric non-redundant flat Link Link
OpenWeather Road Risk API Example tier 2 minified >= 100 < 1000 bytes numeric non-redundant nested Link Link
NPM Package.json Example Manifest tier 3 minified >= 1000 bytes textual non-redundant flat Link Link
NPM Package.json Linter Configuration Manifest tier 3 minified >= 1000 bytes textual redundant flat Link Link
SAP Cloud SDK Continuous Delivery Toolkit Configuration tier 1 minified < 100 bytes boolean redundant flat Link Link
TravisCI Notifications Configuration tier 2 minified >= 100 < 1000 bytes textual redundant flat Link Link
TSLint Linter Definition (Basic) tier 1 minified < 100 bytes boolean non-redundant nested Link Link
TSLint Linter Definition (Extends Only) tier 1 minified < 100 bytes textual non-redundant flat Link Link
TSLint Linter Definition (Multi-rule) tier 1 minified < 100 bytes boolean redundant nested Link Link

Serialization formats

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

Results

CircleCI Definition (Blank)

CircleCI Definition (Blank) chart

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

Schema-driven statistics

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

Schema-less statistics

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 Definition (Blank) box plot

CircleCI Matrix Definition

CircleCI Matrix Definition chart

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

Schema-driven statistics

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

Schema-less statistics

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

CircleCI Matrix Definition box plot

CommitLint Configuration

CommitLint Configuration chart

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

Schema-driven statistics

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

Schema-less statistics

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 box plot

CommitLint Configuration (Basic)

CommitLint Configuration (Basic) chart

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

Schema-driven statistics

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

Schema-less statistics

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

CommitLint Configuration (Basic) box plot

Entry Point Regulation Manifest

Entry Point Regulation Manifest chart

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

Schema-driven statistics

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

Schema-less statistics

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

Entry Point Regulation Manifest box plot

ESLint Configuration Document

ESLint Configuration Document chart

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

Schema-driven statistics

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

Schema-less statistics

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

ESLint Configuration Document box plot

ECMAScript Module Loader Definition

ECMAScript Module Loader Definition chart

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

Schema-driven statistics

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

Schema-less statistics

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

ECMAScript Module Loader Definition box plot

GeoJSON Example Document

GeoJSON Example Document chart

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

Schema-driven statistics

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

Schema-less statistics

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

GeoJSON Example Document box plot

GitHub FUNDING Sponsorship Definition (Empty)

GitHub FUNDING Sponsorship Definition (Empty) chart

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

Schema-driven statistics

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

Schema-less statistics

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 FUNDING Sponsorship Definition (Empty) box plot

GitHub Workflow Definition

GitHub Workflow Definition chart

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

Schema-driven statistics

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

Schema-less statistics

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

GitHub Workflow Definition box plot

Grunt.js Clean Task Definition

Grunt.js Clean Task Definition chart

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

Schema-driven statistics

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

Schema-less statistics

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

Grunt.js Clean Task Definition box plot

ImageOptimizer Azure Webjob Configuration

ImageOptimizer Azure Webjob Configuration chart

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

Schema-driven statistics

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

Schema-less statistics

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

ImageOptimizer Azure Webjob Configuration box plot

JSON-e Templating Engine Reverse Sort Example

JSON-e Templating Engine Reverse Sort Example chart

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

Schema-driven statistics

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

Schema-less statistics

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 Reverse Sort Example box plot

JSON-e Templating Engine Sort Example

JSON-e Templating Engine Sort Example chart

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

Schema-driven statistics

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

Schema-less statistics

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-e Templating Engine Sort Example box plot

JSON Feed Example Document

JSON Feed Example Document chart

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

Schema-driven statistics

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

Schema-less statistics

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

JSON Feed Example Document box plot

JSON Resume Example

JSON Resume Example chart

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

Schema-driven statistics

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

Schema-less statistics

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

JSON Resume Example box plot

.NET Core Project

.NET Core Project chart

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

Schema-driven statistics

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

Schema-less statistics

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

.NET Core Project box plot

Nightwatch.js Test Framework Configuration

Nightwatch.js Test Framework Configuration chart

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

Schema-driven statistics

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

Schema-less statistics

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

Nightwatch.js Test Framework Configuration box plot

OpenWeatherMap API Example Document

OpenWeatherMap API Example Document chart

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

Schema-driven statistics

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

Schema-less statistics

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

OpenWeatherMap API Example Document box plot

OpenWeather Road Risk API Example

OpenWeather Road Risk API Example chart

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

Schema-driven statistics

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

Schema-less statistics

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

OpenWeather Road Risk API Example box plot

NPM Package.json Example Manifest

NPM Package.json Example Manifest chart

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

Schema-driven statistics

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

Schema-less statistics

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 Example Manifest box plot

NPM Package.json Linter Configuration Manifest

NPM Package.json Linter Configuration Manifest chart

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

Schema-driven statistics

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

Schema-less statistics

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

NPM Package.json Linter Configuration Manifest box plot

SAP Cloud SDK Continuous Delivery Toolkit Configuration

SAP Cloud SDK Continuous Delivery Toolkit Configuration chart

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

Schema-driven statistics

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

Schema-less statistics

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

SAP Cloud SDK Continuous Delivery Toolkit Configuration box plot

TravisCI Notifications Configuration

TravisCI Notifications Configuration chart

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

Schema-driven statistics

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

Schema-less statistics

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

TravisCI Notifications Configuration box plot

TSLint Linter Definition (Basic)

TSLint Linter Definition (Basic) chart

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

Schema-driven statistics

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

Schema-less statistics

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 (Basic) box plot

TSLint Linter Definition (Extends Only)

TSLint Linter Definition (Extends Only) chart

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

Schema-driven statistics

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

Schema-less statistics

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 (Extends Only) box plot

TSLint Linter Definition (Multi-rule)

TSLint Linter Definition (Multi-rule) chart

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

Schema-driven statistics

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

Schema-less statistics

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

TSLint Linter Definition (Multi-rule) box plot

Running locally

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:

make deps

The benchmark can then be ran locally using the following command:

make all

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

License

This work is released under the Apache-2.0 license.

About

A large-scale space-efficiency benchmark of JSON-compatible binary serialization formats involving representative real-world JSON documents

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 93.3%
  • Python 4.4%
  • Cap'n Proto 0.9%
  • Thrift 0.6%
  • Makefile 0.5%
  • JavaScript 0.2%
  • Other 0.1%