Skip to content
Shawn edited this page Oct 8, 2023 · 69 revisions

Test Platform

OS:Mac OS X
JVM:Oracle Corporation 11.0.19
CPU:2.6 GHz 6-Core Intel Core i7 os-arch:Darwin Kernel Version 21.6.0
Cores (incl HT):12

Disclaimer

This test focusses on en/decoding of a cyclefree data structure, but the featureset of the libraries compared differs a lot:

  • some serializers support cycle detection/object sharing others just write non-cyclic tree structures

  • some include full metadata in serialized output, some don’t

  • some are cross platform, some are language specific

  • some are text based, some are binary,

  • some support versioning forward/backward, both, some don’t

(See ToolBehavior)
Other test data will yield different results (e.g. adding a non ascii char to every string :-) ). However the results give a raw estimation of library performance.

Serializers (no shared refs)

Benchmarks serializers

  • Only cycle free tree structures. An object referenced twice will be serialized twice.

  • no manual optimizations.

  • schema is known in advance (pre registration or even class generation). (Not all might make use of that)

Ser Time+Deser Time (ns)


Size, Compressed size [light] in bytes


                                   create     ser   deser   total   size  dfl
fury-fastest 59 220 222 442 278 165
fury 56 269 239 508 257 163
fury-auto-flat 53 282 264 547 293 198
colfer 65 275 357 633 241 152
json-array/dsl-json/databind 48 511 664 1175 296 187
protostuff 83 608 653 1261 242 153
fst-flat-pre 58 618 766 1384 254 168
protobuf 198 875 527 1402 242 152
kryo-registered-flat 52 740 735 1476 218 140
thrift-compact 78 840 643 1483 243 152
json/dsl-json/databind 47 565 1082 1647 488 271
msgpack/databind 51 564 1182 1746 236 150
json-array/fastjson/databind 50 921 836 1756 284 171
thrift 77 1315 626 1942 352 201
kryo-auto-flat 51 917 1044 1960 273 184
smile-col/jackson/databind 48 817 1177 1994 255 168
flatbuffers 48 1445 679 2124 424 234
cbor-col/jackson/databind 52 851 1305 2156 252 165
capnproto 49 1397 839 2236 400 210
avro-fastserde-generic 344 1321 1049 2371 224 136
avro-generic 370 1380 1050 2430 224 136
protobuf/jackson
afterburner/databind 53 1044 1403 2446 242 151
avro-specific 82 1248 1229 2477 224 136
json-col/jackson/databind 50 1049 1458 2507 296 187
cbor/jackson+afterburner/databind 48 1044 1496 2540 398 251
smile/jackson+afterburner/databind 54 1153 1409 2561 355 259
avro-fastserde-specific 83 1241 1406 2647 224 136
json/fastjson/databind 47 1324 1456 2780 489 271
smile/jackson/databind 49 1204 1683 2887 341 248
protobuf/jackson/databind 48 1174 1742 2916 242 151
cbor/jackson/databind 50 1138 1824 2962 398 251
json/jackson+afterburner/databind 51 1264 1699 2963 488 271
json/jackson-jr/databind 48 1368 1898 3266 471 263
json/jackson/databind 49 1344 2053 3397 488 271
json/protostuff-runtime 52 1558 1998 3556 472 252
xml/jackson/databind 48 2953 4978 7931 686 296
json/gson/databind 47 4657 4021 8677 489 268
xml/xstream+c 50 4965 10348 15313 490 253
json/javax-tree/glassfish 1250 6867 10764 17631 488 273
xml/exi-manual 48 12710 11167 23877 340 331
java-built-in 57 5357 29617 34974 892 520
json/protobuf 210 6494 60857 67351 500 262
json/json-lib/databind 54 22379 65114 87493 488 273

Full Object Graph Serializers

Contains serializer(-configurations)

  • supporting full object graph write/read. Object graph may contain cycles. If an Object is referenced twice, it will be so after deserialization.

  • nothing is known in advance, no class generation, no preregistering of classes. Everything is captured at runtime using e.g. reflection.

  • note this usually cannot be used cross language, however JSON/XML formats may enable cross language deserialization.

Ser Time+Deser Time (ns)


