Skip to content

Newer Results on Different Hardware

Shawn edited this page Oct 8, 2023 · 2 revisions

(This is the benchmark for JDK8 on linux, the benchmark for JDK11 is done on macos to keep consist with previous hardware and the results are placed on wiki/Home)

Test Platform

OS:Linux
JVM:Oracle Corporation 1.8.0_331
CPU:null os-arch:null
Cores (incl HT):8

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 92 327 479 805 436 192
fury 85 475 608 1083 257 163
fury-auto-flat 84 498 607 1105 293 198
colfer 70 578 714 1292 241 152
json-array/dsl-json/databind 82 888 986 1874 296 187
kryo-registered-flat 86 1049 913 1962 218 140
protostuff 118 977 1059 2036 242 153
protobuf 435 1369 739 2107 242 152
fst-flat-pre 93 1081 1198 2278 254 168
json-array/fastjson/databind 85 1246 1237 2483 284 171
json/dsl-json/databind 85 994 1494 2487 488 271
kryo-auto-flat 87 1186 1321 2507 273 184
smile-col/jackson/databind 90 1278 1602 2880 255 168
cbor-col/jackson/databind 90 1202 1755 2956 252 165
msgpack/databind 86 1251 1726 2977 236 150
thrift-compact 139 1950 1144 3094 243 152
protobuf/jackson
afterburner/databind 84 1517 1663 3180 242 151
cbor/jackson+afterburner/databind 91 1424 1806 3230 398 251
thrift 127 2259 1057 3315 352 201
smile/jackson+afterburner/databind 85 1598 1813 3411 355 259
json-col/jackson/databind 85 1485 2017 3502 296 187
smile/jackson/databind 91 1725 2059 3785 341 248
flatbuffers 94 2331 1561 3892 424 234
json/fastjson/databind 87 1814 2124 3938 489 271
cbor/jackson/databind 88 1645 2393 4038 398 251
protobuf/jackson/databind 91 1831 2294 4126 242 151
avro-generic 483 2835 1339 4174 224 136
json/jackson+afterburner/databind 87 1860 2412 4272 488 271
avro-fastserde-generic 490 2854 1434 4288 224 136
avro-specific 135 2633 1973 4606 224 136
avro-fastserde-specific 137 2680 1965 4644 224 136
capnproto 88 3235 1527 4761 400 210
json/jackson/databind 87 2044 2877 4921 488 271
json/jackson-jr/databind 86 2237 2753 4990 471 263
json/protostuff-runtime 88 2354 2763 5116 472 252
xml/jackson/databind 106 3783 6593 10375 686 296
json/gson/databind 87 6910 5852 12762 489 268
xml/xstream+c 90 7861 21003 28864 490 253
xml/exi-manual 91 16349 15157 31506 340 331
json/javax-tree/glassfish 1640 14021 19699 33720 488 273
java-built-in 88 7748 31381 39129 892 520
json/protobuf 406 10518 75017 85535 500 262
json/json-lib/databind 84 38818 105345 144163 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 84 889 753 1643 259 165
fury-auto 92 919 769 1688 295 200
protostuff-graph 134 1224 1095 2319 242 153
protostuff-graph-runtime 85 1523 1157 2680 244 154
fst 84 2425 2173 4598 319 208
kryo-registered 85 3540 1490 5030 236 153
kryo-auto 88 3770 1941 5711 291 198
jboss-marshalling-river-ct 85 3624 2607 6230 301 203
hessian 89 5470 7268 12738 504 319
jboss-marshalling-river 92 5057 9811 14868 608 395
jboss-serialization 85 8503 8827 17330 935 587
jboss-marshalling-serial 90 10636 12370 23006 859 503
java-built-in-serializer 86 7711 31935 39646 892 520
stephenerialization 88 8253 33972 42225 1096 522
json/flexjson/databind 85 16463 27113 43576 506 282

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 70 578 714 1292 241 152
protobuf/protostuff 116 918 1140 2058 242 152
protobuf 435 1369 739 2107 242 152
protobuf/protostuff-runtime 83 1256 1056 2312 244 153
msgpack/databind 86 1251 1726 2977 236 150
thrift-compact 139 1950 1144 3094 243 152
thrift 127 2259 1057 3315 352 201
flatbuffers 94 2331 1561 3892 424 234
cbor/jackson/databind 88 1645 2393 4038 398 251
avro-generic 483 2835 1339 4174 224 136
avro-fastserde-generic 490 2854 1434 4288 224 136
avro-specific 135 2633 1973 4606 224 136
avro-fastserde-specific 137 2680 1965 4644 224 136
capnproto 88 3235 1527 4761 400 210
hessian 89 5470 7268 12738 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 82 888 986 1874 296 187
json-array/fastjson/databind 85 1246 1237 2483 284 171
json/dsl-json/databind 85 994 1494 2487 488 271
smile-col/jackson/databind 90 1278 1602 2880 255 168
cbor-col/jackson/databind 90 1202 1755 2956 252 165
json-col/jackson/databind 85 1485 2017 3502 296 187
json/fastjson/databind 87 1814 2124 3938 489 271
json/jackson/databind 87 2044 2877 4921 488 271
json/jackson-jr/databind 86 2237 2753 4990 471 263
json/protostuff-runtime 88 2354 2763 5116 472 252
xml/jackson/databind 106 3783 6593 10375 686 296
json/gson/databind 87 6910 5852 12762 489 268
xml/xstream
c 90 7861 21003 28864 490 253
xml/exi-manual 91 16349 15157 31506 340 331
json/javax-tree/glassfish 1640 14021 19699 33720 488 273
json/flexjson/databind 85 16463 27113 43576 506 282
json/protobuf 406 10518 75017 85535 500 262
json/json-lib/databind 84 38818 105345 144163 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
kryo-manual 85 707 655 1362 213 136
datakernel 103 930 824 1754 228 137
kryo-opt 86 960 947 1907 215 136
protostuff-manual 87 903 1140 2042 242 153
wobly 61 1250 874 2124 254 155
wobly-compact 56 1242 906 2148 228 143
java-manual 88 1611 1016 2627 258 151
cbor/jackson/manual 90 1278 1743 3021 389 245
smile/jackson/manual 91 1466 1567 3033 344 252
msgpack/manual 84 1325 1822 3147 236 150
json/jackson/manual 82 1771 1946 3717 471 262
jboss-marshalling-river-ct-manual 89 1992 1757 3750 292 171
avro-generic-manual 533 2730 1069 3798 224 136
avro-fastserde-generic-manual 621 2777 1024 3801 224 136
avro-specific-manual 132 2595 1539 4134 224 136
json/protostuff-manual 82 2012 2320 4332 452 242
avro-fastserde-specific-manual 141 2617 2005 4622 224 136
xml/aalto-manual 83 2984 3988 6972 656 314
jboss-marshalling-river-manual 88 2850 5902 8751 484 245
json/gson/manual 89 4490 4942 9432 471 262
xml/woodstox-manual 84 3930 5749 9679 656 314
json/json-smart/manual-tree 86 7244 5495 12739 498 274
json/gson/manual-tree 95 6858 7349 14207 488 268
xml/fastinfo-manual 88 7649 6980 14629 380 290
xml/javolution/manual 87 5556 9257 14813 507 273
xml/xstream
c-aalto 86 5021 10645 15666 528 282
xml/xstream+c-fastinfo 84 8465 8802 17267 348 271
bson/mongodb/manual 84 3552 14337 17889 498 286
xml/xstream+c-woodstox 87 6053 12559 18611 528 282
json/org.json/manual-tree 85 9952 11374 21326 488 268
json/json.simple/manual 83 9600 11823 21423 498 274
json/svenson/databind 83 6131 15532 21663 501 271
json/javax-stream/glassfish 96 10681 18651 29332 471 262
json/jsonij/manual-jpath 95 27365 14327 41692 484 264
json/argo/manual-tree 87 89115 18753 107868 488 273

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 85 707 655 1362 213 136
protostuff 118 977 1059 2036 242 153
fst-flat-pre 93 1081 1198 2278 254 168
protostuff-runtime 83 1280 1065 2345 244 154
msgpack/databind 86 1251 1726 2977 236 150
msgpack/manual 84 1325 1822 3147 236 150
fst-flat 99 1524 1801 3325 317 207
fst 84 2425 2173 4598 319 208