Size, Compressed size [light] in bytes


                                   create     ser   deser   total   size  +dfl
fury-registered 53 896 317 1212 259 165
fury-auto 55 963 340 1303 295 200
protostuff-graph 78 1007 679 1686 242 153
protostuff-graph-runtime 48 1096 734 1830 244 154
fst 53 2073 1739 3813 319 208
jboss-marshalling-river-ct 49 2724 1660 4384 301 203
kryo-registered 52 3782 1193 4974 236 153
kryo-auto 51 3651 1500 5151 291 198
hessian 51 3619 5434 9053 504 319
jboss-marshalling-river 53 3954 6729 10682 608 395
jboss-serialization 47 6357 6076 12433 935 587
jboss-marshalling-serial 51 8568 9701 18269 859 503
json/flexjson/databind 47 11461 23434 34895 506 282
java-built-in-serializer 53 5491 32069 37560 892 520
stephenerialization 68 7564 38477 46041 1096 522

Cross Lang Binary Serializers

Contains serializer(-configurations)

  • Only cycle free tree structures. An object referenced twice will be serialized twice.

  • schema is known in advance (pre registration, intermediate message description languages, class generation).

Ser Time+Deser Time (ns)


Size, Compressed size [light] in bytes


                                   create     ser   deser   total   size  +dfl
colfer 65 275 357 633 241 152
protobuf/protostuff 78 606 642 1248 242 152
protobuf/protostuff-runtime 50 696 689 1385 244 153
protobuf 198 875 527 1402 242 152
thrift-compact 78 840 643 1483 243 152
msgpack/databind 51 564 1182 1746 236 150
thrift 77 1315 626 1942 352 201
flatbuffers 48 1445 679 2124 424 234
capnproto 49 1397 839 2236 400 210
avro-fastserde-generic 344 1321 1049 2371 224 136
avro-generic 370 1380 1050 2430 224 136
avro-specific 82 1248 1229 2477 224 136
avro-fastserde-specific 83 1241 1406 2647 224 136
cbor/jackson/databind 50 1138 1824 2962 398 251
hessian 51 3619 5434 9053 504 319

XML/JSon Serializers

  • text format based. Usually can be read by anybody. Frequently inline schema inside data.
  • Mixed regarding required preparation, object graph awareness (references).

Ser Time+Deser Time (ns)


Size, Compressed size [light] in bytes


                                   create     ser   deser   total   size  dfl
json-array/dsl-json/databind 48 511 664 1175 296 187
json/dsl-json/databind 47 565 1082 1647 488 271
json-array/fastjson/databind 50 921 836 1756 284 171
smile-col/jackson/databind 48 817 1177 1994 255 168
cbor-col/jackson/databind 52 851 1305 2156 252 165
json-col/jackson/databind 50 1049 1458 2507 296 187
json/fastjson/databind 47 1324 1456 2780 489 271
json/jackson-jr/databind 48 1368 1898 3266 471 263
json/jackson/databind 49 1344 2053 3397 488 271
json/protostuff-runtime 52 1558 1998 3556 472 252
xml/jackson/databind 48 2953 4978 7931 686 296
json/gson/databind 47 4657 4021 8677 489 268
xml/xstream
c 50 4965 10348 15313 490 253
json/javax-tree/glassfish 1250 6867 10764 17631 488 273
xml/exi-manual 48 12710 11167 23877 340 331
json/flexjson/databind 47 11461 23434 34895 506 282
json/protobuf 210 6494 60857 67351 500 262
json/json-lib/databind 54 22379 65114 87493 488 273

Manually optimized Serializers

all flavours of manually optimized serializers. Handcoded and hardwired to exactly the benchmark’s message structures.

  • illustrates what’s possible, at what level generic approaches can be optimized in case

Ser Time+Deser Time (ns)


Size, Compressed size [light] in bytes


                                   create     ser   deser   total   size  dfl
datakernel 59 427 435 861 228 137
kryo-manual 55 472 483 955 213 136
protostuff-manual 49 567 632 1199 242 153
wobly-compact 38 768 507 1274 228 143
wobly 38 653 672 1325 254 155
kryo-opt 49 656 700 1357 215 136
java-manual 51 917 715 1632 258 151
msgpack/manual 51 595 1143 1738 236 150
avro-specific-manual 80 1180 1049 2228 224 136
cbor/jackson/manual 48 913 1351 2264 389 245
avro-fastserde-generic-manual 326 1278 1010 2288 224 136
avro-generic-manual 339 1349 956 2305 224 136
smile/jackson/manual 48 1126 1207 2334 344 252
jboss-marshalling-river-ct-manual 50 1636 957 2594 292 171
avro-fastserde-specific-manual 83 1265 1427 2693 224 136
json/jackson/manual 49 1076 1648 2724 471 262
json/protostuff-manual 48 1355 1916 3271 452 242
xml/aalto-manual 48 2097 2735 4832 656 314
jboss-marshalling-river-manual 55 1632 4663 6295 484 245
json/gson/manual 48 3283 3545 6828 471 262
xml/woodstox-manual 49 2559 4390 6949 656 314
bson/mongodb/manual 48 2434 6087 8521 498 286
json/json-smart/manual-tree 49 5132 3938 9071 498 274
json/gson/manual-tree 49 5050 5262 10312 488 268
xml/xstream
c-aalto 48 3476 8101 11576 528 282
xml/fastinfo-manual 49 8087 4404 12490 380 290
xml/xstream+c-fastinfo 49 6537 6571 13108 348 271
xml/xstream+c-woodstox 48 3998 9279 13277 528 282
xml/javolution/manual 48 4668 8880 13547 507 273
json/org.json/manual-tree 49 6207 7365 13572 488 268
json/javax-stream/glassfish 47 4767 9133 13900 471 262
json/json.simple/manual 48 6280 8049 14330 498 274
json/svenson/databind 48 3559 10801 14361 501 271
json/argo/manual-tree 49 13444 14802 28247 488 273
json/jsonij/manual-jpath 48 18476 10616 29092 484 261

Cost of features

shows performance vs convenience of manually-selected libs.

  • cycle free, schema known at compile time, manual optimization: kryo-manual, msgpack/manual

  • cycle free, schema known at compile time: protostuff, fst-flat-pre, kryo-flat-pre. (note: protostuff uses class generation while the other two just require a list of classes to be written)

  • cycle free, schema UNKNOWN at compile time: fst-flat, kryo-flat, protostuff-runtime, msgpack/databind

  • full object graph awareness, schema UNKNOWN at compile time: fst, kryo.

Ser Time+Deser Time (ns)


Size, Compressed size [light] in bytes


                                   create     ser   deser   total   size  +dfl
kryo-manual 55 472 483 955 213 136
protostuff 83 608 653 1261 242 153
fst-flat-pre 58 618 766 1384 254 168
protostuff-runtime 48 746 642 1389 244 154
msgpack/manual 51 595 1143 1738 236 150
msgpack/databind 51 564 1182 1746 236 150
fst-flat 50 1055 1323 2377 317 207
fst 53 2073 1739 3813 319 208

Full data

                                   create     ser   deser   total   size  +dfl