Full data

                                   create     ser   deser   total   size  +dfl
fury-fastest                           92     327     479     805    436   192
fury                                   85     475     608    1083    257   163
fury-auto-flat                         84     498     607    1105    293   198
colfer                                 70     578     714    1292    241   152
kryo-manual                            85     707     655    1362    213   136
fury-registered                        84     889     753    1643    259   165
fury-auto                              92     919     769    1688    295   200
datakernel                            103     930     824    1754    228   137
json-array/dsl-json/databind           82     888     986    1874    296   187
kryo-opt                               86     960     947    1907    215   136
kryo-registered-flat                   86    1049     913    1962    218   140
protostuff                            118     977    1059    2036    242   153
protostuff-manual                      87     903    1140    2042    242   153
protobuf/protostuff                   116     918    1140    2058    242   152
protobuf                              435    1369     739    2107    242   152
wobly                                  61    1250     874    2124    254   155
wobly-compact                          56    1242     906    2148    228   143
fst-flat-pre                           93    1081    1198    2278    254   168
protobuf/protostuff-runtime            83    1256    1056    2312    244   153
protostuff-graph                      134    1224    1095    2319    242   153
protostuff-runtime                     83    1280    1065    2345    244   154
json-array/fastjson/databind           85    1246    1237    2483    284   171
json/dsl-json/databind                 85     994    1494    2487    488   271
kryo-auto-flat                         87    1186    1321    2507    273   184
java-manual                            88    1611    1016    2627    258   151
protostuff-graph-runtime               85    1523    1157    2680    244   154
smile-col/jackson/databind             90    1278    1602    2880    255   168
cbor-col/jackson/databind              90    1202    1755    2956    252   165
msgpack/databind                       86    1251    1726    2977    236   150
cbor/jackson/manual                    90    1278    1743    3021    389   245
smile/jackson/manual                   91    1466    1567    3033    344   252
thrift-compact                        139    1950    1144    3094    243   152
msgpack/manual                         84    1325    1822    3147    236   150
protobuf/jackson+afterburner/databind     84    1517    1663    3180    242   151
cbor/jackson+afterburner/databind      91    1424    1806    3230    398   251
thrift                                127    2259    1057    3315    352   201
fst-flat                               99    1524    1801    3325    317   207
smile/jackson+afterburner/databind     85    1598    1813    3411    355   259
json-col/jackson/databind              85    1485    2017    3502    296   187
json/jackson/manual                    82    1771    1946    3717    471   262
jboss-marshalling-river-ct-manual      89    1992    1757    3750    292   171
smile/jackson/databind                 91    1725    2059    3785    341   248
avro-generic-manual                   533    2730    1069    3798    224   136
avro-fastserde-generic-manual         621    2777    1024    3801    224   136
flatbuffers                            94    2331    1561    3892    424   234
json/fastjson/databind                 87    1814    2124    3938    489   271
cbor/jackson/databind                  88    1645    2393    4038    398   251
protobuf/jackson/databind              91    1831    2294    4126    242   151
avro-specific-manual                  132    2595    1539    4134    224   136
avro-generic                          483    2835    1339    4174    224   136
json/jackson+afterburner/databind      87    1860    2412    4272    488   271
avro-fastserde-generic                490    2854    1434    4288    224   136
json/protostuff-manual                 82    2012    2320    4332    452   242
fst                                    84    2425    2173    4598    319   208
avro-specific                         135    2633    1973    4606    224   136
avro-fastserde-specific-manual        141    2617    2005    4622    224   136
avro-fastserde-specific               137    2680    1965    4644    224   136
capnproto                              88    3235    1527    4761    400   210
json/jackson/databind                  87    2044    2877    4921    488   271
json/jackson-jr/databind               86    2237    2753    4990    471   263
kryo-registered                        85    3540    1490    5030    236   153
json/protostuff-runtime                88    2354    2763    5116    472   252
kryo-auto                              88    3770    1941    5711    291   198
jboss-marshalling-river-ct             85    3624    2607    6230    301   203
xml/aalto-manual                       83    2984    3988    6972    656   314
jboss-marshalling-river-manual         88    2850    5902    8751    484   245
json/gson/manual                       89    4490    4942    9432    471   262
xml/woodstox-manual                    84    3930    5749    9679    656   314
xml/jackson/databind                  106    3783    6593   10375    686   296
hessian                                89    5470    7268   12738    504   319
json/json-smart/manual-tree            86    7244    5495   12739    498   274
json/gson/databind                     87    6910    5852   12762    489   268
json/gson/manual-tree                  95    6858    7349   14207    488   268
xml/fastinfo-manual                    88    7649    6980   14629    380   290
xml/javolution/manual                  87    5556    9257   14813    507   273
jboss-marshalling-river                92    5057    9811   14868    608   395
xml/xstream+c-aalto                    86    5021   10645   15666    528   282
xml/xstream+c-fastinfo                 84    8465    8802   17267    348   271
jboss-serialization                    85    8503    8827   17330    935   587
bson/mongodb/manual                    84    3552   14337   17889    498   286
xml/xstream+c-woodstox                 87    6053   12559   18611    528   282
json/org.json/manual-tree              85    9952   11374   21326    488   268
json/json.simple/manual                83    9600   11823   21423    498   274
json/svenson/databind                  83    6131   15532   21663    501   271
jboss-marshalling-serial               90   10636   12370   23006    859   503
xml/xstream+c                          90    7861   21003   28864    490   253
json/javax-stream/glassfish            96   10681   18651   29332    471   262
xml/exi-manual                         91   16349   15157   31506    340   331
json/javax-tree/glassfish            1640   14021   19699   33720    488   273
java-built-in                          88    7748   31381   39129    892   520
java-built-in-serializer               86    7711   31935   39646    892   520
json/jsonij/manual-jpath               95   27365   14327   41692    484   264
stephenerialization                    88    8253   33972   42225   1096   522
json/flexjson/databind                 85   16463   27113   43576    506   282
json/protobuf                         406   10518   75017   85535    500   262
json/argo/manual-tree                  87   89115   18753  107868    488   273
json/json-lib/databind                 84   38818  105345  144163    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                                           
kryo-manual                        MANUAL_OPT      BINARY         FLAT_TREE  [] complete manual optimization                             
fury-registered                    CLASSES_KNOWN   BINARY         FULL_GRAPH [] class registration, references (typical usage)           
fury-auto                          ZERO_KNOWLEDGE  BINARY         FULL_GRAPH [] no class registration, references                        
datakernel                         MANUAL_OPT      BINARY         FLAT_TREE  [] manually optimized                                       
json-array/dsl-json/databind       CLASSES_KNOWN   JSON           FLAT_TREE  [] JSON array format - all properties without names.        
kryo-opt                           MANUAL_OPT      BINARY         FLAT_TREE  [] manual optimization                                      
kryo-registered-flat               CLASSES_KNOWN   BINARY         FLAT_TREE  [] class registration, no references (typical usage)        
protostuff                         CLASSES_KNOWN   BINARY         FLAT_TREE  [] generated code                                           
protostuff-manual                  MANUAL_OPT      BINARY         FLAT_TREE  [] manual                                                   
protobuf/protostuff                CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  [] protobuf + generated code                                
protobuf                           CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  []                                                          
wobly                              MANUAL_OPT      BINARY         FLAT_TREE  []                                                          
wobly-compact                      MANUAL_OPT      BINARY         FLAT_TREE  []                                                          
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-graph                   CLASSES_KNOWN   BINARY         FULL_GRAPH [] graph + generated code                                   
protostuff-runtime                 ZERO_KNOWLEDGE  BINARY         FLAT_TREE  [] reflection                                               
json-array/fastjson/databind       ZERO_KNOWLEDGE  JSON           FLAT_TREE  []                                                          
json/dsl-json/databind             CLASSES_KNOWN   JSON           FLAT_TREE  [] Serializes all properties with exact names.              
kryo-auto-flat                     ZERO_KNOWLEDGE  BINARY         FLAT_TREE  [] no class registration, no references                     
java-manual                        MANUAL_OPT      BINARY         FLAT_TREE  []                                                          
protostuff-graph-runtime           ZERO_KNOWLEDGE  BINARY         FULL_GRAPH [] graph + reflection                                       
smile-col/jackson/databind         ZERO_KNOWLEDGE  JSON           FLAT_TREE  [] uses positional (column) layout to eliminate use of names
cbor-col/jackson/databind          ZERO_KNOWLEDGE  JSON           FLAT_TREE  [] uses positional (column) layout 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
cbor/jackson/manual                MANUAL_OPT      BIN_CROSSLANG  FLAT_TREE  []                                                          
smile/jackson/manual               MANUAL_OPT      BINARY         FLAT_TREE  []                                                          
thrift-compact                     CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  []                                                          
msgpack/manual                     MANUAL_OPT      BIN_CROSSLANG  FLAT_TREE  [] uses positional (column) layout (instead of Maps std impl uses) to eliminate use of names
protobuf/jackson+afterburner/databind CLASSES_KNOWN   BINARY         FLAT_TREE  []                                                          
cbor/jackson+afterburner/databind  ZERO_KNOWLEDGE  BINARY         FLAT_TREE  [] uses bytecode generation to reduce overhead              
thrift                             CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  []                                                          
fst-flat                           ZERO_KNOWLEDGE  BINARY         FLAT_TREE  [] fst default, but unshared mode                           
smile/jackson+afterburner/databind ZERO_KNOWLEDGE  BINARY         FLAT_TREE  [] uses bytecode generation to reduce overhead              
json-col/jackson/databind          ZERO_KNOWLEDGE  JSON           FLAT_TREE  [] uses positional (column) layout to eliminate use of names
json/jackson/manual                MANUAL_OPT      JSON           FLAT_TREE  []                                                          
jboss-marshalling-river-ct-manual  MANUAL_OPT      BINARY         FULL_GRAPH [] full graph preregistered classes, manual optimization    
smile/jackson/databind             ZERO_KNOWLEDGE  BINARY         FLAT_TREE  []                                                          
avro-generic-manual                MANUAL_OPT      BIN_CROSSLANG  FLAT_TREE  [VERSIONING_BACKWARD_COMPATIBLE, VERSIONING_FORWARD_COMPATIBLE, VERSIONING_MISMATCH_DETECTION] 
avro-fastserde-generic-manual      MANUAL_OPT      BIN_CROSSLANG  FLAT_TREE  [VERSIONING_BACKWARD_COMPATIBLE, VERSIONING_FORWARD_COMPATIBLE, VERSIONING_MISMATCH_DETECTION] 
flatbuffers                        CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  []                                                          
json/fastjson/databind             ZERO_KNOWLEDGE  JSON           FLAT_TREE  []                                                          
cbor/jackson/databind              ZERO_KNOWLEDGE  BIN_CROSSLANG  FLAT_TREE  []                                                          
protobuf/jackson/databind          CLASSES_KNOWN   BINARY         FLAT_TREE  []                                                          
avro-specific-manual               MANUAL_OPT      BIN_CROSSLANG  FLAT_TREE  [VERSIONING_BACKWARD_COMPATIBLE, VERSIONING_FORWARD_COMPATIBLE, VERSIONING_MISMATCH_DETECTION] 
avro-generic                       CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  [VERSIONING_BACKWARD_COMPATIBLE, VERSIONING_FORWARD_COMPATIBLE, VERSIONING_MISMATCH_DETECTION] 
json/jackson+afterburner/databind  ZERO_KNOWLEDGE  BINARY         FLAT_TREE  [] uses bytecode generation to reduce overhead              
avro-fastserde-generic             CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  [VERSIONING_BACKWARD_COMPATIBLE, VERSIONING_FORWARD_COMPATIBLE, VERSIONING_MISMATCH_DETECTION] 
json/protostuff-manual             MANUAL_OPT      JSON           FLAT_TREE  [] json + manual                                            
fst                                ZERO_KNOWLEDGE  BINARY         FULL_GRAPH [] default: JDK serialization drop-in-replacement mode      
avro-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] 
avro-fastserde-specific            CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  [VERSIONING_BACKWARD_COMPATIBLE, VERSIONING_FORWARD_COMPATIBLE, VERSIONING_MISMATCH_DETECTION] 
capnproto                          CLASSES_KNOWN   BIN_CROSSLANG  FLAT_TREE  []                                                          
json/jackson/databind              ZERO_KNOWLEDGE  JSON           FLAT_TREE  []                                                          
json/jackson-jr/databind           ZERO_KNOWLEDGE  JSON           FLAT_TREE  []                                                          
kryo-registered                    CLASSES_KNOWN   BINARY         FULL_GRAPH [] class registration, references (typical usage)           
json/protostuff-runtime            ZERO_KNOWLEDGE  JSON           FLAT_TREE  [] json + reflection                                        
kryo-auto                          ZERO_KNOWLEDGE  BINARY         FULL_GRAPH [] no class registration, references                        
jboss-marshalling-river-ct         CLASSES_KNOWN   BINARY         FULL_GRAPH [] full graph with preregistered classes                    
xml/aalto-manual                   MANUAL_OPT      XML            UNKNOWN    []                                                          
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  []                                                          
hessian                            ZERO_KNOWLEDGE  BIN_CROSSLANG  FULL_GRAPH []                                                          
json/json-smart/manual-tree        MANUAL_OPT      JSON           FLAT_TREE  []                                                          
json/gson/databind                 ZERO_KNOWLEDGE  JSON           FLAT_TREE  []                                                          
json/gson/manual-tree              MANUAL_OPT      JSON           FLAT_TREE  []                                                          
xml/fastinfo-manual                MANUAL_OPT      XML            UNKNOWN    []                                                          
xml/javolution/manual              MANUAL_OPT      XML            FLAT_TREE  []                                                          
jboss-marshalling-river            ZERO_KNOWLEDGE  BINARY         FULL_GRAPH [] full graph zero knowledge                                
xml/xstream+c-aalto                MANUAL_OPT      XML            FLAT_TREE  []                                                          
xml/xstream+c-fastinfo             MANUAL_OPT      XML            FLAT_TREE  []                                                          
jboss-serialization                ZERO_KNOWLEDGE  BINARY         FULL_GRAPH []                                                          
bson/mongodb/manual                MANUAL_OPT      BIN_CROSSLANG  FLAT_TREE  []                                                          
xml/xstream+c-woodstox             MANUAL_OPT      XML            FLAT_TREE  []                                                          
json/org.json/manual-tree          MANUAL_OPT      JSON           FLAT_TREE  []                                                          
json/json.simple/manual            MANUAL_OPT      JSON           FLAT_TREE  []                                                          
json/svenson/databind              MANUAL_OPT      JSON           FLAT_TREE  []                                                          
jboss-marshalling-serial           ZERO_KNOWLEDGE  BINARY         FULL_GRAPH []                                                          
xml/xstream+c                      ZERO_KNOWLEDGE  XML            FLAT_TREE  []                                                          
json/javax-stream/glassfish        MANUAL_OPT      JSON           FLAT_TREE  []                                                          
xml/exi-manual                     ZERO_KNOWLEDGE  XML            UNKNOWN    []                                                          
json/javax-tree/glassfish          ZERO_KNOWLEDGE  JSON           FLAT_TREE  []                                                          
java-built-in                      ZERO_KNOWLEDGE  BINARY         FLAT_TREE  []                                                          
java-built-in-serializer           ZERO_KNOWLEDGE  BINARY         FULL_GRAPH []                                                          
json/jsonij/manual-jpath           MANUAL_OPT      JSON           FLAT_TREE  []                                                          
stephenerialization                ZERO_KNOWLEDGE  BINARY         FULL_GRAPH [] null                                                     
json/flexjson/databind             ZERO_KNOWLEDGE  JSON           FULL_GRAPH []                                                          
json/protobuf                      CLASSES_KNOWN   JSON           FLAT_TREE  []                                                          
json/argo/manual-tree              MANUAL_OPT      JSON           FLAT_TREE  []                                                          
json/json-lib/databind             ZERO_KNOWLEDGE  JSON           FLAT_TREE  []