fury-fastest                           59     220     222     442    278   165
fury                                   56     269     239     508    257   163
fury-auto-flat                         53     282     264     547    293   198
colfer                                 65     275     357     633    241   152
datakernel                             59     427     435     861    228   137
kryo-manual                            55     472     483     955    213   136
json-array/dsl-json/databind           48     511     664    1175    296   187
protostuff-manual                      49     567     632    1199    242   153
fury-registered                        53     896     317    1212    259   165
protobuf/protostuff                    78     606     642    1248    242   152
protostuff                             83     608     653    1261    242   153
wobly-compact                          38     768     507    1274    228   143
fury-auto                              55     963     340    1303    295   200
wobly                                  38     653     672    1325    254   155
kryo-opt                               49     656     700    1357    215   136
fst-flat-pre                           58     618     766    1384    254   168
protobuf/protostuff-runtime            50     696     689    1385    244   153
protostuff-runtime                     48     746     642    1389    244   154
protobuf                              198     875     527    1402    242   152
kryo-registered-flat                   52     740     735    1476    218   140
thrift-compact                         78     840     643    1483    243   152
java-manual                            51     917     715    1632    258   151
json/dsl-json/databind                 47     565    1082    1647    488   271
protostuff-graph                       78    1007     679    1686    242   153
msgpack/manual                         51     595    1143    1738    236   150
msgpack/databind                       51     564    1182    1746    236   150
json-array/fastjson/databind           50     921     836    1756    284   171
protostuff-graph-runtime               48    1096     734    1830    244   154
thrift                                 77    1315     626    1942    352   201
kryo-auto-flat                         51     917    1044    1960    273   184
smile-col/jackson/databind             48     817    1177    1994    255   168
flatbuffers                            48    1445     679    2124    424   234
cbor-col/jackson/databind              52     851    1305    2156    252   165
avro-specific-manual                   80    1180    1049    2228    224   136
capnproto                              49    1397     839    2236    400   210
cbor/jackson/manual                    48     913    1351    2264    389   245
avro-fastserde-generic-manual         326    1278    1010    2288    224   136
avro-generic-manual                   339    1349     956    2305    224   136
smile/jackson/manual                   48    1126    1207    2334    344   252
avro-fastserde-generic                344    1321    1049    2371    224   136
fst-flat                               50    1055    1323    2377    317   207
avro-generic                          370    1380    1050    2430    224   136
protobuf/jackson+afterburner/databind     53    1044    1403    2446    242   151
avro-specific                          82    1248    1229    2477    224   136
json-col/jackson/databind              50    1049    1458    2507    296   187
cbor/jackson+afterburner/databind      48    1044    1496    2540    398   251
smile/jackson+afterburner/databind     54    1153    1409    2561    355   259
jboss-marshalling-river-ct-manual      50    1636     957    2594    292   171
avro-fastserde-specific                83    1241    1406    2647    224   136
avro-fastserde-specific-manual         83    1265    1427    2693    224   136
json/jackson/manual                    49    1076    1648    2724    471   262
json/fastjson/databind                 47    1324    1456    2780    489   271
smile/jackson/databind                 49    1204    1683    2887    341   248
protobuf/jackson/databind              48    1174    1742    2916    242   151
cbor/jackson/databind                  50    1138    1824    2962    398   251
json/jackson+afterburner/databind      51    1264    1699    2963    488   271
json/jackson-jr/databind               48    1368    1898    3266    471   263
json/protostuff-manual                 48    1355    1916    3271    452   242
json/jackson/databind                  49    1344    2053    3397    488   271
json/protostuff-runtime                52    1558    1998    3556    472   252
fst                                    53    2073    1739    3813    319   208
jboss-marshalling-river-ct             49    2724    1660    4384    301   203
xml/aalto-manual                       48    2097    2735    4832    656   314
kryo-registered                        52    3782    1193    4974    236   153
kryo-auto                              51    3651    1500    5151    291   198
jboss-marshalling-river-manual         55    1632    4663    6295    484   245
json/gson/manual                       48    3283    3545    6828    471   262
xml/woodstox-manual                    49    2559    4390    6949    656   314
xml/jackson/databind                   48    2953    4978    7931    686   296
bson/mongodb/manual                    48    2434    6087    8521    498   286
json/gson/databind                     47    4657    4021    8677    489   268
hessian                                51    3619    5434    9053    504   319
json/json-smart/manual-tree            49    5132    3938    9071    498   274
json/gson/manual-tree                  49    5050    5262   10312    488   268
jboss-marshalling-river                53    3954    6729   10682    608   395
xml/xstream+c-aalto                    48    3476    8101   11576    528   282
jboss-serialization                    47    6357    6076   12433    935   587
xml/fastinfo-manual                    49    8087    4404   12490    380   290
xml/xstream+c-fastinfo                 49    6537    6571   13108    348   271
xml/xstream+c-woodstox                 48    3998    9279   13277    528   282
xml/javolution/manual                  48    4668    8880   13547    507   273
json/org.json/manual-tree              49    6207    7365   13572    488   268
json/javax-stream/glassfish            47    4767    9133   13900    471   262
json/json.simple/manual                48    6280    8049   14330    498   274
json/svenson/databind                  48    3559   10801   14361    501   271
xml/xstream+c                          50    4965   10348   15313    490   253
json/javax-tree/glassfish            1250    6867   10764   17631    488   273
jboss-marshalling-serial               51    8568    9701   18269    859   503
xml/exi-manual                         48   12710   11167   23877    340   331
json/argo/manual-tree                  49   13444   14802   28247    488   273
json/jsonij/manual-jpath               48   18476   10616   29092    484   261
json/flexjson/databind                 47   11461   23434   34895    506   282
java-built-in                          57    5357   29617   34974    892   520
java-built-in-serializer               53    5491   32069   37560    892   520
stephenerialization                    68    7564   38477   46041   1096   522
json/protobuf                         210    6494   60857   67351    500   262
json/json-lib/databind                 54   22379   65114   87493    488   273
                                   Effort          Format         Structure  Misc
fury-fastest                       CLASSES_KNOWN   BINARY         FLAT_TREE  [] class registration, no references, no compression (fastest)
fury                               CLASSES_KNOWN   BINARY         FLAT_TREE  [] class registration, no references (typical usage)        
fury-auto-flat                     ZERO_KNOWLEDGE  BINARY         FLAT_TREE  [] no class registration, no references                     
colfer                             CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  [] generated code                                           
datakernel                         MANUAL_OPT      BINARY         FLAT_TREE  [] manually optimized                                       
kryo-manual                        MANUAL_OPT      BINARY         FLAT_TREE  [] complete manual optimization                             
json-array/dsl-json/databind       CLASSES_KNOWN   JSON           FLAT_TREE  [] JSON array format - all properties without names.        
protostuff-manual                  MANUAL_OPT      BINARY         FLAT_TREE  [] manual                                                   
fury-registered                    CLASSES_KNOWN   BINARY         FULL_GRAPH [] class registration, references (typical usage)           
protobuf/protostuff                CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  [] protobuf + generated code                                
protostuff                         CLASSES_KNOWN   BINARY         FLAT_TREE  [] generated code                                           
wobly-compact                      MANUAL_OPT      BINARY         FLAT_TREE  []                                                          
fury-auto                          ZERO_KNOWLEDGE  BINARY         FULL_GRAPH [] no class registration, references                        
wobly                              MANUAL_OPT      BINARY         FLAT_TREE  []                                                          
kryo-opt                           MANUAL_OPT      BINARY         FLAT_TREE  [] manual optimization                                      
fst-flat-pre                       CLASSES_KNOWN   BINARY         FLAT_TREE  [] fst in unshared mode with preregistered classes          
protobuf/protostuff-runtime        ZERO_KNOWLEDGE  BIN_CROSSLANG  FLAT_TREE  [] protobuf + reflection                                    
protostuff-runtime                 ZERO_KNOWLEDGE  BINARY         FLAT_TREE  [] reflection                                               
protobuf                           CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  []                                                          
kryo-registered-flat               CLASSES_KNOWN   BINARY         FLAT_TREE  [] class registration, no references (typical usage)        
thrift-compact                     CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  []                                                          
java-manual                        MANUAL_OPT      BINARY         FLAT_TREE  []                                                          
json/dsl-json/databind             CLASSES_KNOWN   JSON           FLAT_TREE  [] Serializes all properties with exact names.              
protostuff-graph                   CLASSES_KNOWN   BINARY         FULL_GRAPH [] graph + generated code                                   
msgpack/manual                     MANUAL_OPT      BIN_CROSSLANG  FLAT_TREE  [] uses positional (column) layout (instead of Maps std impl uses) to eliminate use of names
msgpack/databind                   CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  [] uses positional (column) layout (instead of Maps std impl uses) to eliminate use of names
json-array/fastjson/databind       ZERO_KNOWLEDGE  JSON           FLAT_TREE  []                                                          
protostuff-graph-runtime           ZERO_KNOWLEDGE  BINARY         FULL_GRAPH [] graph + reflection                                       
thrift                             CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  []                                                          
kryo-auto-flat                     ZERO_KNOWLEDGE  BINARY         FLAT_TREE  [] no class registration, no references                     
smile-col/jackson/databind         ZERO_KNOWLEDGE  JSON           FLAT_TREE  [] uses positional (column) layout to eliminate use of names
flatbuffers                        CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  []                                                          
cbor-col/jackson/databind          ZERO_KNOWLEDGE  JSON           FLAT_TREE  [] uses positional (column) layout to eliminate use of names
avro-specific-manual               MANUAL_OPT      BIN_CROSSLANG  FLAT_TREE  [VERSIONING_BACKWARD_COMPATIBLE, VERSIONING_FORWARD_COMPATIBLE, VERSIONING_MISMATCH_DETECTION] 
capnproto                          CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  []                                                          
cbor/jackson/manual                MANUAL_OPT      BIN_CROSSLANG  FLAT_TREE  []                                                          
avro-fastserde-generic-manual      MANUAL_OPT      BIN_CROSSLANG  FLAT_TREE  [VERSIONING_BACKWARD_COMPATIBLE, VERSIONING_FORWARD_COMPATIBLE, VERSIONING_MISMATCH_DETECTION] 
avro-generic-manual                MANUAL_OPT      BIN_CROSSLANG  FLAT_TREE  [VERSIONING_BACKWARD_COMPATIBLE, VERSIONING_FORWARD_COMPATIBLE, VERSIONING_MISMATCH_DETECTION] 
smile/jackson/manual               MANUAL_OPT      BINARY         FLAT_TREE  []                                                          
avro-fastserde-generic             CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  [VERSIONING_BACKWARD_COMPATIBLE, VERSIONING_FORWARD_COMPATIBLE, VERSIONING_MISMATCH_DETECTION] 
fst-flat                           ZERO_KNOWLEDGE  BINARY         FLAT_TREE  [] fst default, but unshared mode                           
avro-generic                       CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  [VERSIONING_BACKWARD_COMPATIBLE, VERSIONING_FORWARD_COMPATIBLE, VERSIONING_MISMATCH_DETECTION] 
protobuf/jackson+afterburner/databind CLASSES_KNOWN   BINARY         FLAT_TREE  []                                                          
avro-specific                      CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  [VERSIONING_BACKWARD_COMPATIBLE, VERSIONING_FORWARD_COMPATIBLE, VERSIONING_MISMATCH_DETECTION] 
json-col/jackson/databind          ZERO_KNOWLEDGE  JSON           FLAT_TREE  [] uses positional (column) layout to eliminate use of names
cbor/jackson+afterburner/databind  ZERO_KNOWLEDGE  BINARY         FLAT_TREE  [] uses bytecode generation to reduce overhead              
smile/jackson+afterburner/databind ZERO_KNOWLEDGE  BINARY         FLAT_TREE  [] uses bytecode generation to reduce overhead              
jboss-marshalling-river-ct-manual  MANUAL_OPT      BINARY         FULL_GRAPH [] full graph preregistered classes, manual optimization    
avro-fastserde-specific            CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  [VERSIONING_BACKWARD_COMPATIBLE, VERSIONING_FORWARD_COMPATIBLE, VERSIONING_MISMATCH_DETECTION] 
avro-fastserde-specific-manual     MANUAL_OPT      BIN_CROSSLANG  FLAT_TREE  [VERSIONING_BACKWARD_COMPATIBLE, VERSIONING_FORWARD_COMPATIBLE, VERSIONING_MISMATCH_DETECTION] 
json/jackson/manual                MANUAL_OPT      JSON           FLAT_TREE  []                                                          
json/fastjson/databind             ZERO_KNOWLEDGE  JSON           FLAT_TREE  []                                                          
smile/jackson/databind             ZERO_KNOWLEDGE  BINARY         FLAT_TREE  []                                                          
protobuf/jackson/databind          CLASSES_KNOWN   BINARY         FLAT_TREE  []                                                          
cbor/jackson/databind              ZERO_KNOWLEDGE  BIN_CROSSLANG  FLAT_TREE  []                                                          
json/jackson+afterburner/databind  ZERO_KNOWLEDGE  BINARY         FLAT_TREE  [] uses bytecode generation to reduce overhead              
json/jackson-jr/databind           ZERO_KNOWLEDGE  JSON           FLAT_TREE  []                                                          
json/protostuff-manual             MANUAL_OPT      JSON           FLAT_TREE  [] json + manual                                            
json/jackson/databind              ZERO_KNOWLEDGE  JSON           FLAT_TREE  []                                                          
json/protostuff-runtime            ZERO_KNOWLEDGE  JSON           FLAT_TREE  [] json + reflection                                        
fst                                ZERO_KNOWLEDGE  BINARY         FULL_GRAPH [] default: JDK serialization drop-in-replacement mode      
jboss-marshalling-river-ct         CLASSES_KNOWN   BINARY         FULL_GRAPH [] full graph with preregistered classes                    
xml/aalto-manual                   MANUAL_OPT      XML            UNKNOWN    []                                                          
kryo-registered                    CLASSES_KNOWN   BINARY         FULL_GRAPH [] class registration, references (typical usage)           
kryo-auto                          ZERO_KNOWLEDGE  BINARY         FULL_GRAPH [] no class registration, references                        
jboss-marshalling-river-manual     MANUAL_OPT      BINARY         FULL_GRAPH [] full graph with manual optimizations                     
json/gson/manual                   MANUAL_OPT      JSON           FLAT_TREE  []                                                          
xml/woodstox-manual                MANUAL_OPT      XML            UNKNOWN    []                                                          
xml/jackson/databind               ZERO_KNOWLEDGE  XML            FLAT_TREE  []                                                          
bson/mongodb/manual                MANUAL_OPT      BIN_CROSSLANG  FLAT_TREE  []                                                          
json/gson/databind                 ZERO_KNOWLEDGE  JSON           FLAT_TREE  []                                                          
hessian                            ZERO_KNOWLEDGE  BIN_CROSSLANG  FULL_GRAPH []                                                          
json/json-smart/manual-tree        MANUAL_OPT      JSON           FLAT_TREE  []                                                          
json/gson/manual-tree              MANUAL_OPT      JSON           FLAT_TREE  []                                                          
jboss-marshalling-river            ZERO_KNOWLEDGE  BINARY         FULL_GRAPH [] full graph zero knowledge                                
xml/xstream+c-aalto                MANUAL_OPT      XML            FLAT_TREE  []                                                          
jboss-serialization                ZERO_KNOWLEDGE  BINARY         FULL_GRAPH []                                                          
xml/fastinfo-manual                MANUAL_OPT      XML            UNKNOWN    []                                                          
xml/xstream+c-fastinfo             MANUAL_OPT      XML            FLAT_TREE  []                                                          
xml/xstream+c-woodstox             MANUAL_OPT      XML            FLAT_TREE  []                                                          
xml/javolution/manual              MANUAL_OPT      XML            FLAT_TREE  []                                                          
json/org.json/manual-tree          MANUAL_OPT      JSON           FLAT_TREE  []                                                          
json/javax-stream/glassfish        MANUAL_OPT      JSON           FLAT_TREE  []                                                          
json/json.simple/manual            MANUAL_OPT      JSON           FLAT_TREE  []                                                          
json/svenson/databind              MANUAL_OPT      JSON           FLAT_TREE  []                                                          
xml/xstream+c                      ZERO_KNOWLEDGE  XML            FLAT_TREE  []                                                          
json/javax-tree/glassfish          ZERO_KNOWLEDGE  JSON           FLAT_TREE  []                                                          
jboss-marshalling-serial           ZERO_KNOWLEDGE  BINARY         FULL_GRAPH []                                                          
xml/exi-manual                     ZERO_KNOWLEDGE  XML            UNKNOWN    []                                                          
json/argo/manual-tree              MANUAL_OPT      JSON           FLAT_TREE  []                                                          
json/jsonij/manual-jpath           MANUAL_OPT      JSON           FLAT_TREE  []                                                          
json/flexjson/databind             ZERO_KNOWLEDGE  JSON           FULL_GRAPH []                                                          
java-built-in                      ZERO_KNOWLEDGE  BINARY         FLAT_TREE  []                                                          
java-built-in-serializer           ZERO_KNOWLEDGE  BINARY         FULL_GRAPH []                                                          
stephenerialization                ZERO_KNOWLEDGE  BINARY         FULL_GRAPH [] null                                                     
json/protobuf                      CLASSES_KNOWN   JSON           FLAT_TREE  []                                                          
json/json-lib/databind             ZERO_KNOWLEDGE  JSON           FLAT_TREE  []